2010-12-18 15 views
18

私は私のinit.elでこのセットを持っているがいくつかのemacs:で保存し、それを変更する方法〜/ .emacs.d/

(desktop-save-mode 1) 

これは素晴らしい作品.emacs.desktop、Iのみ思っていた:

  • は、どのように私は私がしたい場合は〜/

  • 私は私を求めてから、それをどのように停止することができます〜/ .emacs.dの代わりに.emacs.desktopファイルを保存するためにそれを変更することができます保存する(再構築後にemacsを閉じるときに初めて発生するtは、その後からそれを私は常に起こるしたいものである、イエスを前提とし)

答えて

37

;; 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とDexter Morganに感謝します。

+1

非常に親切に感謝しています:)幻想的に動作します。私が作った2つの追加:(あなたが明らかに間違っているかどうか教えてください)デスクトップファイル - 保存しない "* magit"; magitファイルを無視し、(add-hook 'auto-save-hook(lambda ()(desktop-save-in-desktop-dir))) – tobeannounced

+0

自動保存フックが正常に見えます。 'desktop-files-not-to-save'は正規表現でなければならないので、間違っています。もしあなたが "magit"で終わるものをマッチングしているなら ''。* magit $ "' – phils

+0

を使ってください。この答えの年齢のために、最後の段落はもはや正確ではないようです。 Emacs 25.1.1以降、 'desktop-save-mode'を有効にすると、5秒ごとに' desktop-auto-save'を呼び出すアイドルタイマーが設定されます。 – GDP2

3

どのように私が代わりに〜/ .emacs.d に .emacs.desktopファイルを保存するためにそれを変更することができます〜/

desktop-dirnameをカスタマイズしてください。私は

カスタマイズdesktop-save変数を保存したい場合は

は私が私を求めてから、それをどのように停止することができます。

私は私のために働く、以下を使用し
+0

乾杯、私は運でこれを追加してみました:(デスクトップ・セーブ・モードトン) (setqのデスクトップ-dirnameは「〜/の.emacs .d/") – tobeannounced

+0

@ toobannounced:' customize'は 'setq'と同じではありません。変数のヘルプを読んでください。 – jfs

+0

desktop-dirnameの設定が不十分なようです。 _also_デスクトップパスを変更するまでは動作しませんでした:/ self.herp_derp() – allyourcode

0

私のセッションの構成方法を共有したい

要件:端末からカスタムEmacsセッション

  • ターミナル
  • 保存セッションから
  • ソリューションセッションを復元するために

    1. 送信ファイル:

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

      2. 追加するには〜/ .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.shem_start_foo_2.shem_start_foo_3.shem_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

    関連する問題