Emacs
General
M-/ completes the current word using all buffers.
AucTeX
Emacs + Auctex
ist wohl immer noch die beste Lösung. Auctex ist unter OpenSuse m.W. standardmäßig installiert und aktiviert, unter Windows (NT-Emacs) ist da noch ein weiterer Installations-Schritt nötig.
Es bietet:
- Einfaches kompilieren, indizeren, bibtexen, etc. ohne Emacs verlassen zu müssen (Einfach C-c C-C).
- Einfache Vorschau, für DVI und PDF(!) Bis hin zum Grafischen einblenden der kompilierten Formeln in den Quelltext
- Support beim einfügen von LaTex Strukturelementen Formatieren schon des Quelltextes in Anlehnung an die Endausgabe
\usepackage{pdfsync}
Mit diesem Latex Packet kann emacs/auctex in xpdf direkt auf die Seite springen, auf der sich der Cursor im Quelltext befindet. Mit C-c C-v immer wieder an die Richtige Stelle. Reverse-search (wie in DVI) geht allerdings auch damit nicht.
Über
(custom-set-variables '(revert-without-query (quote (".*.pdfsync"))) )
fragt emacs nicht mehr nach ob der pdfsync-Buffer nach einer Neukompilierung neu geladen werden soll.
RefTex
Coole Sache, die man mit
(setq TeX-parse-self t) (setq reftex-plug-into-AUCTeX t) (add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode (add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
aktiviert, oder mit „reftex-mode“.
Das ermöglicht einem:
- effizientes Springen im Dokument über die Section Headings ( C-c = )
- effizientes Einfügen von Kreuz-Referenzen? über eine Liste der passenden Labels
- Effizientes Einfügen von Cites, indem man einen Suchausdruck eingibt und er einem eine Lsite von passenenden Bib-Einträgen vorschlägt.
- noch ein paar Kleinigkeiten
PDF als Figures
Wenn man eh PDF's generiert, kann man sich auch die Vriemelei mit eps sparen. Einfach die Figures als pdf (Für Vektorgrafiken), png oder jpg erzeugen und einbinden. PDFLatex unterstützt alle diese Formate und xpdf zeigt sie rapp-zapp an.
EPS ist tot.
Es lebe PDF!
WhizzyTex Preview
Anscheinend hat whizzytex einen besseren Preview. Sollte man sich mal anschauen.
Compilation frame
Es ist praktisch sich die Comnpile-logs und Fehler in einem separaten Frame anzeigen zu lassen. Dieser hat dann natürlich keine Menüs, et.c, nötig.
; put compilations into a special frame (setq special-display-buffer-names '("*compilation*" "*tex-shell*" "*TeX Help*")) (custom-set-variables '(special-display-frame-alist (quote ((height . 18) (width . 100) (unsplittable . t) (menu-bar-lines . 0) (tool-bar-lines . 0)))) )
Die erste Liste definiert die Namen der „Spezialframes“. Der zweite Eintrag geschieht über normales Customizen und maximiert die nutzbare Fläche für das Anzeigen der Log messages.
FlySpell
Emacs hat eine eingebaute Rechtschreibkorrektur. Diese kann man auch benutzten um Kommentare im Source-Code zu checken!
(Zumindest ich habe das nötig).Weil es natürlich viel zu lästig ist dass immer manuell zu machen, kann man Emacs auch einfach immer das Zeug checken lassen was man gerade tippt. Dann wird das Word markiert und man kann es wenn nötig korrigieren.
Um das für TeX und C immer eingeschaltet zu haben sollte man das hier in sein .emacs (bzw. .gnu-emacs-custom) File einbauen:
;; Add spell-checking to comments of C programs (add-hook 'c-mode-common-hook '(lambda () (flyspell-prog-mode)))
Für Python geht das natürlich auch:
(add-hook 'python-mode-hook '(lambda () (flyspell-prog-mode)))
Um für alle Text-modi spell checking einzuschalten sollte man es über customize-variable vom text-mode-hook durch Anklicken des Button „turn-on-flyspell“ aktivieren.
Pylint
1) Mit zusätzlich diesem Code im dot-emacs File
(when (load "flymake" t) (defun flymake-pylint-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace)) (local-file (file-relative-name temp-file (file-name-directory buffer-file-name)))) (list "epylint" (list local-file)))) (add-to-list 'flymake-allowed-file-name-masks '("\\.py\\'" flymake-pylint-init)))
werden beim aktivieren von flymake (Alt-x flymake-mode) alle Warnungen farbig im Sourcecode hinterlegt! Man kann sich also das manuelle starten des Checkers sparen und einfach programmieren. Beim Abspeichern läuft der Checker drüber und markiert alle bösen Sachen!
Die einzige Sache mit der ich mit den pylint Defaults nicht 100% zufrieden bin ist die Forderung nach max. 80 Zeichen pro Zeile, was ich in der heutigen Zeit, in der Code fast nie mehr ausgedruckt wird als etwas konservativ betrachten würde (ich tendiere zu 100-120 Columns). Vielleicht sollten wir uns mal auf Style-Guidelines einigen und die mittels eines Konfigurationsfiles festhalten.
Mit
;; Add flymake and comment spell checking to Python (add-hook 'python-mode-hook '(lambda () (flymake-mode) (flyspell-prog-mode)))
startet man den flymake-mode und die Rechtschreibkorrektur der Kommentare automatisch.
2) Das Skript epylint sollte bei Linux installiert sein. Man kann es modifizieren um ausser Fehlern auch Stil-Warnungen angezeigt zu bekommen. Im Anhang ein Beispiel.
untabify-on-save
Das ist der Kode, mit dem mein Emacs beim Abspeichern alle Tabs in Space konvertiert und Whitespace am Ende von Zeilen entfernt.
(defun c-mode-untabify () (save-excursion (goto-char (point-min)) (while (re-search-forward "[ \t]+$" nil t) (delete-region (match-beginning 0) (match-end 0))) (goto-char (point-min)) (if (search-forward "\t" nil t) (untabify (1- (point)) (point-max)))) nil) (add-hook 'c-mode-common-hook '(lambda () (make-local-variable 'write-contents-hooks) (add-hook 'write-contents-hooks 'c-mode-untabify)))
Windows Install
- aktuelles ntemacs-…exe suchen und in Programme auspacken.
- auxtex zip installer suchen und ins emacs Verzecihnis entpacken
- HOME Umgeungsvariable auf Home setzen und .emacs oder _emacs dorthin legen
- ALTERNATE_EDITOR Umgebungsvariable auf runemacs.exe setzen und nur noch emacsclientw.exe benutzen. Ein Icon im Startmenü sollte auf runemacs.exe zeigen.
- cygwin installieren, aspell und dictionaries installieren. Ispell Pfad von Emacs auf aspell Executable setzen. Evtl. ghostscript aus cygwin installieren und einkonfigurieren.
- Sumatra PDF installieren (xpdf Port für Windows)
C++ editing
tagging
Using either ctags (ctags -e *) one can use M-. for lookup of symbols. Using ebrowse and opening the file gives much better understanding of C++ and enables among other things lookup of definition, declaration and implementation.
simple outlining
Still looking for a (C++) editor that can
- show all comments, hide all comments, hide everything but comments
- collapse functions (maybe outline mode with the regexp set to ^{ or something like that?) What I'd really like is a tree view with a little plus/minus box on the left so I can collapse the functions I don't want to see.
I thought I saw that in VS.NET for C# (but, thank God, I won't be doing C# any time soon.) Can Emacs do that? – AndrewQueisser
VS.NET's C++ editor can.
Not to my knowledge, i.e. without programming. But if you use a sane indentation convention, the following is often close enough:
C-u 2 C-x $
This hides all lines which don't have anything in column zero or one, which normally has the desired effect of giving you a nice overview of the file. Of course, it's more useful in lisp modes and C++… but you get the idea. C-x $ again to turn it off. The name of the command is set-selective-display.