Unfortunately enough emacsclient just quits if there is no active emacs server.
I need a process that tries to run emacsclient: if there is no active server, it runs emacs.Moreover, emacsclient has a -n switch that makes it return ASAP, so the terminal is available for more commands.emacs has not such a switch, but that behaviour is the one I want.
So I decided to write a small ruby script that does just this:
- Tries to run emacsclient with the -n option.
- If it succeeds, we are done. Otherwise we run Emacs doing some standard posix process manipulation in order to return to the shell as soon as possible.
This is the script:
#!/usr/bin/env ruby fork do exec('emacsclient', '-n', *$*) end Process.wait if $?.exitstatus != 0 fork do Process.setsid Signal.trap('HUP', 'SIG_IGN') exec('emacs', *$*) if fork.nil? exit!(0) end Process.wait end
No comments:
Post a Comment