【发布时间】:2013-12-06 12:01:45
【问题描述】:
所以我是 emacs lisp 的新手,我有一个很长的文件,其中包含按日期划分的文本墙。有时如果不向上滚动并丢失我的位置,我就无法看到我正在阅读的日期,我决定我希望能够一直看到这个。
在粗略阅读手册、借用代码示例并在黑暗中疯狂尝试之后,以下操作非常有效:
(add-hook 'text-mode-hook
(lambda ()
(setq header-line-format
'(:eval
;;(setq temp-point point)
(setq temp-string
(if (re-search-backward "../../.." nil t nil) (match-string 0) '("no date"))
)
;;(goto-char 'temp-point)
`(temp-string)
)
)
)
)
美中不足只有一个:重新搜索向后移动点。我希望它保持原样。
首先,有没有一个函数可以在不移动点的情况下进行正则表达式搜索并返回匹配项?
其次,无论这是否属实:正如您从注释代码中可以看出的那样,我一直在尝试通过保存点的值然后重置位置来解决它。代码的顺序是假设列表的最后一个元素是返回的元素。
然而,这种假设似乎并不总是成立:只要我取消注释第一行(实际上可以是任何内容,只要它是有效代码),标题就会被设置为空白字符串。
如果有人能告诉我哪里出错了,那就太好了。另外,如果我有任何不良习惯或解决问题的效率较低的方法,请指出。
【问题讨论】:
标签: regex search emacs header lisp