gpt4 book ai didi

Emacs - emacsclient 还是新框架?

转载 作者:行者123 更新时间:2023-12-01 23:01:47 25 4
gpt4 key购买 nike

这是一个相当基本的问题,但是在 emacs 的单独框架(make-new-frame)中打开新文件或在 emacsclient 的实例中打开文件之间有什么实际区别?我可以看到,如果您通过终端工作,差异很明显...但是 emacsclient 是否可以另外限制 (buffer-menu) 或 ido-mode 访问的缓冲区列表到在该特定 emacsclient 实例中打开的缓冲区?

最佳答案

这两种情况实际上没有什么区别,除了服务器设置一些缓冲区本地状态来启用 C-x # (又名 server-edit) .

您可以按照以下建议限制 M-x list-buffers 行为:

(defadvice list-buffers-noselect (before list-buffers-noselect-limit-to-those-for-emacsclient activate)
"When the current buffer is a being viewed by an emacclient, restrict the buffers to those associated with the emacsclient"
(when (and (null (ad-get-arg 1)) server-buffer-clients)
(let ((blist (delete-dups (reduce 'append
(mapcar (lambda (proc) (process-get proc 'buffers))
server-buffer-clients)))))
(ad-set-arg 1 blist))))

现在,当您在 emacsclient 访问的缓冲区中执行 M-x buffer-menu 时,您只能看到同一客户端访问的其他缓冲区。当 emacsclient 未访问缓冲区时,它会正常工作。

我不使用 ido,但我想定制会是类似的(如果这个建议不能按原样工作)。

详细信息是,当您运行 emacsclient 时,打开的缓冲区与服务器进程相关联(可以多个,因为您可以通过多次调用来打开同一个文件) emacsclient)。缓冲区的服务器客户端存储在缓冲区局部变量server-buffer-clients中。

要找出哪些缓冲区与特定的 emacsclient 调用相关联,请找到该 emacsclient 的进程,然后执行:(process-get proc 'buffers) (其中 proc 是特定的 emacsclient 进程 - 在 server-buffer-clients 中找到的列表元素之一)。

这就是建议的全部内容。

关于Emacs - emacsclient 还是新框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com