From: thierry.volpiatto@gmail.com
To: help-gnu-emacs@gnu.org
Subject: Re: How to defun body in procedural manner
Date: Mon, 20 Apr 2009 12:43:13 +0200 [thread overview]
Message-ID: <87myab4ncu.fsf@tux.homenetwork> (raw)
In-Reply-To: 3d87cfcb-eb0c-4dbf-b8cb-da5010b1d5b0@z16g2000prd.googlegroups.com
Hi Kiwon,
Kiwon Um <um.kiwon@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:
(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
next prev parent reply other threads:[~2009-04-20 10:43 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 [this message]
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
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=87myab4ncu.fsf@tux.homenetwork \
--to=thierry.volpiatto@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.