Spacemacs 私有层的键位绑定没有效果

各位好,我尝试写一个DSL的私有层,并且加上编译的键位绑定,不过貌似spacemacs/set-leader-keys-for-major-mode一直没有效果。下面是我的代码,主要就是键位绑定的那几行。我看官方的文档和别人的一些私有层的键位绑定都是这样写的,是我哪里搞错了呢?

(defconst graphviz-packages
  '(
    company
    graphviz-dot-mode
    ))

(defun graphviz/init-graphviz-dot-mode ()
  (use-package graphviz-dot-mode
    :mode ("\\.dot$" . graphviz-dot-mode)
    :defer t
    :config
    (progn
      (spacemacs|add-toggle graphviz-live-reload
        :status graphviz-dot-auto-preview-on-save
        :on (graphviz-turn-on-live-preview)
        :off (graphviz-turn-off-live-preview))
      (push 'company-capf company-backends-graphviz-dot-mode)
      (spacemacs/set-leader-keys-for-major-mode 'graphviz-dot-mode
        "t" 'spacemacs/toggle-graphviz-live-reload
        "c" 'compile
        "p" 'graphviz-dot-preview
        "," 'graphviz-dot-preview))))

(when (configuration-layer/layer-usedp 'auto-completion)
  (defun graphviz/post-init-company ()
    (spacemacs|add-company-hook graphviz-dot-mode)))

1 个赞

写在init里而不是config,config只有等到package完全加载后才被执行

试着改过了,仍然没有效果。我感觉是不是(spacemacs/set-leader-keys-for-major-mode 'graphviz-dot-mode 中这个graphviz-dot-mode的问题,怎么确定我当前在什么mode中呢。我在spacemacs中看是dot-mode。然而改了也没效果。

最后解决了,是因为MELPA上的graphviz-dot-mode源代码有些问题。我找到了一个fork的版本进行修改。没想到问题出在graphviz-dot-mode内部。

我也遇到这个问题,你修改的是哪里?可以贴出来吗?

就是自己添加的layer本来依赖的emacs的插件graphviz-dot-mode是从elpa上获取的,但是elpa保存的graphviz-dot-mode有问题。我添加了一个local文件夹,找到了graphviz-dot-mode的另一个fork。这样就不需要从elpa获取了。这样键位绑定就没问题了。具体修改了哪里可以看我的github repo https://github.com/walsvid/graphviz 话说是graphviz-dot-mode本身的问题,spacemacs添加layer的写法是没错的。

1 个赞

谢谢,果然用了这个版本的就好了。