#emacs #line-numbers
#emacs #номера строк
Вопрос:
Я хотел бы отключить номера строк в Emacs, потому что их наличие в Org-mode, terminal, mu4e, elfeed и т. Д. Выглядит некрасиво.
Итак, я удалил это:
(global-display-line-numbers-mode t)
Теперь мне интересно, возможно ли включить номера строк только для prog-mode
и, в конечном итоге, для обычных текстовых файлов (но не для Org), я думаю, что это text-mode
.
Любое предложение приветствуется.
(dolist (mode '(text-mode-hook
prog-mode-hook
conf-mode-hook))
(add-hook mode (lambda () (display-line-numbers-mode 1))))
Ответ №1:
вам нужно просто включить их для соответствующих режимов с помощью перехватов. Для включения этого режима необходимо вызвать перехват display-line-numbers-mode
в 1
качестве аргумента. Я лично предпочитаю помещать код для перехвата в отдельную функцию, которую при необходимости можно переопределить в любой момент времени, что-то вроде этого (этот перехват будет вызываться при вводе файла в большинстве режимов программирования):
(defun my-display-numbers-hook ()
(display-line-numbers-mode 1)
)
(add-hook 'prog-mode-hook 'my-display-numbers-hook)
Аналогично вы можете сделать это для text-mode
— это позволит для text-mode
файлов на основе всех:
(add-hook 'text-mode-hook 'my-display-numbers-hook)
Комментарии:
1.
text-hook
должно бытьtext-mode-hook
, и, какorg-mode
вытекает изtext-mode
этого, будут включены номера строк для org-mode. Вы можете отключить их снова вorg-mode-hook
, или же добавить условную логику в функцию для их включения (вы можете протестироватьmajor-mode
).2. Да, спасибо @phils — я не копировал код, а ввел его вручную и допустил ошибку. Я изменил это
3. @ZoltanKing
(display-line-numbers-mode t)
работает, но не является лучшей практикой. Для строки документа (и для любого второстепенного режима) аргументом должно быть положительное число (традиционно 1):(display-line-numbers-mode 1)
4. Я старожил, привыкший к
5. Основная проблема с использованием
t
для включения заключается в том, что он предполагает, что вы будете использоватьnil
для отключения, что неверно —nil
также включает безоговорочно (и даже в прошлом он использовался для переключения, а не для отключения). Это нормально, если вы знаете, но я думаю, что предложение использоватьt
in S. E. ответы могут сбить с толку читателей позже.