emacs - 如何在 Emacs 中识别缓冲区的所有者/创建者

标签 emacs elisp

如何检查在 Emacs 中创建缓冲区的人的身份,然后再检查是否是同一用户访问该缓冲区?我的意思是“我是谁?”在 Unix 命令中.. 然后检查同一用户是否正在访问该文档? --> 我想要在我自己的代码中实现这个功能或方法

最佳答案

注意缓冲区文件之间的区别:文件是位于硬盘上的东西,例如.jpg图像文件或 .mp3 aufio 文件或 .txt 文件。其中一些文件——通常是文本文件——你可能想用 Emacs 编辑。为此,您可以将文件加载到 Emacs 中 - 这在 Emacs 术语中称为“访问”文件。文件的内容显示在缓冲区中。但请注意,您也可能有一个根本不与文件关联的缓冲区 - 例如,如果您在未指定文件的情况下启动 Emacs,则会显示 *scratch* 缓冲区。

因此,文件和缓冲区是非常正交的概念,尽管您通常通过访问文件来创建缓冲区,并通过写入文件来保存缓冲区的内容。 (您可以通过键入 C-x b buffer-name 创建一个不与文件关联的缓冲区,其中 buffer-name 是未使用的标识符通过任何已经存在的缓冲区。)

缓冲区只存在于正在运行的 Emacs 中。这就是为什么到目前为止您获得的评论和答案可能不是您要寻找的原因:缓冲区的创建者/所有者的概念令人困惑,因为显然是那个坐在键盘前的人时刻。

谈论文件的所有者/创建者更有意义。在多帐户设置中,多个用户可以写入同一个磁盘,因此他们可能有权访问相同的文件。现在知道谁拥有访问权限会很有趣,尤其是谁拥有该文件或文件的最后修改时间。在 Elisp 中,您可以使用该函数

(file-attributes FILENAME &optional ID-FORMAT)

获取与文件关联的属性列表。如果您当前的缓冲区正在访问一个文件,您可以将该函数与该函数结合使用

(buffer-file-name &optional BUFFER)

返回缓冲区正在访问的文件。对于未访问文件的缓冲区,此函数返回 nil

但请注意,您可能感兴趣的某些信息无法通过 (file-attributes ...) 获得,例如上次访问文件的人员和/或上次修改文件的人员。这不是 Emacs 的错,而是操作系统没有存储这些信息。

另外请注意,文件的当前所有者可能不一定是创建它的人,因为具有所需权限的人可以chown创建后的文件。

要在 whoami 的意义上接收有关当前用户的信息,您可以查看变量

user-login-name
user-real-login-name
user-full-name

通过键入 C-h v 变量名

关于emacs - 如何在 Emacs 中识别缓冲区的所有者/创建者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11675212/

相关文章:

xml - emacs nxml-mode 中的折叠标签

emacs - emacs中如何设置ttf字体

emacs - 如何在 Emacs 中打开/关闭特定模式?

emacs - 在 emacs 中自动转义拉出的字符串

Emacs nXhtml 漏洞

emacs - 如何禁用 find-name-dired 的默认 -iname 选项?

emacs - 在 emacs 24.3.1 中使用 CEDET

emacs - 列表项评估

git - 比较 MAGIT 中两个不同分支的 foo.bar

emacs - 我要寻找什么来调试这个 elisp?