My GNU/Emacs configuration
Emacs Lisp Shell

README.org

My GNU/Emacs configuration folder

General Structure

In my home directory, there is this folder named $HOME/.emacs.d. It contains a symbolic link init.el which points to the host-specific init-HOSTNAME.el file.

My init-HOSTNAME.el files are very minimal. Each one holds custom-set-variables which I want to keep separate on each host. And then it includes the host-independent main.el configuration file.

Please take a look at my .gitignore file that contains some things I did not add to this git repository for a variety of reasons but are necessary for my configuration. Most important here is the directory contrib which holds a number of external packages:

  • Currently (2016-04-24), this directory holds:

In Case You Want to Use My Configuration

In short: don’t.

Not because I don’t like you to have my configuration. It is not easy to accomplish because I left out some parts like the contrib directory as explained above. Some of my settings are host-specific and/or depend on path variables or external tools.

You should only adopt Elisp code you need and understand to avoid Emacs Bankruptcy.

Therefore: please feel free to look up certain tricks and functions and add it to your configuration.

Best Navigation Experience

My main.el file is quite large. I would not be able to navigate it myself without Orgstruct minor mode. If you don’t know it yet: it’s a minor mode which uses Org-mode elements such as headings in - this case - Elisp comment lines.

If you open my main.el file with org-struct-mode installed, go to the next line that starts with ;;* General settings and apply C-u C-u TAB. The huge mass of Elisp code gets folded nicely according to headings within Elisp comments.

On every line that begins with ;;* you can press TAB or other basic Org-mode shortcuts.

Host-Names

Some settings as specific for certain platforms or host names. The host names mentioned here are:

  • sherri
    • Debian GNU/Linux 8 (jessie)
    • my main working horse at home
  • X260
    • Debian GNU/Linux 8 (jessie)
    • my main working horse on the road
  • grmlvrs/kva
    • Debian GNU/Linux 7 (wheezy)
      • (therefore) not as “capable” as sherri/X260
  • atgrz*
    • Windows 7 Pro with native Windows GNU/Emacs 64bit and Babun
      • (therefore) not as “capable” as gary
  • outdated:
    • gary
      • Debian GNU/Linux 7 (wheezy)
      • predecessor of X260
    • blanche
      • OS X 10.5
      • pimped with MacPorts
      • predecessor of sherri

With 2016-04, I switched from using my-system-is-HOSTNAME to my-system-type-is-OPERATINGSYSTEM instead for most cases. This lowers the effort of using Emacs on many computers.

Emacs 24

As with 2014-01-19, I totally migrated to GNU/Emacs 24 on all of my systems.

I therefore migrated my config to use the package management provided by Emacs 24. As a result, there are much less entries in the folder “contrib” and there is a new folder called “elpa”. I did not include elpa-packages in this git repository.

On 2016-04-24, I had following packages installed via elpa:

anzu-20160404.2218
async-20160223.146
avy-20160402.1049
avy-menu-20160126.425
bind-key-20160227.48
char-menu-20160203.2215
company-20160325.1650
counsel-20160411.713
dash-20160306.1222
diminish-20151215.915
edit-at-point-20150716.624
elpy-20160131.118
eno-20160110.234
find-file-in-project-20160404.2330
git-commit-20160412.130
helm-20160413.2223
helm-core-20160415.2250
highlight-indentation-20150307.208
highlight-symbol-20160102.1209
ht-20150830.1115
magit-20160412.128
magit-popup-20160408.156
markdown-mode-20160409.650
neotree-20160306.730
nyan-mode-20151017.2235
org-30000101
org-bullets-20140918.1137
ox-pandoc-20151222.1553
ox-reveal-20160224.1819
popup-20160409.2133
pyvenv-20160108.28
restclient-20160407.146
rich-minority-20151201.400
smart-mode-line-20160306.1103
smeargle-20151013.2242
spray-20160304.1420
swiper-20160412.130
synonyms-20160328.654
undo-tree-20140509.522
use-package-20160403.1129
with-editor-20160408.201
yafolding-20141202.2056
yasnippet-20160410.833

I also tested Emacs prelude for a couple of days. However, I was not very happy about it due to performance issues, unwanted behavior, and the feeling of losing control.

Please note that org-30000101 is a manually created and installed pseudo-package to prevent the installation of Org-mode via package manager. I am using the Org Maint version from git directly (within my contrib directory).

Useful References

License

The code provided here is licensed under a GPL v3 license: see license.txt for details. Some smaller parts from other authors but included in my configuration might have a different license. Please check the source - it’s included in the comments.