当前位置:  开发笔记 > 运维 > 正文

Emacs - emacsclient还是新架?

如何解决《Emacs-emacsclient还是新架?》经验,为你挑选了1个好方法。

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



1> Trey Jackson..:

除了服务器设置一些缓冲区本地状态以启用C-x #(aka 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))))

现在,当你M-x buffer-menu访问的是一个缓冲区时emacsclient,你只看到同一个客户端访问的其他缓冲区.当没有访问缓冲区时,它正常工作emacsclient.

我没有使用ido,但我认为定制将是类似的(如果这个建议不起作用).

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

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

这就是所有的建议.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有