【问题标题】:Disable line numbers but allow them in prog-mode and text-mode禁用行号,但允许它们在 prog-mode 和 text-mode
【发布时间】:2020-11-07 18:10:05
【问题描述】:

我想禁用 Emacs 中的行号,因为在 Org 模式、终端、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))))

【问题讨论】:

    标签: emacs line-numbers


    【解决方案1】:

    您只需使用钩子为相应的模式启用它们。钩子需要调用display-line-numbers-modet 作为参数来启用这个模式。我个人更喜欢把钩子的代码放到一个单独的函数中,如果需要可以在任何时候重新定义,像这样(在大多数编程模式下进入文件时都会调用这个钩子):

    (defun my-display-numbers-hook ()
      (display-line-numbers-mode t)
      )
    (add-hook 'prog-mode-hook 'my-display-numbers-hook)
    

    同样,您可以为 text-mode 执行此操作 - 它将为所有基于 text-mode 的文件启用:

    (add-hook 'text-mode-hook 'my-display-numbers-hook)
    

    【讨论】:

    • text-hook 应该是text-mode-hook,并且由于org-mode 派生自text-mode,这将为组织模式启用行号。您可以在org-mode-hook 中再次禁用它们,或者在函数中添加条件逻辑以启用它们(您可以测试major-mode)。
    • 是的,谢谢@phils - 我没有复制代码,而是手动输入并出错了。我已经改变了
    • @ZoltanKing (display-line-numbers-mode t) 有效,但不是最佳实践。根据文档字符串(以及任何次要模式),参数应该是一个正数(传统上为 1):(display-line-numbers-mode 1)
    • 我是老前辈,有习惯了
    • 使用t 启用的主要问题是它建议您使用nil 禁用,这是不正确的——nil 也无条件启用(甚至在过去它用于切换而不是禁用)。如果你知道就好了,但我认为建议在 S.E. 中使用 t。答案很可能会在以后绊倒读者。
    猜你喜欢
    • 1970-01-01
    • 2016-05-28
    • 2021-10-08
    • 1970-01-01
    • 2013-11-06
    • 2011-07-10
    • 2012-08-23
    • 1970-01-01
    • 2013-07-20
    相关资源
    最近更新 更多