> Are there any functions that can launch external programs (not just
> command line programs, but also GUI programs) from Emacs? I know that
> I can access a shell, and call a program from there, but then emacs is
> not operable until I close the program. Prepending the command with
> `nohup' is useful, but for some reason it does not work as expected
> with all programs, including emacs.
You should read: http://catb.org/esr/writings/taoup/html/
Pay particular attention to the chapter 11.
> I would prefer another way of
> doing this - using a specific built-in of emacs lisp if one exists.
> Any help would be greatly appreciated. Thanks.
(defun run-any-program (program &rest arguments)
(let ((output (get-buffer-create (format "*%s output*" (gensym program)))))
(shell-command (format "xterm -T \"Controlling terminal for %s\" -e %s %s &"
(shell-quote-argument program)
(shell-quote-argument program)
(with-output-to-string
(dolist (arg arguments)
(princ (shell-quote-argument arg))
(princ " "))))
output output)))
(run-any-program "xclock")
(run-any-program "vim")
(run-any-program "emacs" "-q" "-nw")
(run-any-program "emacs" "-q")
--
__Pascal Bourguignon__
This is OS dependent. There are some examples on EmacsWiki for MS Windows.
Tramp does it. Tested with Emacs 23.0.90:
(with-temp-buffer
(cd "/ssh:remotehost:")
(add-to-list 'tramp-remote-process-environment
(concat "DISPLAY=" (getenv "DISPLAY"))
(start-file-process "xterm" nil "xterm"))
Best regards, Michael.
if you OS support command line to open the gui app, then you can just
use emacs's shell-command. e.g. in mac os x, to open TextEdit, do
(shell-command "open -a TextEdit")
Q: How to open the current directory in Desktop?
You can define a function and assign it a keyboard shortcut, so that
by pressing a button, emacs will switch you to your operating
systems's file manager (aka Desktop) with the current directory open.
On the Mac OS X, this is done with the “/usr/bin/open” command. So,
press “Alt+! open .” to have Finder open the current directory. You
can define the function this way:
(defun open-with-finder ()
"Open the current file in Mac's Finder."
(interactive)
(shell-command "open ."))
(global-set-key (kbd "<f2>") 'open-with-finder)
For a documentation of OS X's “open” command, see “man open”.
On Microsoft Windows, you can use “explorer.exe” instead of the “open”
command.
the above is from
• Emacs and HTML Tips
http://xahlee.org/emacs/emacs_html.html
see also:
• Elisp Lesson: Execute/Compile Current File
http://xahlee.org/emacs/elisp_run_current_file.html
Xah
∑ http://xahlee.org/
☄
> Are there any functions that can launch external programs (not just
> command line programs, but also GUI programs) from Emacs?
From a shell within Emacs, call the command followed by '&'. You can
also do this from with the 'shell-command' function, which is invoked
with M-!. So, to call a pdf viewer, for example, you could do:
M-! xpdf & <return>
Cheers,
Tyler
> I know that
> I can access a shell, and call a program from there, but then emacs is
> not operable until I close the program. Prepending the command with
> `nohup' is useful, but for some reason it does not work as expected
> with all programs, including emacs. I would prefer another way of
> doing this - using a specific built-in of emacs lisp if one exists.
> Any help would be greatly appreciated. Thanks.
--
Philosophy of science is about as useful to scientists as ornithology is
to birds. --Richard Feynman
You could try eev-mode [1].
[1] http://www.emacswiki.org/emacs/EevMode
Xavier
--
http://www.gnu.org
http://www.april.org
http://www.lolica.org
isn't 'call-process' what you are looking for?
Maybe search Google Groups for 'dired-do-shell-command-in-background'.
Greetings
Josef
>>>>> "dstein64" == dstein64 <DSte...@gmail.com> writes:
dstein64> Are there any functions that can launch external
dstein64> programs (not just command line programs, but also GUI
dstein64> programs) from Emacs? I know that I can access a shell,
dstein64> and call a program from there, but then emacs is not
dstein64> operable until I close the program. Prepending the
dstein64> command with `nohup' is useful, but for some reason it
dstein64> does not work as expected with all programs, including
dstein64> emacs. I would prefer another way of doing this - using
dstein64> a specific built-in of emacs lisp if one exists. Any
dstein64> help would be greatly appreciated. Thanks.