Emacs - 如何巩固:轻微模式的打火机

law*_*ist 5 emacs elisp

:lighters当某种活跃的次要模式组合存在时,是否可以在模式线上进行合并?如果是这样,那怎么样?

例:

  • 次要模式第一个有:打火机 " -"

  • 次要模式二有一个:打火机 " +"

如果两个次要模式在缓冲区中都处于活动状态,则合并打火机: " ±"

phi*_*ils 6

您可以通过修改minor-mode-alist以下内容动态更改任何次要MODE的较轻值:

(setcar (cdr (assq 'MODE minor-mode-alist)) VALUE)
Run Code Online (Sandbox Code Playgroud)

激活或取消激活任一模式时,请检查另一个模式的状态,并相应地设置较轻的文本.当两者都处于活动状态时,您可以将其中一个设为空字符串,将另一个设置为"组合"打火机.

或者,更好的是,利用任何模式行构造都有效的事实,并使其自动化.使用delight.el作为上面的包装器,假设两种模式都由mylibrary.el你定义,你可能会说:

(delight '((mode+ (mode- " ±" " +") "mylibrary")
           (mode- (mode+ "" " -") "mylibrary")))
Run Code Online (Sandbox Code Playgroud)

这并不完美 - 如果你想让相关的弹出式菜单也结合两种模式的细节,还有更多工作要做; 但我建议你不要担心,如果你不需要.模式线的外观是这里的低调成果.