EMACS: Konfiguration und Spielereien

OP #1820771
Lesenswert?

Nachdem außer mir noch n Leute mit dem EMACS unterwegs
sind (mit n>=1), werfe ich mal meine Konfigurationsdateien
in die Runde.
Vielleicht kann ja jemand Teile davon brauchen.
Es steht auch relativ viel Kommentar für Einsteiger drin, um den EMACS 
etwas zu verstehen.

Komplett sind die beiden nur zusammen zu verwenden:
- .emacs ist die eigentliche Konfiguration und lädt .abbrev nach
- in .abbrev sind Abkürzungen enthalten, die automatisch expandiert 
werden (je nach Modus) und dabei LISP-Funktionen verwenden, die wiederum 
in .emacs definiert sind.

Die .emacs: http://mfgkw.dyndns.org/.emacs
Die .abbrev: http://mfgkw.dyndns.org/.abbrev
Moderator Persönliche Seite #1820813
Lesenswert?

Wie funktionieren die Abkürzungen?  Du schreibst bspw. "fprints",
und danach steht dann komplett der ersetzte Text da?

Ich hätte hier noch ein Stück in meinem .emacs, das ich beisteuern
kann:
1
(defvar toggle-selective-display-status nil)
2

3
(defun toggle-selective-display ()
4
  "Toggles selective display."
5
  (interactive nil)
6
  (cond (toggle-selective-display-status
7
   (setq toggle-selective-display-status nil)
8
   (set-selective-display nil))
9
  (t
10
   (setq toggle-selective-display-status t)
11
   (set-selective-display 1))))
12

13
(global-set-key "\C-x$" 'toggle-selective-display)

Damit schaltet \C-x$ um, ob nur die Zeilen dargestellt werden, die
in der ersten Spalte beginnen (also in C-Code Beginn und Ende einer
Funktion) oder nicht.  In der Standardvariante muss man sonst
ständig mit einem Präfixargument für \C-x$ herumopern.  Ist zwar
noch nicht so schick, wie jede Funktion einzeln "aufklappen" zu
können, hat mir aber bislang genügt: wenn ich eine bestimmte
Funktion in der Datei suche (ohne den Namen genau zu kennen), dann
schalte ich die selektive Anzeige ein, setze den Cursor dahin, und
schalte sie wieder aus.
OP #1820863
Lesenswert?

Jörg Wunsch schrieb:
> Wie funktionieren die Abkürzungen?  Du schreibst bspw. "fprints",
> und danach steht dann komplett der ersetzte Text da?

Im Prinzip ja.

Erstens muß jeweils der Mode Abbrev an sein.
Das ist bei mir in C, C++, LaTeX etc. immer der Fall (wird in
meiner .emacs z.B. in "(defun kw-ergaenzungen-zu-c-c++-mode()..."
mit "setq abbrev-mode t" gemacht).

Wenn dann in der .abbrev für den jeweiligen Modus (C etc.)
eine Abkürzung wie diese definiert ist:
1
(define-abbrev-table 'c-mode-abbrev-table '(
2
 ...
3
    ("fprints" "fprintf( stderr, \"\\n\" )" abbrev-korrekt-printf 0)
4
 ...
dann tippe ich im Text fprints und danach z.B. ein Semikolon oder ein 
Leerzeichen. Dadurch wird dann der Ersetzungstext aus der Definition 
eingefügt (hier: fprintf( stderr, "\n" )) und danach das, was ich noch 
getippt hatte (also Semikolon oder Leerzeichen).
Außerdem wird eine angegebene LISP-Funktion ausgeführt, hier 
abbrev-korrekt-printf. Wenn man nichts ausgeführt haben will, nimmt 
dafür den Wert nil.
Die Funktion abbrev-korrekt-printf wiederum ist in der .emacs definiert.
Sie könnte z.B. den Cursor von der aktuellen Stelle (hinter dem 
eingefügten Text) nach vorne versetzen, damit man das eintippen kann, 
was das printf ausgeben soll.

Etwas aufwendiger sind bei mir die Ersetzungen für Sachen wie for oder 
class, da spart man dann beim Schreiben richtig Arbeit.
Oder switch9...
OP #1820878
Lesenswert?

PS zu den Abkürzungen:
Manchmal möchte man eine Abkürzung ja auch nicht expandiert haben.
Z.B. habe ich main so definiert, daß ein komplettes kleines leeres 
C-Programm (oder C++) eingefügt wird.
Das macht natürlich nur in einer anfangs leeren Datei Sinn.
Möchte ich jetzt main schreiben, ohne zu expandieren, dann leitet man 
das folgende Zeichen (z.B. ein Leerzeichen) mit C-q ein. Dadurch wird 
nichts expandiert.
Moderator Persönliche Seite #1821015
Lesenswert?

Man könnte doch auch die Funktion selbst das dann expandieren lassen,
und die macht das nur, wenn die Datei leer ist.  Sowas ähnliches
kenne ich von html-helper-mode.el: wenn man den auf einer leeren
Datei startet, dann legt er ein Grundgerüst an für die Dokumenten-
struktur.

Mal sehen, wenn ich mal Muße habe, mir das mit den Abkürzungen
anzugucken.
OP #1821061
Lesenswert?

Klar kann man das.
Aber mir reicht es so, schließlich weiß ich, wann ich es expandiert 
haben will.

Ich erhebe keinerlei Anspruch darauf, daß da drin alles toll und optimal 
ist.
Es ist mehr als Anregung gedacht, so wie ich auch überall interessante 
Sachen zusammen gesammelt habe, die mir das Leben erleichtern.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren