9

我正在尝试将当前行号设置为 Elisp 中的变量,但不断收到 void-variable 错误!

代码是:

(setq x what-line)

我还想将缓冲区中的总行数设置为一个变量,但得到同样的错误?!

4

3 回答 3

16
(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 编程的好方法。

于 2009-02-05T11:34:38.177 回答
3
(setq x (what-line))
于 2009-02-05T10:18:38.410 回答
2

上一个答案中提到的 line-number-at-pos 函数仅考虑缓冲区的可访问部分。如果缓冲区“变窄”,它不会计算隐藏线,所以这可能会相当混乱。

如果您阅读 what-line 函数的代码,您可以看到它如何处理缩小的缓冲区(实际上 what-line 通过调用 line-number-at-pos 起作用)。

于 2012-10-08T18:24:15.233 回答