如何在 Spacemacs 中折叠 Clojure 文档字符串

How to collapse Clojure docstrings in Spacemacs

我正在使用 Spacemacs 在 Clojure 中编写程序。我希望能够折叠文档字符串。我试过选择文档字符串并按 z a,但是,这最终导致整个函数体崩溃。

具体来说,我希望能够打开这个:

(defn flip-and-vectorize
  "Returns a vector with the arguments flipped so that

   `(flip-and-vectorize 1 2)`

   returns the following vector

   `[2 1]`"
  [a b]
  [b a])

变成类似这样的东西

(defn flip-and-vectorize
  "..."
  [a b]
  [b a])

编辑:

即使能够折叠任意行也是可以接受的;这意味着上述函数的折叠版本可能如下所示:

(defn flip-and-vectorize
  ...
  [a b]
  [b a])

这意味着折叠逻辑不需要理解 "docstring" 是什么,而只会折叠选定的行。

有两种选择:

  1. https://github.com/magnars/fold-this.el
  2. https://github.com/mrkkrp/vimish-fold

这两个包都支持折叠区域。就像在里面一样,它可以折叠 selected 的任何东西。不同的是后者有更多的功能。尤其是即使您关闭并重新打开缓冲区也能记住折叠的能力。

要使用它们,请按照 github 页面上的说明进行操作。但是,当它说到 运行 包安装时,而不是在 spacemacs 中你想用 SPC f e d 打开你的 .spacemacs 并将包添加到你的 dotspacemacs-additional-packages 中:

dotspacemacs-additional-packages '(fold-this)

折叠-设置起来更简单,因为它的功能较少。

无论哪种情况,您都需要添加自己的键绑定。或者只是 select 要折叠的区域,然后 SPC SPC fold-this.

如果使用vimish-fold,你需要select要折叠的区域,然后调用SPC SPC vimish-fold折叠,然后你可以使用C-`打开折叠和关闭。或调用 SPC SPC vimish-fold-delete 取消折叠。