Emacs Configuration
Jessica Hamrick
jhamrick@berkeley.edu
Tested on versions:
- GNU Emacs 24.3.1 (x86_64-apple-darwin13.1.0, NS apple-appkit-1265.19) of 2014-04-06
- GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.4.2) of 2014-02-22
Installing
Clone this repository, and then run the bootstrap.sh
script. This
will copy all of the necessary files to ~/.emacs
and
~/.emacs.d
. Note that if these files exist for you already, this
will overwrite those files.
Once you have run the bootstrap script, start Emacs (make sure you are
connected to the internet when you do this for the first time). It
will install el-get
and all of
the other plugins listed in the next section. This initial
installation may take a while, so be patient.
Dependencies
For some of the plugins to work, you will need to have some external dependencies installed, such as Python, IPython, git, etc. If the installation gives you an error, it might mean you are missing a required dependency that el-get doesn't install.
Emacs plugins
This configuration installs several plugins using
el-get
. These plugins are
specified in .emacs.d/settings/el-get-settings.el
, and are also
listed below:
auctex
-- LaTeX pluginein
-- IPython notebook pluginjedi
-- general Python supportpydoc-info
-- Python documentationauto-complete
-- auto completionpopup
-- visual popup (e.g., for auto completion)color-theme-solarized
-- the solarized color thememagit
-- git pluginmarkdown-mode
-- support for Markdown filesmatlab-mode
-- support Matlab filesnxhtml
(MuMaMo)scss-mode
-- support for SCSS filesnyan-mode
-- silly mode that renders a nyan cat to display how far you are through a filehelm
-- completion and selection narrowing frameworkhelm-descbinds
-- describe keybindings using helmyaml-mode
-- support YAML files
Gotchas
Here are some issues I or others have run into when installing this configuration.
Version control systems
To install all the plugins above, you need to have several different version control systems installed, including hg
, git
, bzr
, and cvs
.
Trouble building AUCTeX
If you get the following error:
error: el-get: ./autogen.sh el-get could not build auctex [./autogen.sh]
There are a few possible causes. Try these steps:
- Make sure you have
automake
andtexlive-full
installed (if you are on Ubuntu) or MacTeX (if you are on Mac). - Try running emacs from the command line (it could be an issue with not finding the right path).
- If that doesn't work, run emacs from the command line with the
--debug-init
flag. This will give you more information about the error, and possibly point you towards the solution.
No such file or directory: pycheckers
pycheckers
is a little script to check that your Python code
conforms to the
PEP8 style guide using
the pep8 and
pyflakes Python
packages.
If you do not want this functionality, you can comment out the block
of code in python-settings.el
that starts with "pyflakes flymake
integration". Otherwise, read on.
- In your
~/.bashrc
, add$HOME/bin
to your$PATH
environment variable like so:
export PATH="$HOME/bin:$PATH"
- Create a file in
~/bin/pycheckers
with the following contents:
#!/bin/bash
pyflakes "$1"
pep8 --ignore=E261 --repeat "$1"
true
-
Make it executable with
chmod +x ~/bin/pycheckers
. -
Make sure you have
pep8
andpyflakes
installed (runpip install pep8 pyflakes
). -
Now it should work! If not, please submit a bug report and let me know.
Tramp is timing out
If you get the error tramp ssh: connect to host c port 22: Operation timed out
and you are running OS X Mavericks with Emacs installed using Homebrew, then this is probably due to the Mavericks upgrade. Try reinstalling Emacs through Homebrew and remove the folder ~/.emacs.d/el-get
(note: this will remove all your el-get plugins, and they will need to be reinstalled).
Auto-complete disappears from python mode
The python mode needs to have the jedi
, epc
, and pylint
packages added to your Python installation. Run this command:
pip install jedi epc pylint
Hint provided by Andrea Crotti's EuroPython 2013 Conference talk, Emacs and shell as your best friends, and the minimal Emacs configuration used in the talk.