Emacs als Entwicklungsumgebung
Der Emacs ist wohl in jeder GNU/Linux-Distribution enthalten und meist vorkonfiguriert. Neben dem eigentlichen Editor enthält das Paket eine Reihe von Erweiterungen (in Emacs-LISP geschrieben), mit deren Hilfe sich Emacs hervorragend als Entwicklungsumgebung für die C/C++ Programmierung eignet.Im folgenden sind die wohl wichtigsten Tastaturbefehle und Arbeitsweisen zusammengefaßt, die man für diesen Verwendungszweck braucht.
M-x steht dabei für ALT-x bzw. für ESC-x, C-x für Control-x
Definitionen und Vorbereitung
Ein Puffer ist ein Speicherbereich von Emacs, der Dateiinhalte, Ausgaben etc. aufnimmt. Jeder Puffer hat einen Namen, der Name eines Dateipuffers ist gleich dem Dateinamen. Es können zwei Puffer gleichzeitig angezeigt werden. Besäße der Emacs eine GUI Oberfläche, würde man wohl von einem Fenster sprechen.Der Ringpuffer nimmt als Minipuffer beim Löschen von Blöcken diese auf und kopiert den Inhalt auf Wunsch. Der Start des Compilers unter Emacs setzt eine Makefile vorraus, da der Compiler über make -k gestartet wird. Eine minimale Makefile für die Datei demo.cpp ist
demo: (TAB)c++ -Wall -o a.out demo.cpp
wobei (TAB) für ein Tabulatorzeichen steht. Mit einem kleinen bash-Skript lassen sich Mini-Makefiles auch automatisch erzeugen:
Datei cppemacs (mit chmod ausführbar setzen)
cflags="-Wall" echo $1:> Makefile echo -e "\tc++ $cflags -o a.out $1.cpp">> Makefile emacs $1.cpp
Aufruf mit cppemacs Sourcedatei OHNE die Extension .cpp
Allgemeine Befehle
Emacs beenden C-x C-c Aktuellen Puffer speichern C-x C-s Datei in neuen Puffer laden C-x C-f Datei in aktuellen Puffer einfügen C-x i Zeilenanfang C-a Zeilenende C-e
Puffer
Puffer löschen C-x k Zum anderen angezeigten Puffer wechseln C-x o Aktueller Puffer auf volle Größe C-x 1 Namen aller Puffer anzeigen C-x C-b Zum Puffer name wechseln C-x b name
Blockbefehle
Blockanfang C-LEERTASTE Blockende Cursorposition Block in Ringpuffer löschen C-w Block in Ringpuffer kopieren M-w Block aus Ringpuffer an Cursorpos. einfügen C-y
Der c-mode und c++-mode
Diese Modi führen während der Eingabe des Quellcodes bereits einen einfachen Syntaxcheck durch. Klammerebenen werden überwacht und die zu einer schließenden Klammer gehörende offene Klammer angezeigt und Klammerverwechselungen bemerkt. Logische Blöcke werden erkannt und Zeilen mit der TAB Taste automatisch eingerückt. Dabei werden {} Blöcke, if, while, for, switch, case etc erkannt.
Laden des c- Modus M-x c-mode Laden des c++-Modus M-x c++-mode Zeile unter Cursor einrücken TAB-Taste
Compilieren unter Emacs
Den als Vorgabe erscheinenden Befehl make -k kann man mit der Eingabetaste bestätigen (siehe oben). Die Aus- gaben des Compilers werden in einen eigenen Puffer ge- schrieben.Compilerlauf starten M-x compile In den Compile- Puffer wechseln C-x o Cursor auf eine Fehlermeldung plazieren Pfeiltasten Sourcezeile zur Fehlermeldung anzeigen C-c C-c Nächste Fehlermeldung M-n Vorhergehende Fehlermeldung M-p Im Sourcepuffer: Nächster Fehler C-x ` (Shift-"Taste-neben-Backspace"!)
GNU Debugger unter Emacs
Damit der GNU-Debugger richtig arbeitet, muß das Programm mit den Optionen -g -O0 ("Oh null") übersetzt werden.
Für den gdb wird ein eigener Puffer geöffnet, in dem die gdb- Kommandos benutzt werden können.
GNU Debugger und Programm a.out starten M-x gdb a.out Breakpoint an einer Stelle im Source setzen C-x LEERTASTE Breakpoint löschen C-x C-a C-d