【发布时间】:2012-08-04 03:01:14
【问题描述】:
如果在非交互式 elisp 程序中使用 goto-line 函数会出现什么问题?它的文档字符串给出了一个警告:
在 Lisp 程序中使用这个函数通常是错误的。 你可能想要的是这样的:
(goto-char (point-min)) (forward-line (1- N))
此外,当我尝试 byte-compile-file 我的初始化文件(包括 goto-line)时,我再次收到类似这样的令人不快的警告:
.emacs:170:19:Warning: `goto-line' used from Lisp code
That command is designed for interactive use only
在非交互式程序中使用goto-line 真的那么危险吗?与此相关,为什么建议的forward-line 解决方案更可取?
【问题讨论】:
-
不确定 goto-line 将如何以交互方式工作,它会转到当前缓冲区中的一行
-
@JonLin 你可以在EmacsWiki:AUCTeX:
th-evince-sync找到一个非交互使用goto-line的例子。 -
event_jr 已经回答了您提出的问题,但您仍然为什么要这样做?可能有更好的方法来完成你真正想要的。另外,我要指出,如果缓冲区被缩小到某一行,可能不会像你想象的那样。
-
@scottfrazer 乍一看,由于它的名字,
goto-line语句似乎是进入第 n 行的更直观(和紧凑)的方式比forward-line成语。此外,我在 Internet 上发现了一些以非交互方式使用goto-line的程序。现在我知道goto-line可能会产生一些开发人员可能没有预料到的副作用。至于缩小,forward-line也被限制在缓冲区的可访问部分。