dotemacs icon indicating copy to clipboard operation
dotemacs copied to clipboard

My GNU/Emacs configuration

fgallina's Emacs configuration.

  • Info

    • Author: Fabián Ezequiel Gallina
    • Contact: fabian at anue dot biz
    • My Blog: http://www.from-the-cloud.com
  • Introduction

    This is just my Emacs configuration. It auto-installs all packages using mostly elpa and some from el-get.

    For a glance of all installed packages check all `user-package' declarations.

  • Requirements

These are the necessary packages for all enabled plugins.

  • Emacs 24.x
  • Bazaar: for package downloads.
  • CVS: for package downloads.
  • Git: for package downloads and magit.
  • Mercurial: for package downloads.
  • SVN: for package downloads.
  • leiningen 2.x: for nrepl and friends.
  • python (2.6 or 2.7): for building jedi.

See "Disabling packages" section for a way to avoid some requirements.

** Arch GNU/Linux Installation of all requirements in Arch is quite simple.

#+BEGIN_SRC sh sudo pacman -S bzr cvs git mercurial subversion emacs python2 #+END_SRC

** Ubuntu

#+BEGIN_SRC sh sudo apt-get install bzr cvs git mercurial subversion emacs python #+END_SRC

  • Installation

When you meet all requirements, everything should install automatically after you launch Emacs. If some package fail because of a network connection failure or anything, restarting Emacs will continue installation from that point.

There are 3 non-required important files you might want to check out:

  • ~/.emacs.d/secrets.el: This is a file I'm using to store my IRC password and other sensible stuff.
  • ~/.emacs.d/pre-startup.el: This file might contain any lisp that's intended to be run before all packages are loaded and initialized.
  • ~/.emacs.d/post-startup.el: This file might contain any lisp that's intended to be run after all packages are loaded and initialized.

If you are using jedi, you need to install a python environment for it to use. You can do so like this:

#+BEGIN_SRC sh cd ~/.emacs.d/elpa/jedi-* make requirements PYTHON=python2 # or the python interpreter of your preference. #+END_SRC

If you plan to use the clojure related packages you need to install leiningen. Generally you want to do this manually by adding the executable in your =$PATH=. See http://leiningen.org/ for instructions.

  • Disabling packages

If you don't want to install some packages you can use the pre-startup.el file to modify the =my:disabled-packages= variable.

#+BEGIN_SRC emacs-lisp ;;; pre-startup.el ;; Avoid installing/loading some packages. (setq my:disabled-packages '(ace-jump-mode jedi clojure-mode)) #+END_SRC

If you plan byte-compiling the init file (which is recommended) via the =byte-compile-file= or =emacs-lisp-byte-compile= command (i.e. not in batch mode), be sure to eval =my:disabled-packages= new value and then eval the whole init.el buffer, so the =user-package= macro is expanded properly for newly enabled/disabled packages.

  • Confusing stuff

While this dotemacs is maintained with the idea that it could be reused by anyone, it's still my dotemacs and it's configured the way I like it. This means that there may be some stuff you could consider weird, so here is a non extensive listing of those and the ways you can prevent them.

** God mode

God mode is awesome, it brings the modal bindings paradigm to Emacs without trying to change the bindings you've learned during all this time. The thing is that god-mode can be confusing, especially if you haven't set it up yourself and are using this config out of the box. You can disable it by adding god-mode to your my:disabled-packages in the pre-startup.el file.

** Smartparens

If you feel some bindings are doing weird things when working with parens or sexps, please check the smartparens configuration. If you are still not convinced about smartparens just add the following to You can disable it by adding smartparens to your my:disabled-packages in the pre-startup.el file.

** Errors when copying or pasting stuff

I use Emacs on the terminal for the most part, and I have integrated it with the xsel utility to make it populate my X system clipboard when sending doing copy/cut/paste.

If you are experiencing errors with this: either install xsel, change the integration to use whatever utility you'd like or just disable the feature completely and let Emacs behave by default by adding this code in your post-startup.el file:

#+BEGIN_SRC emacs-lisp (setq interprogram-cut-function nil interprogram-paste-function nil) #+END_SRC

** Menu bar, scroll bar and tool bar

If you are new to Emacs you will probably want to have these things activated again, to restore then add the following in your post-startup.el:

#+BEGIN_SRC emacs-lisp (menu-bar-mode 1) (scroll-bar-mode 1) (tool-bar-mode 1) #+END_SRC

  • Bug Reports

    If you find a configuration bug please report it in the github tracker. Any package bugs must be reported in their upstream bug tracker.

  • License

    See each package located at =~/.emacs.d/el-get/= and =~/.emacs.d/elpa/= for their licenses. The =~/.emacs.d/init.el= file is on the public domain.