global-display-number-mode与erc

我想在erc里(还有dashboard)的时候关闭global-display-number-mode 切到别的buffer里时又打开 有没有大佬提供点思路

global-display-number-mode

但凡读题就绝对会知道我的行号用的是什么模式

我这边有一个个人的解决方案 我启动erc用的是函数绑定 C-z TAB 所以在函数末尾加上 (display-line-numbers-mode -1) 就行

switch-buffer 加个advice, 然后判断不同的 major-mode 再决定是否开启 global-display-number-mode

(defun display-line-numbers--turn-on ()
  "Turn on `display-line-numbers-mode'."
  (unless (minibufferp)
    (display-line-numbers-mode)))

;;;###autoload
(define-globalized-minor-mode global-display-line-numbers-mode
  display-line-numbers-mode display-line-numbers--turn-on)

注意到它是这样实现的,因为可以通过修改display-line-numbers--turn-on来达到目的。下面例子表示在原来的基础上加了限制,仅在prog-mode下开启行号。

(define-advice display-line-numbers--turn-on (:override nil)
  (unless (or (minibufferp) (not (derived-mode-p 'prog-mode)))
    (display-line-numbers-mode)))