送信ファイル:
インストールパッケージを(プラグイン) workgroups2 - >https://github.com/pashinin/workgroups2
追加するには〜/ .emacs.d/init.elにLispコードまたは〜/の.emacs以下:
からnk-server-start
がある>
(setq server-socket-dir "~/.emacs-local/server")
(defun nk-server-start (custom-server)
; (nk-server-start "abe")
(setq server-name custom-server)
(server-start) ; run emacs server
(setq wg-session-file (concat "~/.emacs-local/sessions/" custom-server))
; (setq wg-session-file "~/.emacs-local/sessions/foo")
(workgroups-mode 1)
(wg-switch-to-workgroup custom-server)
)
; Run file in specific server (foo)
; emacsclient -n callback.sh -s ~/.emacs-local/server/foo
; Show server name in title bar
(setq frame-title-format '("" "%b @ " server-name))
; https://www.emacswiki.org/emacs/FrameTitle
; ;; What to do on Emacs exit/workgroups-mode exit?
(setq wg-emacs-exit-save-behavior 'save) ; Options: 'save 'ask nil
(setq wg-workgroups-mode-exit-save-behavior 'save) ; Options: 'save 'ask nil
機能emacsが起動されたときに呼び出されます。 1つの引数 - sesssion名があります。
我々は、端末から次のコマンドを実行して、emacsのセッションfoo
を起動することができます。
setsid emacs --eval '(nk-server-start "foo")' &
我々は、端末からのセッションfoo
でファイルを開きたい場合は、我々は実行する必要があります。
setsid emacsclient -n -s ~/.emacs-local/server/foo file.txt >> /dev/null &
ときに我々すべてのバッファ、設定などはファイルに保存されます~/.emacs-local/sessions/foo
コマンドを実行するとコマンドは大きく、私は怠け者ですので次回は、すべてのバッファが
を復元されます:)私はいくつかのスクリプトを作り、これを容易にするために、私の$PATH
にそれらを追加しました:
em_start_foo.sh
- 実行セッションのみ使用します一度セッションに
#!/bin/bash
setsid emacs --eval '(nk-server-start "foo")' &
em_foo.sh
を開始します -
#!/bin/bash
setsid emacsclient -n -s ~/.emacs-local/server/foo "[email protected]" >> /dev/null &
今、私たちはジュースのセッションにファイルを追加します。端末から実行:
$ em_start_foo.sh # start foo session
$ em_foo.sh file_1.txt # open file_1.txt in foo session
$ em_foo.sh file_2.txt file_3.txt # open file_2.txt and file_3.txt in foo session
もちろん、複数のセッションを並行して実行することもできます。
さんはその後、我々はこのような何かを行うことができ、我々はまた、スクリプトem_start_foo_2.sh
、em_start_foo_2.sh
、em_start_foo_3.sh
、em_start_foo_3.sh
(もちろん$PATH
でどこか)
を作成したとしましょう:
$ em_start_foo.sh # start foo session
$ em_start_foo_2.sh # start foo_2 session in separate emacs
$ em_foo.sh file_1.txt # open file_1.txt in foo session
$ em_foo_2.sh a.txt b.txt # open a.txt and b.txt in foo_2 session
$ em_start_foo_3.sh # start foo_3 session
$ em_foo_3.sh tmp.txt # open tmp.txt in foo_3 session
##### Close emacs foo_2 from gui - session is automatically saved ###
$ em_start_foo_2.sh # start foo_2 session with all buffers restored
パッケージworkgroups2
は本当に素晴らしいです!
私のEmacsはセッションオプションでファイルinitの がで公開されています。そのためhttps://github.com/nexayq/dot_files/blob/master/emacs/dot_emacs_d/init.el
非常に親切に感謝しています:)幻想的に動作します。私が作った2つの追加:(あなたが明らかに間違っているかどうか教えてください)デスクトップファイル - 保存しない "* magit"; magitファイルを無視し、(add-hook 'auto-save-hook(lambda ()(desktop-save-in-desktop-dir))) – tobeannounced
自動保存フックが正常に見えます。 'desktop-files-not-to-save'は正規表現でなければならないので、間違っています。もしあなたが "magit"で終わるものをマッチングしているなら ''。* magit $ "' – phils
を使ってください。この答えの年齢のために、最後の段落はもはや正確ではないようです。 Emacs 25.1.1以降、 'desktop-save-mode'を有効にすると、5秒ごとに' desktop-auto-save'を呼び出すアイドルタイマーが設定されます。 – GDP2