2017-09-24 66 views
0

我在查看启用折纸时负责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这正是我所期望的。

回答

0

由于describe-key显示za绑定到evil-toggle-fold,我猜这个图层实际上没有启用,折叠行为只是普通hs-minor-mode。您可以尝试开启hs-minor-mode,并使用C-c @ C-c切换sexp。

+0

你说得对,图层没有启用。我仍然不确定spacemacs究竟是如何让折叠工作的。通常与邪恶,它会说“折叠不支持任何这些主要/次要模式”,但在spacemacs折叠只是作品。你知道我在哪里可以找到原因吗? – Piglet

+0

邪恶的折叠只是委托给任何可用的折叠模式,动作映射在'evil-fold-list'变量中。当它显示“Folding not supported ...”时,您只需启用'hs-minor-mode','outline-minor-mode'或'origami-mode',那么它就可以工作。 – tungd