• Stars
    star
    177
  • Rank 215,985 (Top 5 %)
  • Language
    Emacs Lisp
  • License
    Other
  • Created almost 12 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

My GNU/Emacs configuration

My GNU Emacs Configuration

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 2020-10-15, I am using following hosts with Emacs:

Operating SystemEmacs version
Debian GNU/Linux 10 (buster)GNU Emacs 27.0.50
Xubuntu GNU/Linux 20.04 LTSGNU Emacs 26.3
Xubuntu GNU/Linux 20.04 LTSGNU Emacs 28.0.50

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.

With my current employer, I’m able to use GNU/Linux also for business. Therefore, I don’t have to use Windows at the moment. Thankfully. Corresponding OS X specific settings are for archiving purposes.

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 its Org mode headings.

Literate Configuration: My Tangling Approach

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 tangling of this Emacs configuration works.

Despite the size of my configuration, tangling takes only a fraction of a second and automatically happens on two occasions:

  1. When I manually save the config.org file.
  2. When Emacs starts and notices that config.org is newer than config.el.

This way, there is no unnecessary tangling process.

This method is great in terms of speed and effort. However, I can’t follow any advanced literate programming aspect such as re-using a snippet multiple times or changing the order of the snippets.

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 …
[...]

Update 2022-06-14: If I would follow a more standard way of tangling the el file from the org file, I’d probably take a look at https://github.com/yilkalargaw/org-auto-tangle which is also features on this short video demo: https://www.youtube.com/watch?v=D3FzMPZm7vY (13min).

In Case You Want to Use My Configuration

In short: don’t.

Not because I don’t like you to have my configuration. The reason is furthermore that it is not easy to accomplish the setup process. This is 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.

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 are the directories elpa and contrib. The latter one holds a number of external packages:

echo "Last update of this list: $(date)"
echo "------------------------------------------------------"
ls -1 contrib | grep -v 2del | grep -v tar
Last update of this list: Do 15 Okt 2020 13:07:24 CEST
------------------------------------------------------
auto-dictionary-mode
browse-kill-ring.el
command-log-mode
cygwin-mount.el
date2name.el
define-word
dired-details.el
dired-hacks
dired-plus
dired-recent.el
dired-show-readme
edit-server.el
elpygen
emacs-emojify
emacs-git-gutter
emacs-which-key
ews-orgmode
explain-pause-mode
eyebrowse
filetags.el
goto-chg.el
helm-org-contacts
hideshow-orgmode
macrostep
message-outlook.el
move-text
no-littering
ob-restclient.el
orgaggregate
org.el
org-fancy-priorities
org-import-calendar.el
org-linker
org-linker-edna
org-mind-map
org-mind-map_OLD
org-mode
org-notmuch.el
org-protocol-capture-html
org-super-agenda
org-wunderlist
orly
outlookedit.el
outshine
ov
ox-clip
ox-pandoc
ox-rst
ox-slack
pdf-mode
pdf-view-restore
plantuml-mode
pylookup
raml-mode
s.el
setup-cygwin.el
slime-volleyball
sphinx-doc.el
sunrise-commander
synonyms
vcard-mode
wc.el

Some of those packages were added only for testing purpose. Most of them are added to my configuration permanently.

Comments on ELPA, prelude, org-30000101

After migrating most of the package management to use-package, there are much less entries in the folder contrib and there is a new folder called elpa. Of course, I did not include elpa-packages in this git repository.

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.

More Repositories

1

Memacs

What did I do on February 14th 2007? Visualize your (digital) life in Org-mode
Python
998
star
2

lazyblorg

Blogging with Org-mode for very lazy people
Python
376
star
3

filetags

Management of simple tags within file names
Python
199
star
4

LaTeX-KOMA-template

Generic template for midsize and larger documents based on KOMA script classes.
TeX
196
star
5

org-mode-workshop

Workshop for Org-mode with focus on todo-, project- and workflow-management
161
star
6

github-orgmode-tests

This is a test project where you can explore how github interprets Org-mode files
146
star
7

date2name

Handling time-stamps and date-stamps in file names
Python
69
star
8

appendfilename

Intelligent appending text to file names, considering file extensions and file tags
Python
45
star
9

guess-filename.py

Derive a file name according to old file name cues and/or PDF file content
Python
39
star
10

extract_pdf_annotations_to_orgmode

Extracting RepliGo PDF annotations to a Org-mode format snippet (unmaintained!)
Shell
28
star
11

