franticnerd / dot-emacs

My GNU/Emacs configuration

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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
  • Flychecking
  • 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 SystemEmacs version
Debian GNU/Linux 9 (stretch)Emacs 25.1.1
Xubuntu GNU/Linux 17.04 LTSGNU Emacs 27.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.18.9) of 2018-08-24
Windows 10GNU 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.

General Structure

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 config.org. My 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 *Messages* like:

[...]
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:
    • cygwin-mount.el
    • ews-orgmode/
    • goto-chg.el
    • message-outlook.el
    • move-text/
    • ob-restclient.el/
    • orgaggregate/
    • org.el
    • org-import-calendar.el
    • org-mode/
    • org-protocol-capture-html/
    • outlookedit.el
    • outshine/
    • pdf-mode/
    • pylookup/
    • raml-mode/
    • setup-cygwin.el
    • sunrise-commander/
    • vcard-mode/
    • wc.el

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. 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 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.

About

My GNU/Emacs configuration

License:Other


Languages

Language:Emacs Lisp 84.5%Language:Shell 15.5%