Emacs-EmacClient还是新框架?
这是一个相当基本的问题,但在单独的框架(生成新框架)中从emacs打开新文件与在EmacClient实例中打开文件之间的实际区别是什么?我可以看出,如果你是通过终端工作,区别是显而易见的。。。但是EmacClient是否可以将(缓冲区菜单)或ido模式访问的缓冲区列表额外限制为在特定EmacClient实例中打开的缓冲区?只要emacsserver正在运行,emacs 23中就没有区别。缓冲区列表在每种情况下都是相同的。这两种情况之间实际上没有区别,只是服务器设置了一些缓冲区本地状态以启用Emacs-EmacClient还是新框架?,emacs,emacs23,emacsclient,Emacs,Emacs23,Emacsclient,这是一个相当基本的问题,但在单独的框架(生成新框架)中从emacs打开新文件与在EmacClient实例中打开文件之间的实际区别是什么?我可以看出,如果你是通过终端工作,区别是显而易见的。。。但是EmacClient是否可以将(缓冲区菜单)或ido模式访问的缓冲区列表额外限制为在特定EmacClient实例中打开的缓冲区?只要emacsserver正在运行,emacs 23中就没有区别。缓冲区列表在每种情况下都是相同的。这两种情况之间实际上没有区别,只是服务器设置了一些缓冲区本地状态以启用C-x
C-x
(又称服务器编辑
)
您可以限制M-x列表缓冲区
的行为,就像您提出以下建议一样:
(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))))
现在,当您在EmacClient
访问的缓冲区中执行M-x缓冲区菜单
时,您只会看到同一客户端访问的其他缓冲区。当EmacClient
未访问缓冲区时,它正常工作
我不使用ido
,但我认为定制将是类似的(如果这个建议不能按原样工作)
详细信息是,当您运行emacsclient
时,打开的缓冲区与服务器进程相关联(它可以是多个缓冲区,因为您可以通过多次调用emacsclient
打开同一个文件)。缓冲区的服务器客户端存储在缓冲区局部变量服务器缓冲区客户端
中
要找出哪些缓冲区与EmacClient
的特定调用关联,请找到该EmacClient的进程,然后执行:(process get proc'buffers)
(其中proc
是特定的EmacClient进程-在服务器缓冲区客户端中找到的列表元素之一)
这就是所有的建议。谢谢!正如Jed提到的,当打开一个新框架时,似乎没有什么区别,但是当我使用EmacClient-t打开一个新文件时,上面的建议是有效的。有趣的。。。我将研究ido模式,可能还有ibuffer。非常感谢!谢谢-是的,它看起来基本上是正确的,但是emacs似乎意识到哪个客户端正在访问特定的文件,正如Trey指出的。。。但是谢谢你的意见!