2009-10-19 9 views
34

Ich versuche, zu Emacs als meinen primären Quellcode-Editor zu wechseln. Ich vermisse wirklich eine Sache (üblich in sogar viel einfacheren Editoren) - Einkerbung (unauffällige vertikale Linien, die den Eindruck zeigen). Kann Emacs sie anzeigen?Wie werden Einrücklinien in Emacs angezeigt?

+4

Es ist hilfreich beim Lesen von Code. – Thotep

+2

Es ist wirklich so, dass Einrücklinien wirklich nützlich wären, wenn Lisp-Code bearbeitet wird. –

+0

@ user181548 mehr Informationen entspricht weniger Fehlern. Auf vim benutze ich 'set listchars = tab: \ \' (char vor dem "\" ist ein block char, der hier nicht angezeigt wird, denke ich, kann durch "|" ersetzt werden und sieht immer noch gut aus. nach dem "\" ist ein Leerzeichen Zeichen) – gcb

Antwort

69

ich eine Funktion highlight-indentation zu diesem Zweck gemacht habe, code is on github.

Beim Aufruf von highlight-indentation ohne Präfixargument wird die aktuelle Einrückungsstufe naiv aus dem Hauptmodus erraten (Python, Ruby und Sprachen basierend auf cc-mode). Funktioniert nur bei Leerzeicheneindrücken. Passen Sie highlight-indent-face an, um das Erscheinungsbild von Einzuglinien zu ändern.

Beispiele (Rubin, Python): Ruby, Python example

ich diese Schnipsel häufig auch benutzen, die alle Codes auf einem Einrückungsniveau faltet größer ist als die aktuelle Zeile. Es ist eine großartige Möglichkeit, einen schnellen Überblick über die Gliederung zu erhalten.

(defun aj-toggle-fold() 
    "Toggle fold all lines larger than indentation on current line" 
    (interactive) 
    (let ((col 1)) 
    (save-excursion 
     (back-to-indentation) 
     (setq col (+ 1 (current-column))) 
     (set-selective-display 
     (if selective-display nil (or col 1)))))) 
(global-set-key [(M C i)] 'aj-toggle-fold) 
+7

Um dies automatisch für JavaScript- und Python-Dateien zu laden, habe ich folgendes zu meiner .emacs hinzugefügt:' (require 'highlight-indentation) (add-hook' python-mode-hook 'Hervorhebung-Einrückung -mode) (add-hook 'js2-mode-hook' highlight-indentation-mode) ' – Tom

+2

Hallo, ich habe dies zu meinen .emacs hinzugefügt, aber meine Python-Dateien sehen nicht so aus wie auf dem Bildschirm. Ich sehe keine Einrücklinien wie in Ihrem Beispiel. Könntest du einen Rat geben? –

+2

+1 für die Toggle-Falte. Hinweis für andere, wenn Sie den "Highlight-Indention-Modus" aktivieren und nichts sehen, liegt das wahrscheinlich daran, dass Sie * Tabs * verwenden. – harpo

5

meines Wissens hat bisher niemand Einbuchtungsanleitungen für Emacs implementiert. Am nächsten kommt die Visualisierung von TABs mit dem Whitespace-Paket, siehe Show tabs with a different character (Emacs).

+0

Beachten Sie, dass Sie auch Räume visualisieren können: 'M-x customize-variable RET whitespace-space' dann' M-x customize-variable RET whitespace-style' und füge diese beiden Token dem Lisp-Ausdruck hinzu: 'spaces spaces-mark'. Mein 'whitespace-style' sieht z. B. so aus:' '(Tabulatoren Zeilenumbruch-Leerzeichen Leerzeichen-vor-Tab Zeilenumbruch Leerzeichen Leerzeichen-nach-Tab Tab-Zeichen Leerzeichen Leerzeichen) ' –

+0

@NoahSussman die' customize-Variable 'habe keine solche Variable oo –

0

Angenommen, Sie könnten ColumnMarker auf Ihre Bedürfnisse biegen, aber es wird eine Spalte markieren Sie nicht ein einziges Pixel.

ich einrücken mit 8 Leerzeichen, so habe ich nie darüber nachgedacht; P

Verwandte Themen