all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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 16:18:29 +0200	[thread overview]
Message-ID: <87vdoz4de2.fsf@tux.homenetwork> (raw)
In-Reply-To: f119ef6c-148f-47d0-8823-1ff5167e4295@w31g2000prd.googlegroups.com

Kiwon Um <um.kiwon@gmail.com> writes:

> 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.

compile is asynchronous, and it will warn you when finish.
Have a look at C-h f compile RET.

Unless you have to run another command after the compile process, there
is no need to catch the end of the process, just wait it warn you in the
mode-line or the compile buffer.

> 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
>
>

-- 
A + Thierry Volpiatto
Location: Saint-Cyr-Sur-Mer - France





  reply	other threads:[~2009-04-20 14:18 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
2009-04-20 14:18             ` thierry.volpiatto [this message]
     [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=87vdoz4de2.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.