如何在 paredit 模式下定义交换括号和方括号的命令?
最佳答案
所以任务是转这个,例如:
(blah
(a (b)
c))
进入这个:
(blah
[a (b)
c])
使用 paredit 模式,移动到表达式的开头
(a ..)
进而:C-M-SPC [ <right> M-s
没有 paredit,但仍希望在转换期间保持平衡的 parens,移至
a
然后按 C-M-SPC
多次直到出错,然后(假设 CUA 模式打开):C-x <timeout> <right> <backspace> <backspace> [ ] <left> C-v
嗯,这很复杂,所以让我们坚持使用 paredit 模式版本,并尝试从中创建一个命令。键盘宏编辑器会告诉您正在使用的命令的名称,因此您至少可以想出以下代码:
(defun my-switch-to-square ()
"Change (..) to [..]."
(interactive)
(mark-sexp --)
(paredit-open-square --)
(right-char --)
(paredit-splice-sexp --))
--
表示我们尚未决定的部分代码。阅读代码中每个函数的文档后,您将了解要传递哪些参数,并且无需调用 mark-sexp
.重写文档字符串并添加对 left-char
的调用后,你最终得到的代码是:(defun my-switch-to-square ()
"Change |(..) to |[..]. | is point position."
(interactive)
(paredit-open-square 1)
(right-char 1)
(paredit-splice-sexp)
(left-char 1))
关于emacs - 在 Emacs Paredit 中交换括号和方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14213173/