在Emacs中,缓冲区的运行时

7

有没有一种方法可以在Emacs中找出缓冲区已经活动了多长时间?

M-x list-buffers会列出它们,但无法推断出缓冲区存在的时间。


1
这是一个挑战! - Déjà vu
3个回答

7

没错。不过这只是因为我为你写了一些可以完成这个任务的内容。好吧,实际上是我为自己写的,但过去三四年来一直在使用它,现在已经离不开它了。

https://github.com/hardaker/elisp-buffer-timer/


3

有一种更方便的列出缓冲区的模式叫做ibuffer。它内置的标记命令之一是分配给.(句号)键的“标记早于ibuffer-old-time的缓冲区”,这是一个可自定义的变量,默认为72小时。 ibuffer模式包含在标准的emacs-24发行版中。

这是我的.emacs片段:

(when (require 'ibuffer nil 'noerror)
  (define-key global-map "\C-x\C-b" 'ibuffer))

2
请注意,ibuffer使用buffer-display-time,它告诉您某个缓冲区上次显示的时间,这与其存在的时间不同。 - legoscia

1
我认为没有任何预定义的方法来跟踪缓冲区的生命周期。但是你可以定义自己的函数来实现这一点。起点可能是这个钩子。注意它被称为get-buffer-create,通常用于创建一个缓冲区。
,----
| buffer-list-update-hook is a variable defined in `buffer.c'.
| Its value is nil
| 
|   This variable can be risky when used as a file-local variable.
| 
| Documentation:
| Hook run when the buffer list changes.
| Functions running this hook are `get-buffer-create',
| `make-indirect-buffer', `rename-buffer', `kill-buffer',
| and `bury-buffer-internal'.
`----

另一方面,正如其他帖子所暗示的那样,也许您追求的是给定缓冲区显示的时间长度或自其首次显示以来的时间。这是完全不同的东西。如果您想要缓冲区寿命,则我认为 get-buffer-create 是一个很好的起点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接