Emacs als Tagebuch

Ich verwende nun seit einiger Zeit Emacs als Tagebuchprogramm. Mit ihm komme ich zum ersten Mal wirklich zum schreiben.

Der Aufruf bei mir ist schlicht

tagebuch

Den Grund, dass es für mich mit Emacs funktioniert, sehe ich darin, dass er mir genau das bietet, was ich brauche – und dabei verdammt schnell ist. Was ich brauche:

  • Verschlüsselung ohne Aufwand (epa-file integriert transparentes GnuPG, also wirklich sichere Verschlüsselung).

  • Sofort schreiben können (ist direkt bei der Zeile, bei der ich aufgehört habe).

  • Schnell. Ich will nicht warten müssen, bevor ich tippen kann (geht über eine eigene Initfile, die Codevervollständigung und so rauslässt).

  • Datum zum Eintrag (geht dank miniscript über „M-x datum“).

  • (Auch) Auf der (Text-)Konsole. Wenn ich am Systembasteln bin, will ich trotzdem Schreiben können.

  • Optional Versionsverwaltung (nur für backups; wenn es ein Mercurial repository gibt, speichere ich einen Schnappschuss via C-x v v).

Und wenn ich mal was wo anders nutzen will, kann ich es einfach via emacs rüberkopieren, trotz verschlüsselter Datei. Und es gibt keine temporären Dateien, die ich entschlüsselt rumliegen haben muss.

Und es passt sich der Farbgebung meiner Konsole an :)

Einrichtung

(benötigt emacs Version 23.1+)

Meine Einrichtung sieht so aus:

.babrc (alias):

alias tagebuch='/usr/bin/emacs \
-nw --no-init-file --no-site-file \
--load ~/.emacs-init-tagebuch \
~/pfad/zum/Tagebuch.txt.gpg'

Dazu habe ich die Datei ~/.emacs-init-tagebuch.

Um deinen eigenen Emacs so zu nutzen (unter GNU/Linux),

  • kopiere einfach das Alias an deine ~/.bashrc,
  • lade die ~/.emacs-init-tagebuch herunter und
  • kopiere markdown-mode.el nach ~/.emacs.d/libs/markdown-mode/markdown-mode.el.

Das Alias erklärt

alias tagebuch='/usr/bin/emacs \
-nw --no-init-file --no-site-file \
--load ~/.emacs-init-tagebuch \
~/pfad/zum/Tagebuch.txt.gpg'
  • -nw --no-init-file und --no-site file sagen: In der Konsole anzeigen und kein Standarddateien laden → deutlich schneller (Emacs kann unglaublich viel, aber einige Sachen machen es langsam; z.B. die vollständige Programmierumgebung).

  • --load ~/.emacs-init-tagebuch: Fügt genau die Fähigkeiten hinzu, die ich brauche, keine mehr, keine weniger. Details weiter unten.

  • Der Pfad ist klar. Die ~/.emacs-init-tagebuch richtet Emacs so ein, dass es jede Datei, die auf .gpg endet, transparent entschlüsselt (heißt, ich muss nur das Passwort eingeben, dann kann ich arbeiten, als wäre es nur eine normale Textdatei). Außerdem wird in Dateien mit Endung .txt.gpg Markdown-Syntax hervorgehoben und ist so schöner zu lesen und schreiben (daran habe ich mich schlicht gewöhnt und will es auch in meinem Tagebuch).

Die ~/.emacs-init-tagebuch erklärt

Die init-Datei aktiviert einige Features, die ich brauche:

Sie bindet mir den Markdown Mode ein, so dass ich Syntax-Highlighting habe.

(setq load-path (cons "~/.emacs.d/libs/markdown-mode" load-path))
(autoload 'markdown-mode "markdown-mode.el"
   "Major mode for editing Markdown files" t)

Dann aktiviert sie markdown für verschlüsselte Textdateien:

(setq auto-mode-alist
      (cons '("\\.txt\\.gpg" . markdown-mode)
    auto-mode-alist))

Dazu liefert sie schöne Zeilenumbrüche (am Wortende):

(global-visual-line-mode)

und aktiviert transparente Ver- und Entschlüsselung:

(require 'epa-file)
(epa-file-enable)

Außerdem habe ich mir eine kleine Lisp-Funktion geschrieben, die mir das Datum als Titel (zweite Ebene, H2 in HTML) in Markdown-Syntax ausgibt. Sie wird einfach mit M-x datum aufgerufen (im Code unten wird der Befehl durch das Schlüsselwort (interactive) aktiviert). Und ja, ich könnte hier alles einfügen, das ich in Lisp generieren kann. Also so gut wie alles :) (echte Programmiersprache)

(defun datum ()
  "print the current time in iso-format"
  (interactive)
  (insert (format-time-string "%Y-%m-%d %H:%M:%S") "\n-------------------\n\n"))

Abschließend legt sie fest, dass sich emacs die Zeilennummer merken soll (ich will beim nächsten Öffnen des Tagebuches wieder in der Zeile sein, in der ich aufgehört habe), dass ich keine Startinfo haben und Dateien in UTF-8 kodieren will (für Umlaute und Zeug wie ι∫→√).

(custom-set-variables
 '(current-language-environment "UTF-8")
 '(default-input-method "rfc1345")
 '(inhibit-startup-screen t)
 '(save-place t nil (saveplace)))

Damit habe ich ein Tagebuch-Programm, das alles kann, was ich brauche. Und wenn ich noch mehr brauche, kann ich das ohne Probleme später einfügen.

Viel Spaß beim Tagebuch-Schreiben mit Emacs!

AnhangGröße
emacs-init-tagebuch1 KB
Inhalt abgleichen
Willkommen im Weltenwald!
((λ()'Dr.ArneBab))



Beliebte Inhalte

sn.1w6.org news