🔗 minorugh/.emacs.d/early-init.el
Emacs27から導入された eary-init.el
は、init.el
でGUIやパッケージシステムの初期化が実行される前にロードされるので、UI関係や package-enable-at-startup
のようなパッケージ初期化プロセスに影響を与える変数を先に書くことで起動を早くすることが出来るようです。
GC の閾値を最大にしておくことで GC を実質止めることができます。とりあえず書いておけば速くなる系なのでおすすめです。
;; Defer garbage collection further back in the startup process
(setq gc-cons-threshold most-positive-fixnum)
eary-init.el
の先頭に書きます。
Emacs27では、package-initialize
が 2回実行されます。
1回は、初期化ファイルの評価中に、もう 1回は、初期化ファイルの読み取りを終了した後にです。
eary-init.el
に以下を書いて、1回目の実行を抑制することで少し早くなります。
;; For slightly faster startup
(setq package-enable-at-startup nil)
;; Always load newest byte code
(setq load-prefer-newer t)
;; Inhibit resizing frame
(setq frame-inhibit-implied-resize t)
メニューバー、ツールバー、スクロールなどは、ここで無効にする方が速くなります。 (初期化される前)
ここで最大化を宣言しておくことで toggle-frame-fullscreen
コマンドによる「最大化<->フルスクリーン」のトグル表示を可能にします。
;; Faster to disable these here (before they've been initialized)
(push '(menu-bar-lines . 0) default-frame-alist)
(push '(tool-bar-lines . 0) default-frame-alist)
(push '(vertical-scroll-bars) default-frame-alist)
(push '(fullscreen . maximized) default-frame-alist)
初期設定を読み終えるまでに目まぐるしく変わる画面表示を抑止しています。 そこまでする必要はないのですが、起動時間の短縮にもなるようなので採用しました。
;; Suppress flashing at startup
(setq inhibit-redisplay t)
(setq inhibit-message t)
(add-hook 'window-setup-hook
(lambda ()
(setq inhibit-redisplay nil)
(setq inhibit-message nil)
(redisplay)))
Emacsが設定を読み込む初期段階の背景色は白です。 自分は、タークテーマを使っているので、起動時から即黒背景になるようにここで設定しています。
;; Startup setting
(setq inhibit-splash-screen t)
(setq inhibit-startup-message t)
(setq byte-compile-warnings '(cl-functions))
(custom-set-faces '(default ((t (:background "#282a36")))))
GUI Emacsの常駐化は、ハードルの高い課題なので疑似環境ということで紹介します。
C-x C-c
で閉じれないようにする→他の用途に置き換えますEmacsは、起動オプションに --iconic
を付すことで最小化起動します。
emacs --iconic
Linuxの場合、「セッションと起動」を立ち上げて「自動開始アプリケーション」に上記設定を追加するといいです。