orgmode-ACM-template

Using new Emacs Org-mode LaTeX exporter to generate LaTeX/PDF files that meet the requirements of ACM (unmaintained!)
28
star
12

orgformat

Utility library for providing functions to generate and modify Org mode syntax elements like links, time-stamps, or date-stamps.
Python
27
star
13

tagstore

a research software; a fun way of storing files & folders on your local disk drive; tagging
Python
24
star
14

org-contacts2vcard

Converting Emacs Org-mode org-contacts contact information to VCard format suitable for importing to Android 4.4
Python
22
star
15

move2archive

Managing event-related files in a folder hierarchy like "<ARCHIVE>/2013/2013-05-17 Event name/"
Python
22
star
16

org-du

Visualizing Emacs Org-mode heading lines using du and xdu
Python
21
star
17

exchange2org

Connects to your Exchange server and extracts data in Org-mode format
Python
19
star
18

integratethis

Integrate programs or scripts into common tools like Windows Explorer context menu
Python
17
star
19

orgmode-iKNOW2012

Demonstrating the generation of an ACM paper using Emacs Org-mode and LaTeX export
Emacs Lisp
15
star
20

jira2org-story.py

Extract Jira Issues and Generate Org-mode Headings
Python
14
star
21

nixos-config

NixOS + flakes + home-manager with xfce, zsh, tmux, ...
Nix
13
star
22

twitter-json_to_orgmode

Converts the Twitter export files (JSON format) into an Emacs Org-mode file
Python
13
star
23

Student-Supervision-Process

How to organize supervision of the development of (LaTeX-) documents of students
12
star
24

title-capitalization.el

Proper English title capitalization of a marked region
Emacs Lisp
11
star
25

LaTeX-KOMA-VWA

Vorwissenschaftliche Arbeit (VWA) mit pdflatex/KOMA professionell gestalten
10
star
26

appendorgheading

Append a new Org mode heading to an existing Org mode file
Python
8
star
27

muttfilter.py

Per-contact FROM-email addresses for users of mutt and org-contacts.el
Python
7
star
28

convert_iCal_to_free-busy-only

Filter out things from an iCalendar file to publish free/busy information only
Python
7
star
29

filetagslib

Utility library for providing functions related to the filetags file name convention: https://github.com/novoid/filetags
Python
7
star
30

fetchphotos

A Python script to fetch data from a digital camera, rotating image files, renaming according to my file name convention.
Python
7
star
31

vkl

vkl - a better "ls"-experience
Python
6
star
32

recode-h107d-videos

Recode Hubsan x4 H107d video recordings in order to save space and correct the aspect ratio
Shell
6
star
33

orgmode-balance

Script that gives feedback on how you are doing in your Org-mode todos
Shell
6
star
34

getdigicamdata.sh

Fetching data from my digital camera, rotating image files, renaming according to my file name convention.
Shell
5
star
35

2011-01-tagstore-formal-experiment

Collected public data and tools concerning a formal experiment conducted with tagstore
Shell
4
star
36

postprocess_Org-mode_iCal_export

Adding reminder alarms (defined as Org-mode tags) to your iCalendar export file
Python
4
star
37

2011-04-tagstore-formal-experiment

Collected public data and tools concerning a formal experiment conducted with tagstore
Python
3
star
38

gettvthek

Downloads WMV files from ORF-TVthek
Shell
3
star
39

GenerateSeatingplan.py

Uses output-CSV files of CAMPUSonline containing students attending an exam and generates a randomized seating plan
Python
2
star
40

set_desktop_background_according_to_season

Sets the desktop backgrounds of OS X 10.5 according to photographs which are from a similar season
Python
2
star
41

LaTeX-CV-template

A bi-langual LaTeX template for CVs
TeX
2
star
42

org-mode-demodata

An Org mode file that contains data that should mimic normal day-to-day data
2
star
43

vkSenseCam

Download-script for Microsoft SenseCam or Vicon Revue v1
Python
1
star
44

orgdepend_to_orgedna

A Python script to convert Emacs Org mode files using org-depend to org-edna (dependency management)
Python
1
star
45

mediathekview_change_downloads_to_http

Modify pending MediathekView download URLs from https to http
Python
1
star
46

convert-OS-X-file-labels-to-filetags

This is a hack which searches and converts OS X 10.5 file labels to filetags
Shell
1
star
47

mailhours

Visualize the times of the day of emails sent by a certain person (maildir)
Shell
1
star