Emacs:起動時の画面をカスタマイズする
Emacsを起動したとき、よく使うファイルやディレクトリが最初から開いていると便利だと思いませんか?
今回は、起動画面をカスタマイズする方法について説明します。
追記 2015-10-10 desktopを追加しました。
initial-buffer-choiceをカスタマイズする方法
起動時の画面は customize-option
で変更することができます。 M-x customize-option
を実行し、 initial-buffer-choice
を指定してください。カスタマイズバッファが開きますので、 Value Menu
ボタンを押します。選択肢は次の通りです。
- Startup screen (デフォルト)
- Directory
- File
- Remember Mode note Buffer
- Function
- Lisp scratch buffer
編集したら、C-x C-sで保存して、Emacsを再起動してみましょう。
それでは、おすすめの設定を紹介しましょう。
テキストファイルを起動時に開く
まずは、 Value Menu
に File
を指定する方法です。
起動時に、いつも同じテキストファイルを自動で開きます。座右の銘、習慣、課題などを書いておくといい感じなので、僕はこれがお気に入りです。
例えば、org-modeのファイルを指定して
~/Dropbox/Documents/memo.org
とすることで、いつも起動時に同じファイルが開きます。
また Value Menu
に Directory
を指定して、よく使うディレクトリを指定しておくと Dired
が開きますので、これも便利かも。
Functionを指定して、org-agendaを開く
次は、 Value Menu
に Function
を指定した場合です。
例えば、org-agenda のように動的にバッファが生成されるような場合、前述の方法は使えませんので、 function
を使います。
まず次のような関数を定義しておき、init.el等で読み込まれるようにしておきます。
(defun my-initial-buffer ()
(interactive)
(org-agenda nil "a" nil)
(org-agenda-manipulate-query-add) ; inactiveなエントリーも表示
(get-buffer "*Org Agenda*") ; バッファを返す必要がある
)
次にカスタマイズ画面で initial-buffer-choice
を Function
に変更し、 my-initial-buffer
を指定しておけば、起動時に org-agenda が表示されます。
他にも選択肢はありますが、たぶん重要なのはこれぐらいかな? Remember Mode note Buffer
のほうは使っていないので省略しました。すみません。
Lisp scratch buffer
Value Menu
に Lisp scratch buffer
を指定した場合、普通に *scratch*
バッファが開きます。
ただし、実は initial-buffer-choice
をいじらなくても、 inhibit-startup-screen
をonすると起動時のロゴ画面(About GNU Emacs)が表示されないので、結果的に *scratch*
が開きます。
ちなみにロゴ画面は、F1キーを押してから C-a すれば、いつでも開くことができます。
Desktopという標準パッケージを使う
Emacsに標準でインストールされている desktop
というパッケージを使うと、Emacs終了時の状態を、再起動後に復元してくれます。
保存の対象として
- いくつかのグローバル変数
- ファイルバッファ(特定のファイルを開いているバッファ)
- メジャーモード
- ディレクトリ
- ポイント(カーソル)の位置
- 選択範囲
- バッファ読取専用の状態
- いくつかのロカール変数
- フレームとウィンドウの設定
があります。さらに設定を追加することで
- kill-ring(コピーの履歴)
も保存されます。
上の説明にあるように、例えば、org-agendaのように動的に生成されるバッファは復元されません。
またtext-scale-modeを使って文字サイズを大きくしていたとしても復元されません。
この機能を有効にする場合は、カスタマイズ変数 desktop-save-mode
を ONにしておけば、Emacs終了時にdesktopの保存ディレクトリを聞かれるので、適宜、指定してもらえればOKです。
kill-ringを対象にする場合はカスタマイズ変数 desktop-globals-to-save
に kill-ring
を追加します。