3

異なるワークスペースで 3 つまたは 4 つの異なるプロジェクトで作業しているため、通常は 3 つまたは 4 つの emacs を開いています。emacsclient を使用して新しいファイルを開こうとすると、どの emacs に移動するかを制御できません。通常、他のワークスペースの emacs に移動します。どのemacsで開くかを指定する方法はありますか?

1 つの方法は、そのファイルを移動したいサーバーを再起動することですが、それは私が探していた解決策ではありません。

4

2 に答える 2

5

Burton のソリューションは正しい方向に進んでいますが、一時ディレクトリの名前をいじる必要がないため、非常に複雑です。あなたはただ行うことができます:

(defun start-named-server (name)
  (let ((server-name name))
    (server-start)))

そして使用する

emacsclient -s <name> "$@"
于 2013-04-10T00:59:57.210 に答える
3

サーバーソケットファイルに特定の名前を付けてから、emacsclient を呼び出してそのソケットを使用できます。

(defun get-tmpdir ()
    (or (getenv "TMPDIR") "/tmp"))

(defun start-named-server (name)
    (let ((server-name (format "%s/emacs-%s" (get-tmpdir) name))
        (server-start))

ここで、サーバー名を指定できるシェル スクリプト「ec」を定義します。

emacsclient -s ${TMPDIR-/tmp}/emacs-${1?"usage: ec [emacs server name] ..."} "$@"

したがって、emacs で M-: (start-named-server "1") を実行した後、「ec 1 myfile」に移動し、他のすべての emacs で 2、3、4 ... を繰り返すことができます。

于 2013-04-09T18:26:25.660 に答える