2009-10-19 2 views
34

Я пытаюсь переключиться на Emacs в качестве основного редактора исходного кода. Я очень скучаю по одной вещи (обычно в гораздо более простых редакторах) - направляющие отступов (ненавязчивые вертикальные линии, показывающие уровень отступов). Может ли Emacs отображать их?Как отображать руководства по отступлению в Emacs?

+4

Полезно при чтении некоторого кода. – Thotep

+2

Как бы то ни было, направляющие отступов были бы действительно полезны при редактировании кода Lisp. –

+0

@ пользователь181548 больше информации соответствует меньше погрешности. на vim я использую 'set listchars = tab: ░ \' (char перед символом «\» является символом блока, который не будет отображаться здесь, я думаю, может быть заменен на «|» и по-прежнему выглядит хорошо. после «\» является пространственным символом) – gcb

ответ

69

я сделал функцию highlight-indentation для этой цели, code is on github.

При вызове highlight-indentation без аргумента префикса текущий уровень отступов наивно угадывается из основного режима (python, ruby ​​и языки на основе cc-mode). Работает только для пространственных углублений. Настройте highlight-indent-face, чтобы изменить внешний вид линий отступа.

Примеры (Ruby, Python): Ruby, Python example

Я также часто использую этот фрагмент, который складывает весь код на уровне отступа выше, чем в текущей строке. Это отличный способ получить краткий обзор контура.

(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

Чтобы автоматически загружать это для файлов JavaScript и Python, я добавил следующее в мой .emacs:' (require 'highlight-indentation) (добавить-крючок' python-mode-hook 'highlight-indentation -mode) (add-hook 'js2-mode-hook' highlight-indentation-mode) ' – Tom

+2

Привет, я добавил это в мои .emacs, но не кажется, что мои файлы python выглядят так же, как на экране. Я не вижу никаких строк отступа, как в вашем примере. вы могли бы посоветовать? –

+2

+1 для переключателя. Обратите внимание на другие, если вы включите 'highlight-indentation-mode' и ничего не видите, вероятно, потому, что вы используете * tabs *. – harpo

5

Насколько мне известно, до сих пор не было внедрено руководство по отступлению для Emacs. Самое близкое, что вы можете получить, это визуализация TAB с пакетом whitespace, см. Show tabs with a different character (Emacs).

+0

Обратите внимание, что вы также можете визуализировать пробелы: 'M-x customize-variable RET whitespace-space', затем' M-x customize-variable RET whitespace-style' и добавить эти два токена в выражение Lisp: 'пробелы-пробелы-метки'. Например, мой стиль 'whitespace-style' выглядит следующим образом:' '(tabs trailing lines-tail space-before-tab newline indentation пустое пространство-после-табуляция метки метки метки пробела) ' –

+0

@NoahSussman' customize-variable 'не имеют такой переменной oo –

0

Предположим, вы могли бы сгибать ColumnMarker в соответствии с вашими потребностями, но он выделит колонку , а не один пиксель.

Я отступ с 8-ми пробелов, так что я никогда не думал об этом, P

Смежные вопросы