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
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.
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...
Jörg Wunsch schrieb: > Damit schaltet \C-x$ um, ob nur die Zeilen dargestellt werden, die Auch schick! Das werde ich mir wohl klauen :-)
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.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.