Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;此Emacs会话具有客户端“0”我怎样才能找到原因呢?_Emacs - Fatal编程技术网

&引用;此Emacs会话具有客户端“0”我怎样才能找到原因呢?

&引用;此Emacs会话具有客户端“0”我怎样才能找到原因呢?,emacs,Emacs,在C-x上,C-C Emacs不时宣布“此Emacs会话有客户端;是否仍要退出?” (我在Windows7上使用Emacs24beta,以防万一。) 我希望通过emacsclientw.exe打开一些文件,但我没有看到任何文件 (我有 git config--global core.editor“/c/lang/emacs-24beta/bin/emacsclientw.exe”) 有没有办法找出哪些缓冲区有客户端?(或者还有什么可以找的吗?) 有没有办法找出哪些缓冲区有客户端 当缓冲区有客户端

在C-x上,C-C Emacs不时宣布“此Emacs会话有客户端;是否仍要退出?”

(我在Windows7上使用Emacs24beta,以防万一。)

我希望通过emacsclientw.exe打开一些文件,但我没有看到任何文件

(我有 git config--global core.editor“/c/lang/emacs-24beta/bin/emacsclientw.exe”)

有没有办法找出哪些缓冲区有客户端?(或者还有什么可以找的吗?)

有没有办法找出哪些缓冲区有客户端

当缓冲区有客户端时,其
服务器缓冲区客户端
变量的值将为非零

我相信有更好的方法,但这段代码应该给出一个客户端缓冲区列表:

(require 'cl) (defvar server-buffers nil) (defun show-server-buffers () (interactive) (setq server-buffers nil) (let ((original-buffer (current-buffer))) (loop for buf in (buffer-list) do (progn (switch-to-buffer buf) (if (and server-buffer-clients (buffer-live-p buf)) (add-to-list 'server-buffers buf)))) (switch-to-buffer original-buffer) (message "server-buffers: %s" server-buffers))) (要求“cl”) (defvar服务器缓冲区为零) (取消显示服务器缓冲区() (互动) (setq服务器缓冲区为零) (let((原始缓冲区(当前缓冲区))) (buf in循环(缓冲区列表) 做 (项目 (切换到缓冲区buf) (如有)(及 服务器缓冲区客户端 (buffer-live-p buf) (添加到列表“服务器缓冲区buf”)) (切换到缓冲区原始缓冲区) (消息“服务器缓冲区:%s”服务器缓冲区)))
我已经调整了
列表流程
,用于列出客户。 使用新定义的命令
list clients
可以获得客户机进程的列表。 每个客户机都与服务器编辑缓冲区一起列出,该缓冲区将客户机作为
服务器缓冲区客户机
中的第一个条目

(定义派生模式客户端菜单模式过程菜单模式“客户端菜单”
“列出当前连接的客户端进程的主模式。”
(删除钩子“列表还原钩子”#列表进程--刷新t)
(添加hook‘列表还原hook#’server-list-clients——刷新nil t))
(defun服务器列表客户端(&可选的仅查询缓冲区)
“显示此emacs会话的所有客户端的列表。
如果可选参数QUERY-ONLY为非nil,则仅处理
将列出对退出标志集的查询。
任何列为已退出或已发出信号的进程实际上都已被消除
上市后。
可选参数BUFFER指定要使用的缓冲区,而不是
\“*客户端列表*\”。
返回值始终为零。”
(互动)
(或(fboundp的流程列表)
(错误“此系统不支持异步子进程”))
(除非(bufferp buffer)
(setq缓冲区(获取缓冲区创建“*客户端进程列表*”))
(带当前缓冲区)
(客户端菜单模式)
(仅查询setq过程菜单)
(服务器列表客户端--刷新)
(列表打印)
(显示缓冲区)
零)
(defalias#'列表客户端#'服务器列表客户端)
(defun服务器客户端缓冲区(客户端)
“返回“服务器缓冲区客户端”中客户端的缓冲区。”
(捕获:找到
(数据列表(buf(缓冲区列表))
(如果(memq客户端(使用当前缓冲区buf服务器缓冲区客户端))
(抛出:找到buf(()()))
(defun服务器列表客户端--刷新()
“重新计算客户端列表缓冲区的客户端进程列表。
此外,请删除已退出或发出信号的任何进程。”
(setq表格列表条目无)
(dolist(p服务器客户端)
(条件((memq(过程状态p)’(出口信号关闭))
(删除进程(p))
((或(不限于流程菜单查询)
(进程查询退出标志p))
(let*((buf(服务器-客户端缓冲区p))
(类型(工艺类型p))
(名称(过程名称p))
(状态(符号名称(过程状态p)))
(buf标签(如果(buffer-live-p buf)
`(,(缓冲区名称buf)
面链接
帮助(格式化消息)
“访问缓冲区“%s”
(缓冲区名称buf))
跟踪链接t
进程缓冲区
操作过程菜单(访问缓冲区)
"--"))
(tty(或(进程tty名称p)“—”)
(cmd
(如果(memq类型)(网络串行))
(let((触点(过程触点p t)))
(如果(均衡器类型“网络”)
(格式“(%s%s)”
(如果(plist get contact:type)
“数据报”
“网络”)
(如果(plist-get-contact:server)
(格式化“服务器在%s上”
(或
(plist获取联系人:主机)
(plist-get-contact:local)))
(格式为“连接到%s”
(plist-get-contact:host)))
(格式)(串行端口%s%s)
(或(plist-get-contact:port)“?”)
(让((速度(plist get contact:speed)))
(如果速度
(格式“速度为%s b/s”)
"")))))
(mapconcat“标识(过程命令p)”))
(推送(列表p(矢量名称状态buf标签tty cmd))
列表条目()()())

很有趣。编辑提交(并关闭其缓冲区)后,它会说:服务器缓冲区:(#)。顺便问一下:有没有比保存C-C-s然后杀死缓冲区C-C-k更好的方法来关闭这样的缓冲区?我已经编辑了我的答案,以排除杀死的缓冲区,还可以正确清除我的服务器缓冲区变量。Falko:您通常会使用
C-x#
而不是
C-xk
来告诉服务器您已经完成了缓冲区和客户机的使用(启动客户机时,您应该会看到这样的消息)。