spacemacs 折叠如何工作?

how does spacemacs folding work?

我正在查看启用折纸时负责 spacemacs 代码折叠的代码。我所看到的只是 hs-mode 已启用并且按键已绑定到折纸的折叠功能。

当我把它放在我的 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) 当第 1 行有 sexp 时折叠不起作用

2) 折叠适用于 defun 但不适用于 use-package 或其他函数

我想找到 spacemacs 用来定义折叠的特定解析器,以便我可以在我自己的 emacs 中复制它。但是我不明白折叠是如何工作的。

例如,令我感到困惑的是,当我检查 zadescribe-key 的绑定时,我看到密钥绑定到 evil-toggle-fold 而不是 [=16] =] 这正是我所期望的。

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