这里写自定义目录标题
Latex Extra为例
以latex-mode为例,有时希望跳到previous section或者next section。可以下载latex-extra.el (github),这个很久没有更新了。在.spacemacs的user-config中,(load-file “~/.emacs.d/latex-extra.el”), 原本latex-extra需要添加minor-mode到latex-mode中。
latex-extra中的binding和spacemacs是重叠的,我暂时修改了latex-extra中setup函数:
(defun latex/setup ()
"Prepare all latex-extra features."
(add-hook 'latex-extra-mode-hook #'latex/setup-auto-fill)
(add-to-list 'LaTeX-clean-intermediate-suffixes "\\.tdo") ;todonotes package
(add-to-list 'LaTeX-clean-intermediate-suffixes "Notes\\.bib") ;revtex package
(spacemacs/declare-prefix-for-mode 'latex-mode "j" "jump")
(spacemacs/set-leader-keys-for-major-mode 'latex-mode "jp" 'latex/up-section)
(spacemacs/set-leader-keys-for-major-mode 'latex-mode "jn" 'latex/next-section)
(spacemacs/set-leader-keys-for-major-mode 'latex-mode "jh" 'latex/previous-section-same-level)
(spacemacs/set-leader-keys-for-major-mode 'latex-mode "jl" 'latex/next-section-same-level)
;; (if (null latex/override-fill-map)
;; (define-key latex-extra-mode-map "" nil)
;; (define-key latex-extra-mode-map "" #'latex/clean-fill-indent-environment))
;; (if (null latex/override-font-map)
;; (define-key latex-extra-mode-map "" nil)
;; (message "%S changed to \"C-c f\"." 'TeX-font)
;; (define-key latex-extra-mode-map "" #'latex/next-section-same-level)
;; (define-key latex-extra-mode-map "f" #'TeX-font))
;; (latex/-rebind-font-list)
;; (if (null latex/override-preview-map)
;; (define-key latex-extra-mode-map "" nil)
;; (message "%S changed to \"C-c p\"." 'preview-map)
;; (define-key latex-extra-mode-map "" #'latex/previous-section)
;; (define-key latex-extra-mode-map "p" preview-map))
)
我的spacemacs中的latex-mode没有j的binding,因此这里我用了j key。
结果
打开一个tex文件,用逗号激发菜单可以看到新的key binding (,j/,jp/,jn etc)
在这里插入图片描述
Conclusion
可以看到首先declare-prefix-for-mode,然后set-leader-keys-for-major-mode,就可以添加key binding到某个major mode中。(SPC m或者,激发)