5 <H3>Emacs als Entwicklungsumgebung</H3>
7 Der Emacs ist wohl in jeder GNU/Linux-Distribution enthalten und meist
8 vorkonfiguriert. Neben dem eigentlichen Editor enthält das Paket
9 eine Reihe von Erweiterungen (in Emacs-LISP geschrieben), mit deren
10 Hilfe sich Emacs hervorragend als Entwicklungsumgebung für die C/C++
11 Programmierung eignet.<P>
13 Im folgenden sind die wohl wichtigsten Tastaturbefehle und Arbeitsweisen
14 zusammengefaßt, die man für diesen Verwendungszweck braucht.<P>
17 M-x steht dabei für ALT-x bzw. für ESC-x, C-x für Control-x
20 <H4>Definitionen und Vorbereitung</H4>
22 Ein <EM>Puffer</EM> ist ein Speicherbereich von Emacs, der Dateiinhalte, Ausgaben
23 etc. aufnimmt. Jeder Puffer hat einen Namen, der Name eines Dateipuffers ist
24 gleich dem Dateinamen. Es können zwei Puffer gleichzeitig angezeigt werden.
25 Besäße der Emacs eine GUI Oberfläche, würde man wohl von einem Fenster
28 Der <EM>Ringpuffer</EM> nimmt als Minipuffer beim Löschen von Blöcken
29 diese auf und kopiert den Inhalt auf Wunsch.
30 Der Start des Compilers unter Emacs setzt eine <EM>Makefile</EM> vorraus,
31 da der Compiler über make -k gestartet wird. Eine minimale Makefile für
32 die Datei demo.cpp ist<P>
36 (TAB)c++ -Wall -o a.out demo.cpp
39 wobei (TAB) für ein Tabulatorzeichen steht. Mit einem kleinen bash-Skript
40 lassen sich Mini-Makefiles auch automatisch erzeugen:<P>
42 Datei cppemacs (mit chmod ausführbar setzen)
47 #Compileroptionen für normale Compilierung
49 #Compileroptionen für GNU Debugger
52 echo -e "\tc++ $cflags -o a.out $1.cpp" >> Makefile
56 Aufruf mit cppemacs Sourcedatei OHNE die Extension .cpp
61 <H4>Allgemeine Befehle</H4>
65 Aktuellen Puffer speichern C-x C-s
66 Datei in neuen Puffer laden C-x C-f
67 Datei in aktuellen Puffer einfügen C-x i
78 Zum anderen angezeigten Puffer wechseln C-x o
79 Aktueller Puffer auf volle Größe C-x 1
81 Namen aller Puffer anzeigen C-x C-b
82 Zum Puffer name wechseln C-x b name
88 Blockanfang C-LEERTASTE
89 Blockende Cursorposition
91 Block in Ringpuffer löschen C-w
92 Block in Ringpuffer kopieren M-w
93 Block aus Ringpuffer an Cursorpos. einfügen C-y
97 <H4>Der c-mode und c++-mode</H4>
99 Diese Modi führen während der Eingabe des Quellcodes bereits
100 einen einfachen Syntaxcheck durch. Klammerebenen werden überwacht
101 und die zu einer schließenden Klammer gehörende offene Klammer
102 angezeigt und Klammerverwechselungen bemerkt. Logische Blöcke
103 werden erkannt und Zeilen mit der TAB Taste automatisch eingerückt.
104 Dabei werden {} Blöcke, if, while, for, switch, case etc erkannt.<P>
107 Laden des c- Modus M-x c-mode
108 Laden des c++-Modus M-x c++-mode
109 Zeile unter Cursor einrücken TAB-Taste
112 <H4>Compilieren unter Emacs</H4>
115 Den als Vorgabe erscheinenden Befehl make -k kann man
116 mit der Eingabetaste bestätigen (siehe oben). Die Aus-
117 gaben des Compilers werden in einen eigenen Puffer ge-
121 Compilerlauf starten M-x compile
123 In den Compile- Puffer wechseln C-x o
124 Cursor auf eine Fehlermeldung plazieren Pfeiltasten
125 Sourcezeile zur Fehlermeldung anzeigen C-c C-c
126 Nächste Fehlermeldung M-n
127 Vorhergehende Fehlermeldung M-p
128 Im Sourcepuffer: Nächster Fehler C-x `
129 (Shift-"Taste-neben-Backspace"!)
132 <H4>GNU Debugger unter Emacs</H4>
134 Damit der GNU-Debugger richtig arbeitet, muß das Programm mit den
135 Optionen <EM>-g -O0</EM> ("Oh null") übersetzt werden.<P>
136 Für den gdb wird ein eigener Puffer geöffnet, in dem die gdb- Kommandos
137 benutzt werden können.<P>
140 GNU Debugger und Programm a.out starten M-x gdb a.out
141 Breakpoint an einer Stelle im Source setzen C-x LEERTASTE
142 Breakpoint löschen C-x C-a C-d