Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Short form: I want to run the Mac OSX version of Emacs found on http://emacsformacosx.com/ as a daemon, with graphical and text clients connecting to it as-needed.

In detail, here is the workflow I want:

  1. On login, run /Applications/Emacs.app/Contents/MacOS/Emacs --daemon to start emacs as a daemon. I already know how to do this.

  2. When running emacs from a local termnal, I want Either one of these:

    1. If I run emacs from a local command prompt, open a new frame with the selected file.
    2. If #1 is not possible, at least if I run emacsclient from the command line, open a new frame with the selected file.
  3. When running emacs from a remote terminal, I would like a text-mode emacs to start, connected to the daemon process.

  4. If I run Emacs.app re-use the emacs daemon that is running in the background instead of starting a new instance and open a new window on it.

So far, I am able to accomplish only #1 and #2.2 above, but those are the easy parts. #3 and #4 are the things that are most needed in order to make this work. Does anyone know how to accomplish these things?

share|improve this question
1  
For others who find this question: you can also usr M-x server-start to put an emacs started without --daemon into server mode. Good questions, BTW. – dmckee Oct 2 '09 at 17:47
1  
... or put (server-start) in your .emacs so that it starts when you launch emacsa – Doug Harris Oct 3 '09 at 12:24
    
Can someone explain how to do # 1? Would you just make it a login item? – Charlie Flowers Sep 21 '12 at 5:35
1  
@Charlie Flowers emacswiki.org/emacs/EmacsAsDaemon#toc5 – Colin Jun 9 '14 at 0:32
up vote 13 down vote accepted
  1. You've got this handled
  2. Yes, you'll want to use emacsclient. To get a new frame, add the -c option. I have an alias to make it quicker and to tell emacsclient not to wait for emacs server to return:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. I'm not sure about this. I start Emacs once and always load new files either within emacs or using my em alias.

Update:

Check out this tip documenting how to use Platypus to create an app wrapper around emacsclient. You could then use "Open With..." to launch using your new app wrapper.

share|improve this answer
    
Yeah, that's the real trick, isn't it? Because what I want is for all of the OS open calls to use the running emacs, whether I'm operating within a terminal or a GUI context. I'll keep looking. – Chris R Oct 4 '09 at 15:11
    
Found a ref to Platypus and updated my answer. – Doug Harris Oct 5 '09 at 3:29
4  
Is this solved? How did you get Emacs.app to connect to the daemon? – milkypostman Mar 29 '11 at 14:57
    
I also want to know the answer to question 4 :) – jkp Sep 4 '11 at 13:56

Yes, here is an pretty comprehensive explain about how to do this nicely. I tried several methods to get it working nicely, but no better than what they described here.

https://gist.github.com/304964

Cheers!

share|improve this answer
    
Thank you, this is great. – incandescentman Jul 20 '15 at 5:23

For 4. put this in your .emacs:

(setq ns-pop-up-frames nil)

The solution of creating a Mac .app (with Platypus) does not work because Mac won't open the same application twice.

share|improve this answer
    
If you use the "open -n" you can open a new instance of an application even if it's already running. Try this in the terminal: open -n -a Emacs.app somefile.txt – Jörgen Lundberg Apr 4 '13 at 9:35
    
Yeah, but it opens a new window, which I don't want – juanmirocks Apr 4 '13 at 14:01
    
Maybe I'm misunderstanding what you want, but if you don't want it to create a new window but use an existing one, skip the '-n'. – Jörgen Lundberg Apr 4 '13 at 17:54
    
Yes, I don't want to create a new window. open -a Emacs.app is certainly what I do, but to be opened in the same instance/daemon background of an existing emacs, I need to write (setq ns-pop-up-frames nil) in my .emacs as I wrote in my answer. Otherwise it creates a new window anyway, with or without -n. – juanmirocks Apr 5 '13 at 6:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .