Emacs is an amazing editor, but it can be a little slow to start
sometimes. That's why
emacsclient lets you run Emacs as a daemon and
connect to it as a client, negating the startup time and letting you
jump directly into editing.
The two primary ways of getting Emacs onto your Mac are by either
downloading it from Emacs For MacOS X or by installing it through
brew cask install emacs. I prefer the homebrew method
as it automatically adds
emacsclient to your
Using it from the command line is a breeze. I have this alias in my
alias em="emacsclient -t -a ''"
This way I can type
em <filename> to edit a file.
emacsclient to start in terminal mode, and
-a '' tell it to start the
Emacs daemon process if it isn't already running.
Getting the GUI version to run without first opening the command line
is a little trickier. Homebrew provides an app for
emacs, but no
emacsclient. The way I've worked around that is by
using iCanHazShortcut, which lets you bind arbitrary shell commands to
keyboard shortcuts. You can download the app from the release area on
To add a new shortcut, download and install iCanHazShortcut, then open
the app and click the
Shortcuts tab at the top. Then click the plus
in the bottom right corner, click inside the
Shortcut field, press
the desired shortcut keys, give it an action name, and a command.
emacsclient, I have a shortcut bound to
⌃ + ⇧ + ⌘ + E
emacsclient -c -n -a ''
-c flag tells
emacsclient to open a GUI window instead of in
terminal mode. The
-n flag tells the command to return once the
window is opened, instead of waiting for the client to close. Finally,
like before the
-a '' flag tells
emacsclient to start the Emacs
daemon if it isn't already running.
Now all I have to do is press ⌃ + ⇧ + ⌘ + E and a new Emacs window pops up with no startup delay!
It's also possible to create an "application" shortcut for
emacsclient using Automator.
Create a new automation as an Application with the Run Shell Script step. Then add the following as the contents of the script.
/opt/homebrew/bin/emacsclient \ --no-wait \ --quiet \ --suppress-output \ --create-frame \ "$@"
/opt/homebrew/bin/emacsclient with the path to your
emacsclient if it's located elsewhere.
Pass input to
Finally place the Automator application in your
You should now be able to open Emacsclient through spotlight and associate it with filetypes.