Spacemacs Layer 的依赖问题

Spacemacs本身有一个markdown layer。markdown layer包含了一个markdown-mode的package。这个package本身定义了一些emacs 风格的 keybindings。markdown layer在packages.el里也为markdown-mode定义了evilified keybindings。

现在我想写一个新的layer,这个layer中有一个新的derive markdown-mode的新的major mode。我想让这个新的major mode继承所有的keybindings.

我现在的做法大概是:

(defconst my-layer-packages
  '(
    (my-package :location local)
    (markdown-mode)
    ))

(defun spacemacs-hyde/post-init-markdown-mode ()
  (use-package markdown-mode
    :config
    (progn
      (spacemacs//init-leader-mode-map 'my-markdown-mode 'markdown-mode-map)
      ))
  )

问题在于,这样做只能继承在markdown mode package里定义的keybindings。

我觉得这是个layer的依赖问题,然而在网上并没有搜到类似的情况,求大佬指教

layer大概没有继承这样的机制,感觉大部分人不会有这个需求。

spacemacs//init-leader-mode-map只把markdown-mode的major-mode-leader那些绑定搬到了my-markdown-mode的问题,我感觉让my-markdown-mode继承markdown-mode可以解决,因为markdown layer给markdown mode做的绑定也会对my-markdown-mode生效(?)

没写过major-mode,顺手查了下: manual: define-derived-mode

你可能需要configuration-layer/declare-layers

my-markdown-mode 本来就是markdown的derive mode。declare layer也没什么用。

后来读了读代码,发现spacemacs会把evil的keybinding加入到spacemacs-xxx-mode-map里边,把这个map传入到spacemacs//init-leader-mode-map里边就行了。不过markdown-layer里边初始化的prefix什么的还是没法继承。奇怪的是倒是有些代码执行了。

感觉spacemacs关于layer的文档还得再加强,网上很难找到相关的资料。