2009-10-19 16 views
34

Próbuję przejść do Emacsa jako głównego edytora kodu źródłowego. Tęsknię za jedną rzeczą (powszechną w nawet znacznie prostszych edytorach) - prowadnice wcięcia (nie rzucające się w oczy pionowe linie, które pokazują poziom wcięcia). Czy Emacs jest w stanie je wyświetlić?Jak wyświetlać prowadnice wcięć w Emacs?

+4

Jest to pomocne podczas czytania kodu. – Thotep

+2

Tak się składa, że ​​wskazówki do wcięcia byłyby bardzo użyteczne podczas edycji kodu Lisp. –

+0

@ user181548 więcej informacji oznacza mniej błędów. na vim używam 'set listchars = tab: ░ \' (char przed "\" jest znakiem bloku, który nie pojawi się tutaj myślę, może być zastąpiony przez "|" i nadal wygląda dobrze po "\" to znak przestrzeni) – gcb

Odpowiedz

69

Zrobiłem funkcję highlight-indentation do tego celu, code is on github.

Podczas wywoływania highlight-indentation bez argumentu przedrostka, bieżący poziom wcięcia jest naiwnie odgadywany z trybu głównego (python, ruby ​​i języki w oparciu o tryb cc). Działa tylko w przypadku wcięć przestrzeni. Dostosuj highlight-indent-face, aby zmienić wygląd linii wcięć.

Przykłady (Ruby, Python): Ruby, Python example

ja też często korzystać z tego fragmentu, że pasuje cały kod na poziomie wcięcia większą niż dotychczasowa linia. To świetny sposób na szybki przegląd obrysu.

(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

Aby automatycznie załadować to dla plików JavaScript i Python, dodałem do mojego pliku .emacs:' (wymagaj 'podświetlenia podkreślenia) (dodaj wcięcie' podkreślenie-wcięcia 'python-mode-hook' -mode) (tryb "podświetlania-wcięcia" w trybie "js2-mode") ' – Tom

+2

Witaj, dodałem to do mojego .emacs, ale nie wygląda na to, że moje pliki Pythona wyglądają tak, jak na ekranie. Nie widzę żadnych linii wcięcia, jak w twoim przykładzie. czy możesz doradzić? –

+2

+1 za przewijanie. Uwaga dla innych, jeśli włączysz 'tryb podświetlania-podkreślenia' i nic nie zobaczysz, to prawdopodobnie dlatego, że używasz * kart *. – harpo

5

według mojej wiedzy nikt nie wdrożył do tej pory instrukcji wcięcia dla Emacsa. Najbliższą rzeczą, którą można uzyskać, jest wizualizacja tabel TAB z pakietem białych znaków, zobacz Show tabs with a different character (Emacs).

+0

Uwaga: możesz również wizualizować spacje: 'M-x customize-variable RET spacja-spacja' następnie 'M-x spersonalizuj zmienną RET whitespace-style' i dodaj te dwa tokeny do wyrażenia Lisp:' spaces spaces-mark'. Np. Mój "styl spacji" wygląda obecnie tak: ''(tabs śledzenie linii-końca spacji przed wcięciem nowej linii puste spacje-tabulator tab-mark spacje space-mark)' –

+0

@NoahSussman 'zmienna customize 'nie ma takiej zmiennej oo –

0

Załóżmy, że możesz zgiąć ColumnMarker do swoich potrzeb, ale podświetli on kolumnę , nie podając jednego piksela.

ja wciąć z 8 pomieszczeń tak Nigdy nie myślałem o tym, p

Powiązane problemy