如何在第一个表达式啜食时避免额外的空格特征

时间:2013-06-30 22:51:46

标签: emacs clojure lisp paredit

使用Paredit时,我经常遇到以下情况(管道字符代表光标):

(foo |bar baz)

我想将bar括在parens中,所以我使用paredit-wrap-around M - )来获取此信息:

(foo (|bar) baz)

当我想把bar放在字符串中时,同样适用,我可以使用 M - " 来获取:

(foo "|bar" baz)

但是,Clojure还为矢量,地图和集合使用方括号[]和花括号{}。这些看起来似乎并没有包装好的'命令。所以在这种情况下,例如,将bar放入向量中,我通常使用 [键创建一个新向量:

(foo [|] bar baz)

后跟paredit-forward-slurp-sexp C - ),结果是:

(foo [| bar] baz)

我想删除bar之前插入的空格字符。这可能吗?为什么paredit在从空表达式转换为包含一个项目的表达式时会保留空格char?难道不是第一个添加到S表达式的项目总是被推到开头那个吗?

2 个答案:

答案 0 :(得分:4)

Paredit已经有一段时间了paredit-wrap-curlyparedit-wrap-square。如果你想使用它们,只需将它们绑定到一个可能发声的键,并拥有它。如果你使用这样一个旧版本的paredit这些函数不存在,你应该升级(但我不认为你是这样,因为slurp命令可以使用它们。)

答案 1 :(得分:1)

paredit的最新开发版本将M-[绑定到paredit-wrap-square,它完全符合您的要求。 Emacs已将M-{绑定到backward-paragraph,但如果您没有使用它,则可以自定义paredit以隐藏它:

(eval-after-load 'paredit
  '(progn
     (define-key paredit-mode-map (kbd "M-{") 'paredit-wrap-curly)))

如果您要删除该点周围的所有空间,您可以随时为M-\输入delete-horizontal-space