如何在不添加 "nil" 的情况下将文本插入缓冲区

4
我有一个函数可以将当前日期插入到我的文件中。
(defun insert-date ()
   (interactive)
   (insert 
        (format-time-string "%m-%d-%Y")))

这个方法可以将日期插入到当前缓冲区中,但是输出结果为01-24-2011nil

如何从输入中删除nil


2
那是 insert 函数的返回值,如果您通过 M-x insert-date 或 M-: (insert-date) 调用它,则不应该出现这种情况(在我的实验中也没有出现)。您是如何调用该函数的? - Ulrich Schwarz
@Ulrich - 把那个作为答案,获得一些积分。我本来也想给出同样的答案,但看起来像是我在挑拨。 :) - Trey Jackson
@Ulrich 我正在使用CTRL-j在缓冲区中评估函数。 - chollida
@Trey:好的,既然你坚持。 ;) - Ulrich Schwarz
2个回答

4

如上所述,insert 返回 nil 并将参数作为副作用插入。由于您声明了函数为 interactive,因此可以使用 M-x 调用它。即使您未声明它为交互式,也可以使用 M-: (insert-date)


4
C-j 插入了 nil。你定义的函数本身是没问题的。C-j 在 scratch 缓冲区中对于调试你编写的 Lisp 是有用的,但你必须记住它会插入返回值。如果你不想要那个,可以尝试使用 C-x C-e

1
谢谢回复,这个问题在上面的评论中已经讨论过了。 - chollida
实际上,在上面的评论中并没有提到C-x C-e,其他建议都是使用M-xM-:从迷你缓冲区运行命令。但是,如果您已经在缓冲区中有要运行的命令,那么C-x C-e可能是一个更好的选择,并且在使用方式上更接近C-j - JSON

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接