This page is a journal of my experiments with emacs. In November of 2008, I decided to use emacs for all my text editing purposes, after long been convinced of Emacs’s power and utility in editing programs and texts. At this time, I consider myself to be an adequate user of vim, emacs and TextMate. My goal is to teach myself emacs in an auto-didactic manner and make a note of the questions I had and the solutions I found for them. I hope this serves as a reminder for myself on a later date.
Note: All the instructions on this page, unless otherwise noted, are tested on Mac OS X systems and Aquamacs.
Python + Emacs
$ pip install ropemode pep8 pyflakes
pymacs in emacs:
M-x package-install yasnippet-bundle
Emacs Client on Mac OS X
Here is a nice AppleScript created by Brian McCallister that provides proper emacsclient behaviour. Update: this script launches a “terminal” window, which is an annoyance.
Go to Shortcut
End of the buffer
End of the line
Beginning of the line
Do what Shortcut
Customizing emacs is done through editing
~/.emacs file. Though, if
you are using
emacs-starter-kit you will be putting files under
Adding a new key binding.
You can bind any operation that you can do in emacs to a set of key
strokes. For example: the emacs-git integration – magit can be
invoked by typing
M-x magit-status. But, this gets tiring after a
while, so you may want to assign a short cut. Short cuts in Emacs start
with ‘C-c’. You have to decide what comes after
C-c. In this case, I
Add the following lines to your .emacs file:
;; C-c ms Magit-status (global-set-key (kbd "C-c ms") 'magit-status)
The first line is the comment (a good practice) and the second line
tells emacs to call
magit-status when you press
After editing a custom function in .emacs file how do I reload it?
Select the block of code that you want to reload and hit
(evaluate). This can also be achieved by positioning the cursor (point
in emacs lingo) after the last closing parentheses of the function and
Editing ConTEXt files with Emacs
Install ConTEXt. Install AUCTEX using
port (on mac).
$ sudo port install auctex
Active AucTEX by putting this
(load "auctex.el" nil t t) in
Install YASnippet to get
auto-completion on emacs. To use YASnippet, type in the trigger word and
press TAB. For example, typing
def and pressing TAB will give you
def name(): """ """
The next tab press allows you replace the default function name with your own, with subsequent tabs taking you to the parameter list, docstring and finally the body of the function
What programming font?
This page has a nice collection of free programming fonts optimized for editing code over long durations of code. The rule of thumb to remember while selecting a programming font is: it should be a fixed width font. This is especially true in languages like “Python”:Python where indentation is essential in understanding the code flow.
I currently use Monaco, a font that is available on Mac OS X set to size 10.
Emacs Muse Notes
Instead of editing the muse-latex.el and muse-book.el files, just use customize on the muse-latex-header and muse-book-latex-header variables. Upgrades to new versions of muse will be much smoother.
Emacs + Git integration
Main entry point
M-x magit-status (bound to C-c ms). Go to the magit
*magit: PRJNAME* and press tab on the line containing the
filenames. The modified text will expand underneath. Press
g in the magit buffer to refresh git status. or execute
M-x magit-status from one of the repository files.
Removing trailing white spaces
The emacs manual
defines tells us that setting buffer variable
t will show trailing white spaces.
(setq show-trailing-whitespace 't)
Paste the above line into the current emacs buffer and evaluate the
statement by pressing
C-x C-e. Delete the white spaces with
Check to see if your emacs configuration is correct.
emacs -q --eval '(condition-case err (progn (load "~/.emacs") (kill-emacs 0)) (error (kill-emacs 1)))'
Shut down emacs gracefully from the command line
emacsclient -n -e '(kill-emacs)'
How to ? Command
Create a Directory from within emacs
C-x u or
See Running emacs as daemon.
Setting up SLIME
Movie showing how to setup slime, swank, sbcl and emacs
check out slime and put it somewhere convenient, ie.,
Put the following lines in
(require :asdf) (push "/Users/pradeep/elisp/slime/" asdf:*central-registry*)
Load swank in sbcl:
$ sbcl (asdf:oos 'asdf:load-op :swank) (setf swank:*use-dedicated-output-stream* nil) (setf swank:*communication-style* :fd-handler) (swank:create-server :dont-close t)
What’s new in emacs 24?
git clone git://git.savannah.gnu.org/emacs.git cd emacs sudo apt-get install libxpm-dev sudo apt-get install libgif-dev sudo apt-get install libtiff-dev ./configure make sudo make install
My initial impression of
emacs24 is that it feels much faster compared
to the stock
emacs-snapshot available on
- Deft mode – similar to notational velocity for note taking.
- Skewer Mode and How to use Skewer Mode
- Command log
- Using the in built help system.
C-h i d m TOPIC RETto pull up info page on TOPIC. eg:
C-h i d m AUCTeX RETfor AUCTeX
- Emacs Mini Manual (PART 1) - THE BASICS
- Learning GNU Emacs, Third Edition
- GNU Emacs manual. Free online reference.
- GNU Emacs LISP reference. Free online reference.
- Learn emacs lisp in 15 minutes.
- The emacs’ “lack of resources” complaint
- A collection of elisp discussions on stackoverflow
- A nice blog of elisp snippets is http://whattheemacsd.com/
- Emacs Redux
- A CEO’s Guide to Emacs | Fugue
- Magnars’ emacs.d has nice seperation of various aspects. A sep. directory for custom funcs. A flat organisation of files etc.,
- Dennis’ Emacs configuration file written in org-babel style. Informative.
- nordlow/elis – lot of D related emacs stuff.
- buildfunthings / emacs-config · GitLab via youtube videon CIDER + emacs setup.
- Centaur Emacs
- Ivy User Manual
- howardabrams/demo-it: An Emacs package for running demonstrations and presentations from within Emacs.
- emacs-reveal – Generates reveal.js presentations with audio explanations as OER from simple texts in Org Mode with GNU Emacs. Also see emacs-reveal-howto.
- lewang/command-log-mode: log commands to buffer
Information well / emacs people
- Youtube tutorial series – Emacs ABC by Elvind Fonn.
- Using Emacs Series | C’est la Z 
- Full list of Tips, Tutorials and Articles - Mastering Emacs
- Endless parantheses blog.
- Fabrice Niessen’s github – Org themes, orgmk, emacs-leuven-theme refcards etc.,
- Sacha Chua and her Emacs configuration file annotated in org-mode; source file.
- EmacsCast | EmacsCast
Is it possible to show the keybindings in the modeline?
Use case: I have configured ‘Fn’ keys for mode specific actions, but do not remember them, or I want emacs to prompt me to use them.
Starting point: http://www.emacswiki.org/emacs/ModeLineConfiguration
M-x new-framecreate a new Emacs window associated with the current Emacs instance. Great for organising, or when running Emacs on a multi monitor setup!
- 2016/6/7 – installed emacs using this: Getting started with emacs for scala programming | immutables
- 2017/11/13 – rediscovered the use of ec script to launch
emacsclient from the console. This is a much quicker way to launch
into editing text than hunting on the desktop to make a quick note.
TODO: launch the emacs window in full screen mode. increase the
default font size. The typing feels laggy. Need to fix that.
nbscript to open the
log/YEAR.mdfile with the cursor at the last line of the file.
- 2017/11/14 – have to integrate this “multi deft” elisp into my workflow - https://gist.github.com/btbytes/bdf69ee3b478d142a324237eb4282946
- 2018/03/14 – gemacs a
goditfork with more features.