23

私はinit.elにこれを設定しています

(desktop-save-mode 1)

これはうまく機能しますが、私だけが疑問に思っていました:

  • ~/ ではなく ~/.emacs.d に .emacs.desktop ファイルを保存するように変更するにはどうすればよいですか?

  • 保存するかどうかを尋ねないようにするにはどうすればよいですか(再起動後にemacsを初めて閉じたときにのみ発生します。それ以降は、はいと想定されます。これは私が常に望んでいることです)

4

3 に答える 3

45

私は私のために働く以下を使用します:

;; Automatically save and restore sessions
(setq desktop-dirname             "~/.emacs.d/desktop/"
      desktop-base-file-name      "emacs.desktop"
      desktop-base-lock-name      "lock"
      desktop-path                (list desktop-dirname)
      desktop-save                t
      desktop-files-not-to-save   "^$" ;reload tramp paths
      desktop-load-locked-desktop nil
      desktop-auto-save-timeout   30)
(desktop-save-mode 1)

さて、私は実際に設定してから、物事を開始するために(desktop-save-mode 0)使用します:M-x my-desktop

(defun my-desktop ()
  "Load the desktop and enable autosaving"
  (interactive)
  (let ((desktop-load-locked-desktop "ask"))
    (desktop-read)
    (desktop-save-mode 1)))

しかし、それは私のセッションが100ファイルを超えることが多く、主にトランプを介しているためです。そのため、デスクトップファイルを壊さずに、手動タスクでロードすることを好みます:)

Emacs Wikiをチェックすることをお勧めします: http ://www.emacswiki.org/emacs/DeskTop

デフォルトの機能にはいくつかの便利な拡張機能があります。特に、セッションの途中でデスクトップを自動保存する方法を追加することをお勧めします。これは、Emacsが数日間実行されているときにシステムがクラッシュし、その間にデスクトップが保存されていない場合に非常に煩わしいためです

Emacs 24.4以降、デスクトップファイルはデフォルトで定期的に自動保存されます。desktop-auto-save-timeout変数を参照してください(上記のブロックにも追加しました)。これについてコメントしてくれたGDP2とDexterMorganに感謝します。

于 2010-12-19T21:04:25.420 に答える
3

~/ ではなく ~/.emacs.d に .emacs.desktop ファイルを保存するように変更するにはどうすればよいですか?

変数をカスタマイズしdesktop-dirnameます。

保存するかどうかを尋ねないようにするにはどうすればよいですか

変数をカスタマイズしdesktop-saveます。

于 2010-12-18T09:47:24.193 に答える
0

私のセッションがどのように構成されているかを共有したかった.

要件:

  1. 端末からカスタム emacs セッションにファイルを送信する
  2. 端末からセッションを復元する
  3. セッションを保存

解決:

  1. パッケージ(プラグイン)のインストール workgroups2 -> https://github.com/pashinin/workgroups2

  2. ~/.emacs.d/init.el または ~/.emacs に次の Lisp コードを追加します。

->

(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

関数nk-server-startは、emacs の起動時に呼び出されます。1 つの引数 (セッション名) があります。

fooターミナルから次のコマンドを実行して、emacs-session を開始できます。

setsid emacs --eval '(nk-server-start "foo")' &

fooターミナルからセッションでファイルを開く場合は、次を実行する必要があります。

setsid emacsclient -n -s ~/.emacs-local/server/foo file.txt >> /dev/null &

セッションを閉じると、すべてのバッファ、設定などがファイルに保存されます~/.emacs-local/sessions/foo

setsid emacs --eval '(nk-server-start "foo")' &次回コマンドを実行すると、すべてのバッファが復元されます

コマンドが大きく、私は怠け者なので:)$PATHこれを簡単にするために、いくつかのスクリプトを作成して追加しました。

em_start_foo.sh- セッションを実行します。セッションを開始するために 1 回だけ使用します

#!/bin/bash

setsid emacs --eval '(nk-server-start "foo")' &

em_foo.sh- セッションにファイルを追加

#!/bin/bash

setsid emacsclient -n -s ~/.emacs-local/server/foo "$@" >> /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 初期化ファイルは、https ://github.com/nexayq/dot_files/blob/master/emacs/dot_emacs_d/init.el で入手できます。

于 2016-07-29T09:46:20.150 に答える