spacemacs折叠如何工作?
问题描述:
我在查看启用折纸时负责spacemacs代码折叠的代码。我看到的只有hs-mode
启用和键绑定到折纸的折叠功能。spacemacs折叠如何工作?
当我把它放在我的emacs(不是spacemacs)配置文件中时,折叠不像在spacemacs中那样工作。以下是我从.emacs.d/layers/+spacemacs/spacemacs-editing/packages.el
发现的。
(use-package origami
:defer t
:init
(progn
(origami-global-mode 1)
(define-key evil-normal-state-map "za" 'origami-forward-toggle-node)
(define-key evil-normal-state-map "zc" 'origami-close-node)
(define-key evil-normal-state-map "zC" 'origami-close-node-recursively)
...)
...)
当加入这对我的emacs配置:
1)折叠时SEXP是在第1行
2)的折叠可与defun定义但不使用封装或其他不工作函数
我想找到具体的解析器spacemacs用来定义折叠,以便我可以在我自己的emacs中复制它。但我不明白折叠是如何工作的。
例如,它的混乱,我认为当我检查的za
例如结合与describe-key
,我看关键是必然evil-toggle-fold
而非origami-toggle-fold
这正是我所期望的。
答
由于describe-key
显示za
绑定到evil-toggle-fold
,我猜这个图层实际上没有启用,折叠行为只是普通hs-minor-mode
。您可以尝试开启hs-minor-mode
,并使用C-c @ C-c
切换sexp。
你说得对,图层没有启用。我仍然不确定spacemacs究竟是如何让折叠工作的。通常与邪恶,它会说“折叠不支持任何这些主要/次要模式”,但在spacemacs折叠只是作品。你知道我在哪里可以找到原因吗? – Piglet
邪恶的折叠只是委托给任何可用的折叠模式,动作映射在'evil-fold-list'变量中。当它显示“Folding not supported ...”时,您只需启用'hs-minor-mode','outline-minor-mode'或'origami-mode',那么它就可以工作。 – tungd