summaryrefslogtreecommitdiffstats
path: root/content/post/using-emacsclient-on-macos
diff options
context:
space:
mode:
Diffstat (limited to 'content/post/using-emacsclient-on-macos')
-rw-r--r--content/post/using-emacsclient-on-macos/index.org55
1 files changed, 55 insertions, 0 deletions
diff --git a/content/post/using-emacsclient-on-macos/index.org b/content/post/using-emacsclient-on-macos/index.org
new file mode 100644
index 0000000..cc8019d
--- /dev/null
+++ b/content/post/using-emacsclient-on-macos/index.org
@@ -0,0 +1,55 @@
+#+TITLE: Using Emacsclient on Macos
+#+DATE: 2020-06-18T17:10:15-04:00
+#+DRAFT: false
+#+DESCRIPTION:
+#+TAGS[]: macos emacs
+#+KEYWORDS[]:
+#+SLUG:
+#+SUMMARY:
+
+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.
+
+# more
+
+The two primary ways of getting Emacs onto your Mac are by either
+downloading it from [[https://emacsformacosx.com/][Emacs For MacOS X]] or by installing it through
+[[https://brew.sh/][homebrew]] using =brew cask install emacs=. I prefer the homebrew method
+as it automatically adds =emacs= and =emacsclient= to your =$PATH=.
+
+Using it from the command line is a breeze. I have this alias in my
+=.bashrc=
+
+#+BEGIN_SRC shell
+alias em="emacsclient -t -a ''"
+#+END_SRC
+
+This way I can type =em <filename>= to edit a file. =-t= tells
+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 way
+to start =emacsclient=. The way I've worked around that is by using
+[[https://github.com/deseven/icanhazshortcut][iCanHazShortcut]], which lets you bind arbitrary shell commands to
+keyboard shortcuts.
+
+To add a new shortcut, 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.
+
+To launch =emacsclient=, I have a shortcut bound to
+@@html:<kbd>⌃</kbd> + <kbd>⇧</kbd> + <kbd>⌘</kbd> + <kbd>E</kbd>@@
+which runs
+#+BEGIN_SRC shell
+emacsclient -c -n -a ''
+#+END_SRC
+
+The =-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.