web-mode add hook与ranger冲突问题

使用dired或者treemacs打开html, js文件是能显示header-line的,但是用ranger或deer打开就不行了,我试了ranger-mode-load-hook也将ranger-modify-header设为nil了也不行。

Dired:

Ranger:

这是我使用的配置。

(defun set-header-line ()
  (setq header-line-format
        '((which-func-mode ("" which-func-format " ")))))
(add-hook 'prog-mode-hook 'set-header-line)
(add-hook 'text-mode-hook 'set-header-line)
(add-hook 'web-mode-hook 'set-header-line)
(add-hook 'js2-mode-hook 'set-header-line)

解决了,坑爹的在js2-mode config里面重复写了一遍(which-function-mode t)

不对,好像还是没解决。。

lambda 后面少了括号,set-header-line被当成参数

对啊,但是还是不行诶。。

我的意思是(lambda () (set-header-line))

是啊,我改了啊,还是不行诶。。

(add-hook 'prog-mode-hook #'set-header-line)

我也试过了,不行诶。

我测试了下,(add-hook 'web-mode-hook (lambda () (message "test web hook")))是有message的,所以是生效了的,但是header-line-format没有,应该是被覆盖了。。

BTW,如果我在web-mode里手动调用set-header-line是可以生效的

web-mode-hook的值是

(my-web-mode-indent-setup spacemacs//typescript-web-mode-enable-tide 
my-setup-develop-environment spacemacs//typescript-web-mode-enable-flycheck 
turn-on-evil-matchit-mode emmet-mode spacemacs//typescript-web-mode-enable-eldoc 
drupal-mode-bootstrap set-header-line flycheck-mode spacemacs//init-company-web-mode 
company-mode spacemacs//init-company-vars-web-mode)

setq-default

set-default 的话minibuffer里也生效了,不想在minibuffer里生效诶。。

可能是这些的锅,你写在user-config里了没?是的话应该是在最后的,怎么在他俩前面

既然怀疑 header-line-format 被覆盖,那么它最终的值是多少?

这个我之前试过了,放在user-config最后面,和我自己定义的layer里面都试过了,都不行。

这个是在js2-mode下的情况,是nil。 感觉可能跟buffer-local有关系

header-line-format is a variable defined in ‘C source code’. Its value is nil Local in buffer renderer.js; global value is the same.

Automatically becomes buffer-local when set. This variable may be risky if used as a file-local variable.

我发现问题是ranger…使用dired或者treemacs打开html, js文件是能显示header-line的,我试了ranger-mode-load-hook,也不行。

不知道大家有什么见解没?

很奇怪,ranger里面定义了revert-apperance的函数,不知道为什么对继承fundamental-mode的不适用。

(defun ranger-revert-appearance (buffer)
  "Revert the `BUFFER' to pre-ranger defaults without closing ranger session."
  (when (buffer-live-p buffer)
    (with-current-buffer buffer
      ;; revert buffer local modes used in ranger
      (ranger--message "Reverting appearance to buffer : %s" buffer)

      ;; BUG : dired auto revert adds header / . / .. when window not active
      (unless ranger-pre-hl-mode
        (hl-line-mode -1))
      (unless ranger-pre-arev-mode
        (auto-revert-mode -1))
      (setq header-line-format ranger-pre-header-format)
      (when (derived-mode-p 'dired-mode)
        (setq dired-listing-switches ranger-pre-dired-listing)
        (ranger-show-details)
        ;; (ranger-show-details)
        ;; revert ranger-mode
        ;; (setq ranger-mode nil)
        ;; hide details line at top
        (funcall 'remove-from-invisibility-spec 'dired-hide-details-information)
        ;; sort dired with previous listing options
        (dired-sort-other dired-listing-switches)
        ))))