From: Kevin Rodgers <ihs_4664@yahoo.com>
Subject: Re: Wait for compile to finish
Date: Thu, 20 Oct 2005 10:31:42 -0600 [thread overview]
Message-ID: <dj8gpi$mlm$1@sea.gmane.org> (raw)
In-Reply-To: <Hw8DDpgmJd$s@ludens>
Toto wrote:
> I would like to have a function, which runs the program, that belongs to
> the buffer i'm editing or compile it first if it isn't done already.
> To make it more clear. Say, i'm editing helloworld.c and i call this
> function, it should execute helloworld.exe (yes, i'm on windows). If
> there is no hello.exe in the current directory (or it is older than the
> source file) emacs should compile it first and run it afterwards.
>
> For this purpose I have come up with a funcion similar to the one below.
>
> But: Compile is asynchronous, so this funcion tries to execute the exe
> file before the compilation finishes (and the exe is created).
>
> My question is:
> Is there a synchronous version of compile? Or how can i determine that
> compile has finished (and get the result of the compilation - success
> or failure)?
>
> The (pseudo) code is as follows:
>
> (defun run-compiled-program (params)
> "Runs the program with the same name as the buffer."
> (interactive "sRun with parameter(s): ")
> (setq exe (concat
> (file-name-sans-extension (buffer-file-name))
> ".exe"
> )
> )
> (if (not (file-newer-than-file-p exe (buffer-file-name)))
> (compile-this-buffer) ;; using the compile funcion
> )
> (shell-command
> (concat exe " " params)
> )
> )
> ;; GNU Emacs 22.0.50.1 (i386-mingw-nt5.1.2600) of 2005-03-08 on S8472
Use the make utility to compile your program before you run it:
(defun run-buffer-program (&optional args)
"Compile the visited file into a program and run it with command line
ARGS."
(interactive "sArgs: ")
(let ((program (file-name-sans-extension
(file-name-nondirectory buffer-file-name))))
;; What is the list of systems that require the .exe extension?
(when (memq system-type '(dos))
(setq program (concat program ".exe")))
(shell-command (format "make %s && ./%s %s" program program args))))
--
Kevin Rodgers
next prev parent reply other threads:[~2005-10-20 16:31 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-20 13:07 Wait for compile to finish Toto
2005-10-20 16:31 ` Kevin Rodgers [this message]
2005-10-20 19:40 ` Eli Zaretskii
2005-10-21 15:43 ` William Xu
2005-10-21 21:18 ` Kevin Ryde
2005-10-22 16:07 ` Vagn Johansen
2005-10-24 10:22 ` Toto
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='dj8gpi$mlm$1@sea.gmane.org' \
--to=ihs_4664@yahoo.com \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).