我正在尝试将当前行号设置为 Elisp 中的变量,但不断收到 void-variable 错误!
代码是:
(setq x what-line)
我还想将缓冲区中的总行数设置为一个变量,但得到同样的错误?!
我正在尝试将当前行号设置为 Elisp 中的变量,但不断收到 void-variable 错误!
代码是:
(setq x what-line)
我还想将缓冲区中的总行数设置为一个变量,但得到同样的错误?!
(setq x (line-number-at-pos)
y (line-number-at-pos (point-max)))
如何了解这种情况?尝试M-x find-function
RET what-line
RET查看源代码what-line
。阅读simple.el
(其中what-line
定义的文件)是熟悉基本 Elisp 编程的好方法。
(setq x (what-line))
上一个答案中提到的 line-number-at-pos 函数仅考虑缓冲区的可访问部分。如果缓冲区“变窄”,它不会计算隐藏线,所以这可能会相当混乱。
如果您阅读 what-line 函数的代码,您可以看到它如何处理缩小的缓冲区(实际上 what-line 通过调用 line-number-at-pos 起作用)。