如果用emacsclient打开一个文件, 并指定了-t参数, 如何知道自己是client?

另外, 怎么知道当前总共有几个client?


我知道了, 判断当前是不是client的frame, 可以用下面代码:

(frame-parameter nil 'client)

是client返回不是nil, 不是client返回nil.

怎么知道当前server总共有几个client呢?

(seq-filter (lambda (frame)
              (frame-parameter frame 'client))
            (frame-list))
1 个赞

client不一定都有自己的frame, 可能共用

数进程应该就跑不了。

可能有其他类型的进程.

这个问题目前对我使用没什么影响, 只是好奇emacs有没有专门管理client的功能.

M-x describe-variable server-clients

(let ((server-file (plist-get (process-plist server-process) :server-file)))
  (seq-filter (lambda (p)
              (let ((info (process-contact p t t)))
                (and (not (plist-get info :server))
                     (string= server-file (plist-get info :service)))))
              (process-list)))
;; => (#<process server <3>> #<process server <2>>)

server-clients
;; => (#<process server <3>> #<process server <2>>)
1 个赞