all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Kiwon Um <um.kiwon@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: How to defun body in procedural manner
Date: Mon, 20 Apr 2009 06:28:44 -0700 (PDT)	[thread overview]
Message-ID: <f119ef6c-148f-47d0-8823-1ff5167e4295@w31g2000prd.googlegroups.com> (raw)
In-Reply-To: mailman.5725.1240224622.31690.help-gnu-emacs@gnu.org

On Apr 20, 7:43 pm, thierry.volpia...@gmail.com wrote:
> Hi Kiwon,
>
>
>
> Kiwon Um <um.ki...@gmail.com> writes:
> > On Apr 17, 9:51 pm, thierry.volpia...@gmail.com wrote:
> >> Kiwon Um <um.ki...@gmail.com> writes:
> >> > On Apr 17, 2:52 pm, thierry.volpia...@gmail.com wrote:
> >> >> Hi, i don't use cvs, but you should have a look at what return:
> >> >> `cvs-sentinel'.
> >> >> and:
> >> >> (when (cvs-sentinel ==> return_what_you_want)
> >> >>   (shell-command "your_command"))
>
> >> > I've tried to understand what the cvs-sentinel function does, but I
> >> > didn't. Would you write a concrete example code for me, please?
>
> >> Yes, as i told you i am not a cvs user, so...
> >> it seem cvs-sentinel return only a message :-(
> >> So try that, i just write it and it worked to update emacs-w3m and compile
> >> it:
>
> >> (defun update-cvs-dir-and-compile ()
> >>   (interactive)
> >>   (let ((dir default-directory))
> >>     (cvs-update dir nil)
> >>     (while (not (equal cvs-mode-line-process "exit"))
> >>       (sit-for 1))
> >>     (shell-command "make")))
>
> >> Modify for your need (make args ...etc..)
>
> > Then, how can I check the end of the compile process as similar manner
> > as above? I tried (compile-mode-line-process "exit"), but it didn't
> > work. And I tried as follows:
> > (while (not (equal (process-status  "compilation") 'exit)) (sit-for
> > 1))
> > This didn't work, either.
> > Any advice?
>
> `shell-command' is a synchronous process, so you have just to wait it
> finish.May be just add a message to tell you that the compile process is
> started:
>

Ah! I missed my point. Actually, I've changed shell-command to compile
so that
(compile "make -C ...some_path") not (shell-command ...).
The function 'compile' doesn't seem to be synchronous, huh? So I'm
wondering how to check it.
Thanks for your kind replies :)

> (defun update-cvs-dir-and-compile ()
>   "Cvs update current dir and compile it."
>   (interactive)
>   (let ((dir default-directory))
>     (cvs-update dir nil)
>     (while (not (equal cvs-mode-line-process "exit"))
>       (sit-for 1))
>     (message "Wait compiling %s..." dir)
>     (shell-command "make")))
>
> But if you want to run the compile process asynchronous,
> you have to use `start-process' instead of `shell-command' and set a
> sentinel on this process like this:
>
> (progn
>   (start-process "my-compil" nil "sleep"
>                "12")
>   (set-process-sentinel (get-process "my-compil")
>                         #'(lambda (process event)
>                             (message "Process:%s State:%s" process event))))
>
> Replace "sleep" with "make" and "12" with make args ;-)
>
> NOTE:If you have more than one arg to the make command, it's may be
> convenient to use apply on start-process.
>
>
>
> >> >> Kiwon Um <um.ki...@gmail.com> writes:
> >> >> > Hello. I wrote a function as follows:
>
> >> >> > (defun my-update-package (path)
> >> >> >   "Update the package in path from CVS"
> >> >> >   (cvs-update path nil)
> >> >> >   (shell-command (concat "touch `find " path " -name Makefile`"))
> >> >> >   (compile (concat "make -C " path)))
>
> >> >> > When the function is called, it seems to execute the shell-command and
> >> >> > compile lines before the finishing cvs-update line. How can I make
> >> >> > this functional execution procedurally? Help me, please.
>
> >> >> > Thanks.
>
> >> >> --
> >> >> A + Thierry Volpiatto
> >> >> Location: Saint-Cyr-Sur-Mer - France
>
> >> --
> >> A + Thierry Volpiatto
> >> Location: Saint-Cyr-Sur-Mer - France
>
> --
> A + Thierry Volpiatto
> Location: Saint-Cyr-Sur-Mer - France



  parent reply	other threads:[~2009-04-20 13:28 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-17  1:28 How to defun body in procedural manner Kiwon Um
2009-04-17  4:37 ` Barry Margolin
2009-04-17  5:29   ` Kiwon Um
2009-04-17  5:52 ` thierry.volpiatto
     [not found] ` <mailman.5512.1239947972.31690.help-gnu-emacs@gnu.org>
2009-04-17  9:52   ` Kiwon Um
2009-04-17 12:51     ` thierry.volpiatto
     [not found]     ` <mailman.5523.1239973116.31690.help-gnu-emacs@gnu.org>
2009-04-18  6:58       ` Kiwon Um
2009-04-20  7:44       ` Kiwon Um
2009-04-20 10:43         ` thierry.volpiatto
2009-04-21  0:57           ` Kevin Rodgers
     [not found]         ` <mailman.5725.1240224622.31690.help-gnu-emacs@gnu.org>
2009-04-20 13:28           ` Kiwon Um [this message]
2009-04-20 14:18             ` thierry.volpiatto
     [not found]             ` <mailman.5730.1240237545.31690.help-gnu-emacs@gnu.org>
2009-04-21  1:46               ` Kiwon Um

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f119ef6c-148f-47d0-8823-1ff5167e4295@w31g2000prd.googlegroups.com \
    --to=um.kiwon@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.