My GNU/Emacs configuration folder
What To Expect
I am using:
- Org mode (my main Emacs focus)
- Python (as a hobby programmer, not a professional)
- Cygwin/Babun on Windows
- Spell checking
- Templating: Yasnippet/yankpad
- File Management: dired
- Typesetting: LaTeX (not active any more)
As of 2018-08-29, I am using three different hosts with Emacs:
|Operating System||Emacs version|
|Debian GNU/Linux 9 (stretch)||Emacs 25.1.1|
|Xubuntu GNU/Linux 17.04 LTS||GNU Emacs 27.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.18.9) of 2018-08-24|
|Windows 10||GNU Emacs 26.0.90 (build 1, x86_64-w64-mingw32) of 2017-11-30|
All are running the same configuration. Some settings are only used on specific platforms though.
I once was using OS X on my personal computer but this is history. Thankfully. Corresponding OS X specific settings are for archiving purposes.
As of 2017-05, I moved my Emacs configuration format from OrgStruct mode to Org-mode babel + tangle. Originally, I found this process on http://www.holgerschurig.de/en/emacs-init-tangle/ However, I adapted its code and write additional features. I also simplified the file structure, threw away old stuff and added tons of comments for my configuration.
Now, my Emacs configuration is in a file named
init.el got some nifty Elisp code that converts/tangles (only) the
Elisp blocks into the
config.el. This generated file is interpreted
by my GNU/Emacs on startup.
Please do read my blog article on how this Emacs configuration works.
I also added some output functionality to the tangling method. This
results in helpful lines in
[...] config • my-frame-is-landscape() my-frame-is-portrait() … The frame is in landscape mode config • Default split direction according to frame aspect ratio … config • no-littering … config • Logging of mode versions … Wrote /home/vk/.emacs.d/var/log/floyd.txt Added to /home/vk/.emacs.d/var/log/floyd.txt config • my-load-local-el() … config • Server mode … config • my-system-is-FOOBAR … config • System-specific paths … config • Cygwin Paths (Windows) … config • my-binary-found(binaryname) … config • my-binary-not-found-list and my-eval-if-binary-or-warn() … config • Test queries … »»» I could not locate the PATH-binary for: chrome config • System-specific browse-url-browser … »»» I could not locate the PATH-binary for: google-chrome config • Styling … config • Themes … [...]
Stuff Which Is Not Contained in the Git Repository
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 (2017-05-26), 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
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. But don’t use my repository as is and expect it to run on your host.
Best Navigation Experience
For navigating through my
config.org file, please do open it in
Emacs so that you are able to collapse and expand headings.
Migration to 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
$HOME/.emacs.d/lisp/seems to be quite common as directory path for installing external packages
- However, I do prefer “contrib” instead of “lisp” because:
- my own config (outside of
$HOME/.emacs.d/lisp/) is LISP as well
- “lisp” does not contain the notion of “contributed from other people/projects”
- my own config (outside of
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.