3

Paredit 提供 barf 和 slurp 命令。我可以看到何时使用 slurp 命令,但我不确定何时应该使用 barf 命令。

当我有这个代码时:

(foo num)
(bar num)

我会这样写:

(let ((numb blah)))
(foo num)
(bar num)

然后啜饮两次来得到这个:

(let ((numb blah))
  (foo num)
  (bar num))

起初我认为与该任务相反的任务可能需要使用 barf,但为此,我可以将点移动到开始,(foo num)然后按<M-up>哪个运行命令 paredit-splice-sexp-killing-backward 并得到这个:

(foo num)
(bar num)

在哪些情况下使用 barf 命令会很方便?

注意:当您重复 slurp 命令的次数超过必要时,您可以调用 undo 命令来取消其中的一些。

4

1 回答 1

4

Paredit 社区的所有成员都普遍接受的事实是,slurpage 和 barfage 与模式密不可分。使用 Paredit 编写一些 lisp 代码,就会出现对这些的需求。这更多是由于结构编辑的性质和 Paredit 对不平衡括号的厌恶,而不是任何其他因素。

当不使用 Paredit 时,可以通过在添加和删除括号时使用光标(或者可能使用鼠标)导航来完成。Paredit 不允许其用户以这种不受欢迎的方式违反其括号,因此自然得出的结论是 Paredit 用户必须呕吐和啜饮。

一个例子:

创建了一个代码块,一个 if 语句。

(when (|so bar fuux baz)
     (foo suux duux))

该块不需要测试一个条件,而是需要使用and逻辑运算符测试两个条件。M-(可以用来包裹,但它不会包裹多汁的bar fuux baz符号。

(when ((|so) bar fuux baz)
      (foo suux duux))

啜饮

(when ((|so bar fuux baz))
      (foo suux duux))

犯了一个错误。Baz属于第二个条件块。呕吐

(when ((|so bar fuux) baz)
      (foo suux duux))

其余的不包括使用 slurpage 或 barfage。

(when (and (|so bar fuux) baz)
      (foo suux duux))
于 2016-01-19T03:24:30.873 回答