【问题标题】:Setting the line number to a variable in Emacs在 Emacs 中将行号设置为变量
【发布时间】:2014-04-08 06:17:15
【问题描述】:

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

代码是:

(setq x what-line)

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

【问题讨论】:

  • 只是语法错误。将what-line 括在括号中,因为它是函数而不是变量。
  • (what-line) 返回 Line 96 而不是 96... 这非常适合小缓冲区显示。

标签: elisp


【解决方案1】:
(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 编程的好方法。

【讨论】:

  • 根据您的 Emacs 版本,此功能可能不可用。你可以用这段代码的 sn-p 来近似它:(1+ (count-lines 1 (point)))
【解决方案2】:
(setq x (what-line))

【讨论】:

  • 这有利于显示,但不适用于纯数字.. 它输出Line 54.. 这对于我有时想要的非常有用,所以 +1。谢谢。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2015-03-15
    • 2013-01-20
    相关资源
    最近更新 更多