【问题标题】:wrap s-expression in slime (emacs)在粘液中包装 s 表达式(emacs)
【发布时间】:2017-05-28 19:29:38
【问题描述】:

有没有一种使用 slime 包装 s 表达式的捷径?

假设我已经完成了一段代码,并且我意识到我需要一个变量(例如,出于效率原因),因此想用let 包装它,或者想让它尾递归并需要用labels 包装它,最快的方法是什么?有捷径吗?

IntelliJ(Java IDE)允许类似:
x > 3.if + TAB
产量

if (x > 3) {

    }

那么在 slime/emacs 中是否有任何“sexp-wrapping”快捷方式(后缀或前缀)?

【问题讨论】:

  • 我不知道答案;我只是想说标题让我笑了:)
  • 我不确定您所说的“包装”是什么意思,但是您是否尝试过 paredit 模式?
  • @phils 好的,现在我也看到了 ;-)

标签: emacs lisp slime


【解决方案1】:

条形代表光标。

使用paredit

有一个wrap-round命令,绑定到M-(。但是在给表达式添加上下文的时候,我一般是这样做的:

|code

打开括号(自动添加右括号):

(|)code

...键入...

(let |)code

调用 paredit-forward-slurp-sexp (C-right)

(let | code)

另请参阅The Animated Guide to Paredit

没有paredit

|code

调用mark-sexp (C-M-Space),然后杀死该区域;在需要的地方键入并拉出(粘贴)文本。

另请参阅 Expressions with Balanced Parentheses(例如 forward-sexp),在 Emacs 中可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2013-03-15
    • 2017-05-14
    相关资源
    最近更新 更多