【问题标题】:Disable hl-line in Emacs when using Emacs Starter Kit?使用 Emacs Starter Kit 时禁用 Emacs 中的 hl-line?
【发布时间】:2011-04-02 12:10:44
【问题描述】:

这个问题正在扼杀我的工作效率。

Emacs Starter Kit 自动启用 hl-line,它会突出显示当前行。这使我无法看到当前行的突出显示。

我尝试全局设置(global-hl-line-mode nil)(hl-line-mode nil) 并添加到诸如clojure-mode-hook 之类的模式挂钩中,但它仍然显示。

禁用此功能需要什么 elisp?

【问题讨论】:

  • 请注意,(hl-line-mode nil) 是一个开关,所以它不是很健壮。 (hl-line-mode 0) 总是关闭模式(当然,不会阻止其他东西在以后重新打开它)。

标签: emacs clojure


【解决方案1】:

您询问了如何禁用 hl-line-mode,但您说您希望这样做,因为 hl-line-mode 会掩盖您希望看到的正常语法突出显示。好吧,如果我告诉您可以同时突出显示行和语法突出显示,该怎么办?试试这个:

;; Change the :background setting to a value that is only very subtly 
;; lighter than the default bg color.
(set-face-attribute 'hl-line nil
                    :background "#3d4753"
                    :foreground nil
                    :inherit t)

最终结果是一个突出显示的行,它在背景中具有非常精美微妙的突出效果,并将所有有价值的语法突出显示在前景中。如果您仔细选择背景颜色,则不会出现与 fg/bg 颜色的可读性冲突的任何问题(我的意思是,如果您选择高对比度的突出显示线条颜色,那么语法突出显示颜色将发生冲突并且难以阅读,因此,通过选择只有非常细微不同的颜色,您仍然可以看到它,而不必担心 fg 颜色会发生冲突)。

【讨论】:

    【解决方案2】:

    我知道这是一个老问题,但我最近遇到了同样的问题(使用 emacs 24),发现也可以通过自定义“hl-line”面来解决:

    1. 执行“M-x customize-face”并输入“hl-line”。
    2. 根据您的喜好进行自定义并“保存以备将来使用”。

    如果您关闭所有属性,您实际上会禁用该功能,至少从用户的角度来看是这样。对我来说,关闭颜色突出显示并将“权重”设置为“重”将 hl-line 从烦人的功能转变为不显眼的、适度有用的功能。

    【讨论】:

    • 我使用了这个解决方案,将 hl-mode 更改为我当前行的正文,而不更改背景或前景颜色,删除了继承,现在它实际上有点有用/令人愉快。
    【解决方案3】:

    在入门工具包 2 中,要移除的对应挂钩是:

    (remove-hook 'prog-mode-hook 'esk-turn-on-hl-line-mode)
    

    您需要在启动工具包初始化后将其添加到您自己的配置中。

    【讨论】:

      【解决方案4】:

      hl-line-mode 由 starter-kit-defuns.el 中的以下行打开:

      (add-hook 'coding-hook 'turn-on-hl-line-mode)
      

      您可以注释掉该行,或者如果您不想接触入门工具包文件,您可以将以下内容放入您的个人 init 文件 ~/.emacs.d/{username}.el:

      (remove-hook 'coding-hook 'turn-on-hl-line-mode)
      

      【讨论】:

        【解决方案5】:

        如果您使用 ESK,那么放置您自己的自定义项的最佳位置不是 .emacs,而是 .emacs.d/{username}.el 或 .emacs.d/{username}/{username}.el。

        【讨论】:

          【解决方案6】:

          我不认为您的问题来自 ESK - 它没有启用 hl-line-mode。如果这是真的,你必须在某处有一条看起来像(global-hl-line-mode t) 的线。我建议在您的配置中简单地搜索该行并在找到它时将其删除。还有其他突出显示模式。 ESK 会自动从 ELPA 安装 idle-highlight - 也许这就是您的意思。您可以通过从 starter-kit-elpa.el 中的这段代码中删除它的条目来删除它:

          (defvar starter-kit-packages (list 'idle-highlight
                                             'ruby-mode
                                             'inf-ruby
                                             'css-mode
                                             'yaml-mode
                                             'find-file-in-project
                                             'magit
                                             'gist)
          

          您还应该从 ELPA 的文件夹中删除下载的包并重新启动 Emacs。

          【讨论】:

            【解决方案7】:

            尝试将(global-hl-line-mode nil) 放在.emacs 的底部,以免其他命令覆盖它。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-05-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-10-27
              • 2020-10-16
              • 2013-08-16
              • 1970-01-01
              相关资源
              最近更新 更多