gpt4 book ai didi

emacs - 您如何使用 Paredit 注释掉全部或部分 Lisp s-exp?

转载 作者:太空宇宙 更新时间:2023-11-03 18:33:09 25 4
gpt4 key购买 nike

在编辑 Lisp 代码时,有时完全注释掉顶级定义是有用的,如下所示:

;(defun some-fn-which-is-broken (x)
; ...)

... 或仅注释掉 s 表达式的一部分,如下所示:

(foo x
; y
z)

...然后重新编译文件并在 REPL 中测试一些东西,等等。

启用 paredit-mode 后,这不起作用。如果该点正好在下面的第一个括号之前,则会发生以下情况:

(defun some-fn (x)
...)

然后你输入一个分号,输入的是一个分号和一个换行符:

;
(defun some-fn (x)
...)

与注释掉部分 s 表达式相同:

(foo x
;
y
z)

我认为如果定义全部在一行中,则这样可行:

;(defparameter *foo* 10)

...但除此之外我不知道该怎么做。 Paredit 很棒,我真的很想继续使用它。是否有任何 Lispers 知道解决这个问题的方法,或者 Emacs 向导可以创建一些 Emacs Lisp 来绑定(bind)到 paredit-comment-out-s-expr 之类的东西?

如果有更多的 Lispy 或 Emacsy 方法来完成基本相同的事情,请注释掉部分源代码以重新编译,请不要犹豫,提出建议!

最佳答案

将点定位在整个sexp的第一个字符上,用C-M-space标记整个sexp,然后发出M-;进行注释。如果有必要这样做,您的源代码也将被重新格式化,以便只有您标记的 sexp,而不是同一行上的任何内容,都在注释中。

您可以非常轻松地制作一个简单的命令甚至一个宏来执行此操作:

(defun comment-sexp ()  "Comment out the sexp at point."  (interactive)  (save-excursion    (mark-sexp)    (paredit-comment-dwim)))

关于emacs - 您如何使用 Paredit 注释掉全部或部分 Lisp s-exp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4288339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com