首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs - emacsclient还是新框架?

Emacs - emacsclient还是新框架?
EN

Stack Overflow用户
提问于 2009-10-08 21:24:41
回答 2查看 1.9K关注 0票数 9

这是一个相当基本的问题,但是在emacs的单独框架(make- new - frame )中打开新文件和在emacsclient实例中打开文件有什么实际区别呢?我可以看到,如果你是通过终端工作,区别是显而易见的……但是emacsclient是否可以将(buffer-menu)或ido-mode访问的缓冲区列表限制为在该特定emacsclient实例中打开的缓冲区?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-08 23:08:58

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

您可以通过以下建议限制M-x list-buffers行为,就像询问一样:

代码语言:javascript
复制
(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的特定调用相关联,请找到该客户端的进程,然后执行:(process-get proc 'buffers) (其中proc是特定的客户端进程-在server-buffer-clients中找到的列表元素之一)。

这就是所有的建议。

票数 5
EN

Stack Overflow用户

发布于 2009-10-08 21:42:08

只要emacsserver正在运行,emacs 23就没有区别。缓冲区列表在每个中都是相同的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1540581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档