Emacs の設定
はじめに
Debian パッケージがインストールされているならばそれを優先する
:Eating your own dog food - Wikipedia
Emacsに関連するDebianパッケージを幾つかメンテナンスしているので, 可能な限りDebianパッケージを使うことにしています.
leaf.elでEmacs のパッケージの導入と設定を行なう
設定は Org mode で書きたい
以前こんなブログ記事を書きました→ Emacsの設定ファイルをorgで書く
というわけで, 設定は Org Babel で書いています.
本ファイル(README.org
) から,
Makefile 内の以下のスクリプトで ~/init.el
を生成し, byte-compile します.
設定ファイルのヘッダ
出力される init.el
用のヘッダは以下の通り.
lexsical-binding
を有効にしておきます.
起動の高速化
この辺は Emacs の起動時間を""詰める"" を参考に.
設定は early-init.el
に移動した方が良いのかもしれないかな.
Emacs Profiler
起動の高速化を検証するために, 必要に応じて有効に.
Magic File Name を一時的に無効化
これだけで 0.2秒縮まった. これは知見である.
GC の設定
起動時に garbage collection を発生させない様にする.
メモリ喰いな拡張を入れている場合には,
安易に gc-cons-threshold
を上げるのは考えものである.
「gc が走る→大きな領域を掃除するのでその間 emacs が止まる」
という事を頻繁に経験することになるだろう.
とはいえ, デフォルト値のままだと
起動時に結構 garbage-collect が走って遅くなるので,
起動時は most-positive-fixnum
にしておいて,
起動後に emacs-startup-hook
で default に戻すようにしてみた.
ついでに idle-timer
で入力が無い時に GC を走らせることに.
early-init.el
Emacs >= 27 からの機能だが, いまいち使い方がわからん.
ディレクトリ構成の修正
分割した設定ファイル群やパッケージでinstallしたパッケージ
の置き場所は user-emacs-directory
以下にまとめています。
ディレクトリ構成は以下のようにしました:
~/.emacs.d/ |-- Makefile ← byte-compile 用の rule |-- README.org ← 本ファイル.`org-babel-tangle' で init.el を生成 |-- pkg | |-- elpa/ ← package.el で導入したパッケージが置かれる場所 | `-- el-get/ ← el-get で導入したパッケージが置かれる場所 `-- share/ ← (基本的に)参照するだけの資源置き場所 ~/.cache/emacs ← 一次ファイルの置き場所
上記ディレクトリ構成を設定ファイルで使用するために ディレクトリ配置を宣言しておきます。
その他, 良く使うディレクトリもここで設定しておきます.
Byte-Compile 時の Common Lisp の読み込み
幾つかの関数で Common-Lisp
的挙動が期待されているので,
cl-lib
を読み込んでおきます.
ついでに Emacs 27 以降は cl が読み込まれていると `Package cl is deprecated' が表示されるので, これを止めておく.
Package 関連: package.el, leaf.el, el-get
leaf.elのおかげで, 無いと途方に暮れるパッケージ以外のインストールは無視できるようになります.
package.el
パッケージは基本的に package.el
で導入するので, 先ずはその設定.
exec-path-from-shell
: 環境変数の読み込み
shell(zsh)で設定した PATH
などの環境変数をEmacsに引き継ぐために
purcell/exec-path-from-shell を使います.
今の所
DEBEMAIL
DEBFULLNAME
GPG_AGENT_INFO
GPG_KEY_ID
PASSWORD_STORE_DIR
PATH
SHELL
SKKSERVER
TEXMFHOME
WSL_DISTRO_NAME
http_proxy
を読み込んでいます(多いな…).
認証関連: plstore
, password-store
など
-
leaf-plstore
でplstore
が使えるようになったので, その設定をしておく. -
auth-password-store
で auth-source としてpassword-store
を使う.
といった事をしている.
独自関数
細かい独自関数, など.
ファイル名を minibuffer におさまる様に整形
zsh prompt風味.
空になったファイルを尋ねずに自動削除
ゴミが残らないし, 地味に便利.
scratch を殺さない. 消したら再生成
…元ネタがどこだったのか忘れてしまった…
SOMEDAY 行末の無駄な空白/改行を削除する [/]
@see 無駄な行末の空白を削除する(Emacs Advent Calendar jp:2010)
ただし, RD や Markdown だと空白行に意味があったりするので, 必要に応じて拡張子で判断して外している.
-
[ ]
cl 依存の書き換え?
ターミナルで C-M-
を打つために
詳細は
Using C-M-% to do a query-replace-regexp in Emacs running in Mac terminal
を参照のこと. terminal では C-%
(つまり Control-Shift-5
)が入力できない, という話.
代わりに C-x @
を C-M-
に解釈させるように設定しておく.
言語の設定
最近のEmacsはlocaleから文字コードを自動判別するらしいので, 以前良く設定していた以下は不要らしいですね(ホントかな…?)。
なお, m17n.org の消滅によって上記設定に関する情報の参照元が消えた。 適切な参照元はどこだろう…?
cp5022x.el
Emacs23 から内部が Unicode ベースになっています。
しかし文字コードの変換はGNU libcのiconvをベースにしているため,
機種依存文字を含む文字コードの変換をうまく行なえません。
そこで言語設定前に cp5022x.el
をインストールすることにしています。
主にEmacs本体, および同梱されている拡張に関する設定
終了時に custom.el
を消す
設定ファイルに極力移す.
customize
で設定していたアレコレ
custom.el
にある設定は極力こちらに移すようにしている.
- 大抵の場合ターミナル内で
-nw
として起動するし, メニューは触ったことないので使わないので, フレーム, ツールバー等を非表示にする. -
.elc
と.el
の timestamp を比較し, 新しい方を読み込む (load-prefer-newer
は Emacs >= 24.4 から). - yes or no を y or n に
他にもイロイロと. 設定が増えてきたら分ける.
startup
: 起動は静かに
hl-mode
: 現在行のハイライト
選択リージョンに色付け
show-paren-mode
: 対応する括弧を強調表示
linum-mode
: 行番号表示
必要に応じて有効にするので, 基本使わない.
通常はモードラインに行番号や桁番号を表示しないようする.
ついでに linum-mode
を有効にした場合の桁表示を 5 桁に.
byte-compile 関連
- debug は表示しない: 必要に応じて t に変更する
- Compile-Log の非表示: ほとんど見ないし.
- Warning の抑制: これもほとんど見ないし.
他にも増えそうだが
autorevert
: ファイルが変更されたら再読み込み
savehist
: 変更履歴を保存
ファイル, デイレクトリ整理
~/.emacs.d/
以下にファイルが転がるのがなんか嫌なので,
気がつく度に設定している.
他にもイロイロありそう.
bookmark
はちゃんと使いこなしたい所ではあるが.
eldoc
: emacs-lisp document
minibuffer では eldoc にお黙り頂く。
midnight
: 一定期間使用しなかった buffer を自動削除
uniquify
: モードラインのファイル名にディレクトリも表示する
whitespace
: 空白の強調表示
背景も変えようかなぁ…
saveplace
: 前回の修正位置を記憶する.
記憶の保存先を ~/.emacs.d/tmp/emacs-places
に変更.
time-stamp
: 保存時に timestamp を自動更新
デフォルトではいろいろと衝突したので
更新文字列を変更し, $Lastupdate: 2
($は半角) があったら
timestamp を更新する様にした.
モード独自の設定(例えば Org とか)に関しては別途.
tramp
: ssh 越しにファイルを編集
browse-url
ブラウザ呼び出しは xdg-open/open
に丸投げ.
server
: Emacs server
buffer の印刷
tab-bar-mode
: Emacsの「tab」
Emacs27から同梱された tab-bar-mode
に elscreen から乗り換えた.
手癖で "C-o" を prefix で使いたいので, その設定をしていたり.
beacon
: buffer 切り替え時の行の強調表示
recentf
: 最近使ったファイル履歴の保管
結局履歴を貯める設定をしている事になっている. ディレクトリの履歴も取れるので recentf-ext を入れておく
all-the-icons-in-terminal
: ターミナルでもicon fontを使いたい。
all-the-icons.elのデータを修正して, icons in terminalを修正した 自作フォントのデータを読みに行くようにしてみました。
SOMEDAY East Asian Ambiguos 対応 [0/1]
East Asian Ambiguosを2文字幅にして, ついでに CJK 以外の East Asian Ambiguosと絵文字も2文字幅にするようにしています。 拙作の修正ロケールはこちら: https://github.com/uwabami/locale-eaw-emoji
-
[ ]
最近, EAWは一文字幅強制の方が良いかなぁ, とか悩み中.
macOS対応
最近良く触る様になったので設定している。
まあ, イマイチ慣れない訳ですけれど
Windows(WSL2)対応
カレンダー設定
表示の更新と japanese-holidays
による日本の休日の追加
キーバインドの設定
既に手癖になってしまっているアレコレ.
特に [home]
と [end]
は無いと途方に暮れます.
migemo
: インクリメンタル検索
無いと途方に暮れる.
emacs-w3m
:
SOMEDAY eww
: 内蔵ブラウザ [0/3]
リンクを簡単に辿る(Hit-a-Hint) のために ace-link
も入れておく
-
[ ]
背景色の指定 -
[ ]
幅の強制
日本語入力: ddskk
Daredevil SKK (DDSKK) をメインで使用中.無いと途方に暮れる.
ちなみにGTKが有効になっていると gtk-immodule
なんかと衝突するので
~/.Xresources
で xim を無効にしておくと良い.
例えば以下の様に:
Emacs 本体側の設定(ddskk)
実際の設定は別ファイルで行なわれるため ここでは設定ファイルの位置変更を変更している.
DDSKK 本体の設定
基本動作
byte-compile の為の読み込み
sticky shift: sticky shift を参照のこと. ddskk の 14.2 以降から同梱されるようになった(ありがたい)
変換候補の表示位置
候補表示件数を2列に
日本語表示しない
メニューを日本語にしない -> toolbar 非表示だし.
注釈の表示
インジケータの表示のカスタマイズ
インジケータを左端に表示
mode-line が動くのが許せないので, ちょっと修正
カーソルには色をつけない
キーバインド
半角カナを入力
Enter で改行しない
"「"を入力したら"」"も自動で挿入
句読点変換ルール
全角記号の変換: @ での日付入力は使わない
送り仮名が厳密に正しい候補を優先
辞書の共有
変換候補を縦に表示
辞書の設定
インクリメンタルサーチ
minibuffer 内では強制的に skk off. インクリメンタルサーチは migemo に任せることに.
校正, 辞書等
redpen-paragraph
: redpen による文章校正
ispell
: spell checker
ispell はコマンドとして aspell
を利用する.
flyspell
: on-the-fly spell checker [0/1]
flyspell-mode は別途有効化しておいた方が良いのかもしれない
-
[ ]
flyspell-prog-mode との switch が欲しい
lookup
: 電子辞書の検索
EPWING化した辞書群を検索するために lookup-el
ver. 1.4 系列を利用
text-adjust
: 全角文字の撲滅
補完: vertico
, marginalia
, consult
最近話題になりだしたので, ちょっと使い始めてみた. 基本機能の拡張なので, 挙動が手に馴染む感じがとても良い.
helm, ivy の無効化
依存する拡張がまだまだ多いので, 一度インストールして邪魔しないようにしておくことに.
無視する拡張子の追加設定
とりあえず, 無視するファイルの拡張子を指定しておく.
vertico
: 本体
find-fileでHelmみたいにC-lでディレクトリを遡る - emacs
より, C-l
で一つ上の階層へ上がれる様にしたり.
marginalia
: リッチな注釈(Enable richer annotations)
行揃えが微妙. あと, ファイル名を省略表示できないのかな? ⇒ Better truncation method for file names #70
consult
: 便利コマンド集
とりあえず recetnf が使えないと途方に暮れるので
consult-recent-file
のカスタマイズのみ.
consult-ghq
: ghq を consult で.
projectile かなんかを使う方が良さげだが, とりあえず.
orderless
: 補完候補の選択
イロイロと凝れそうだけど, とりあえずはデフォルトのままで.
翻訳
DeepL 翻訳
ブラウザ呼び出し
Google 翻訳
Copy & Paste:
Linux では xclip
を利用
clipboard と PRIMARY の同期には gpaste
を使っている.
macOS では pbcopy/pbpaste
を利用.
pbcopy/pbpase
の呼び出し方が変わった? 動かない時がある様な。
ibuffer
: buffer の操作
buffer を眺めるのは ibuffer が好み
wanderulst
: MUA の設定
MUA として Wanderlust を使っている
Emacs 本体側の設定(wanderlust)
Emacs 本体での設定は以下の通り. Wanderlust 自体の設定は別ファイルで行なわれる.
ここでは wl-init-file
を指定することで, 設定ファイルを明示している.
割と /etc/emacs/site-start.d/65wl-beta.el
と重複している気がするが.
Wanderlust 本体の設定
実際の設定は以下の通り
byte-compile の準備
依存/追加ライブラリのインストールと読み込み
rail
SEMI や FLIM などの UA の表示に rail を使っている. ちなみに rail を有効にすると, 以下の様に User-Agent が表示される
cp5022x を使う
ISO-2022-JP を CP50220 として扱う. Wanderlustと文字コード も参照のこと.
SEMI の追加設定
HTML メールを表示するために eww を使う. mime-setup がロードされる前に記述する必要あり.
どのアプリケーションで開くか → xdg-open
に丸投げ.
~/.mailcap
自体は以下
MIME の例の保存先の変更
text/plain より html を優先 (- -;)
音を鳴らすアレやコレの無効化
個人情報の設定
具体的な設定内容は以下のファイルに置いている
設定している内容は以下の通り
自身のメールアドレスと購読メーリングリストの設定
送受信用サーバの設定
受信(IMAP)
送信(SMTP)
From に応じて送信サーバをきりかえる.
本来はメール作成時/返信時の template の切り替えなのだれど, 送信時の SMTP の設定を from に合わせてきりかえるようにする. default に二重に指定しているのは, 一度別のアカウントに切り替えた後に再びトグルして戻って来た際に元に戻す(上書き)するため.
ssh tunnel を自動的にやる事はできないモンだろうか (送信時に open して, 送信後に close する, みたいなの).
ついでに template の切り替えに関して幾つか設定.
draft-mode
で C-c C-n
をするとテンプレートを切り替え
from に応じて wl-from, wl-envelope-from, 送信 smtp サーバを変更する送信時に変更
送信時に自動的に wl-draft-config-alist を適用…しない?
基本設定
imap 関連
デフォルトの認証設定 フォルダ名は UTF-7 でエンコードされているので, 表示する際にこれをデコードする
非同期チェック
フォルダの位置の default からの変更
~/.cache/wanderlust/
に集約している
local の Mail folder の位置
local フォルダの設定:
.lost+found
は elmo-maildir-folder-path
からの相対パスになっていることに注意
folders の位置の変更
Drafts, Trash の置き場所
アドレス帳
LDAP サーバからアドレスを引くことも可能. 以前は GCALDaemon を使って local に ldap サーバを上げていたのだけれども, Google Contacts の API が変わったらしく GCALDaemon で LDAP サーバは使えなくなったのでコメントアウト.
パスワードの保存先
フォルダ編集時に backup を作成しない.
FCC, BCC の設定
fcc を既読にする場合は以下.=wl-fcc= が nil の場合には意味は無い
bcc は常に自身に.
起動時に %INBOX
のみをチェック
フォルダ選択時の初期設定
imap の namespace を毎度入力するのが面倒なので, これを追加しておく.
confirm 関連の設定
スキャン時の問い合わせの無効化. ちなみに confirm を nil にしても 問い合わせが無いだけで threshold は効くので, 明示的に nil に.
終了時に確認しない
送信時は確認する
misc.
大きいメッセージを送信時に分割しない
スレッドは常に閉じる
3 pain 表示 -> 使わない
未読を優先的に読む
改ページ無視
icon を使わない → GUI でもメニュー表示してないし, 体感的には遅くなる
dispose, delete の設定
Gmail用に%INBOXでは削除を wl-trash-folder
への移動ではなく, 「delete」に.
迷惑メール関連も
折り返しの設定
message は折り返す.
draft も折り返す
mode-line の設定
長いと嫌なのでイロイロ削る
キーバインド関連
C-c C-j
を browse-url に明け渡す
M-u
で unread にする
i
で sync <- Mew 風
C-o
は elscreen で使う
M-o
で auto-refile
(Mew 風)
flag とフォルダを行き来する関数の追加
"=" でフラグ付きフォルダと 実際にメッセージのあるフォルダを行き来する. Gmail の「スター付き」フォルダでも有効
summary-mode の表示のカスタマイズ
自分が差出人である mail は To:某 と表示
サマリ行の表示関連
サマリ行のフォーマット指定
サマリ表示は切り詰めない
スレッドの幅の指定
以下の二つの設定を有効にするには
elmo-msgdb-extra-fields
を設定する必要がある.
この変数は振り分け判定にも使用するのでそこで設定している
Gmail 風に, 自分宛のメールに ">" をつけて表示する
添付ファイルがあったら, サマリ行に @ を付ける
クォートされた文字列もデコードする
昔はあれこれ設定してたけど, 今は良いのかな? とりあえず, デコードする長さを default の 1000 から二桁増やしておく.
Subject が変わってもスレッドを切らない
Subject での Tab や複数スペースを無視
重複メッセージを非表示に
フォルダ内の Message-ID が同じメールを非表示にする
sort 順: 返信が来た順
元ネタは Re: wanderlust で GMail 風、新着レス順にソート.
あんまり頑張る気がなかったので el-x
にある dflet
を使っている。
振り分け設定
$
以外を振り分け対象に
振り分け判定に使用するヘッダ
添付の有無の表示にも使うので Content-Type
も登録.
あと Delivered-To
はメールの検索の時に結構重宝している.
メッセージ表示
いったん全て非表示に
見たいヘッダだけ表示
表示順の変更
Mew 風…
From, To を省略表示しない
To や From にアドレスが沢山指定されていると省略されるので, これを無効化
Wanderlust: Face の設定
デフォルトより細かく指定するために幾つかの face 定義を追加.
以下, 元々定義されているfaceの設定
作成/返信設定
自分宛のメールに返信する場合は To:
, Cc:
から自分のアドレスを削除
"a" (without-argument)では Reply-To:
や From:
などで
指定された唯一人または唯一つの投稿先に返信.
また, X-ML-Name:
と Reply-To:
がついているなら Reply-To:
宛に返信
C-u a
(with-argument)であれば関係する全ての人・投稿先に返信
サマリ表示には petname を使うが, 引用には使わない
ドラフトの自動保存の無効化
偶に暴発している様な…? elscreen のせいかしら.
メール本文の文字コード
丸囲み数字なんかが入ってしまうと 勝手にエンコーディングが変わってしまって鬱陶しい. どうしたモンだろうかね.
draft mode で orgtbl を有効に
c-sig
署名の選択に c-sig を使用している.
設定は以下の通り. Mew 風に C-c <tab>
で signature を挿入するようにしている
GPG 署名
以前は mailcrypt を使っていたけれど,
epa があるので主にキーバインドの設定のみ.
draft-mode
の文字コードをあらかじめ指定しておかないと,
送信時に文字コードが変換されるので不正な署名となってしまう.
もっとうまい方法/正攻法がありそうな気がするけれど, 使えてるから, まあ良いかな, とか.
検索
notmuchを使う.
実際の呼び出しはスレッドを全部取得したいので以下を呼び出している
検索時にメールが多すぎると怒られるので. 数字は適当.
Linux Desktop で mailto:
リンクを扱うために
ついでに mailto
のリンクを emacsclient で扱うために,
以下の関数を定義しておく
Desktop の設定では
をメーラとして指定すれば良い.
GNOME は .desktop
ファイルが無いと「お気に入り」登録ができないので
以下のファイルを適当な名前で ~/.local/share/applications/
以下に放り込んでおくと良いだろう
メールからの予定の取り込み: mhc
閉じタグの入力補助: smartparens
カラーコードに色付け: rainbow-mode
#RRGGBB
のカラーコードに勝手に色が付く.CSS の編集中なんかで地味に便利.
対応する括弧を見易く: rainbow-delimiters
対応する括弧を強調表示してくれる RainbowDelimiters: global に有効にするのは他の Major modeとの衝突があるので止めた方が良い, らしい.
Org-mode
org-mode
が無いと生きていけない体になりました
基本設定: org
目新しい設定はしていない, と思う.
Org-Id
Babel
Org-capture: メモ取り
キーバインドは以前 changelog memo をやっていた時の癖で C-x m
をメモにしている.
→ capture は org-roam に丸投げすることにした.
Org-roam: リンク付きメモ
Org-agenda: スケジュール, TODO 表示
GTD 用の設定.後述の org-gcal
と orgmine
で取得したデータも表示している.
ついでに
- 土曜日をの face を追加.
- 祝日, 休日を日曜と同じfaceにする.
なんて事もやっている.元ネタは Org-mode and holidays
Org-roam と Org-agenda
org-roam で db に query 投げて,
org-agenda-files
を更新するように.
元ネタ: Task management with org-roam Vol. 5: Dynamic and fast agenda
OrgとGoogle カレンダーの連携: org-gcal
request token 等の置き場所の変更
実際の情報等は password-store
を使って設定しておく.
ついでに agenda 表示の際の色付けを設定.
OrgとRedmine の連携: orgmine
Org-Wiki
Org-Export
全般設定
latex, beamer,jekyll(後述) のみを有効に.
Jekyll, HTML
Web サイトは Jekyll で作成しています. 以前は org file を直接 jekyll で処理していましたが, 最近は org を html に export して, それを処理する様にしています.
exporter は uwabami/ox-jekyll にあります.
LaTeX, Beamer
Jekyll
Publish
Org-ref: 文献参照, 引用など
Outline Magic
どんどん増えそう.
VCS
まあ, ほとんど Git 関連な訳ですが.
git{attributes,config,ignore}-mode, git-commit
magit:
magit は Emacs の Git Frontend. 結局の所 CUI でコマンド叩く事も多いけれど, これはこれで重宝している.
Forge
Gitub/Gitlab と Magit の連携
Git Gutter+
飽きたら止めるかもしれないけれど.
関数定義を辿る: dump-jump
, smart-jump
あまり上手く使えていない.
言語毎の補完: company-mode
まだうまく使いこなせていない.
を有効にしてみたが, これで良いのかしら…?
SOMEDAY テンプレート補完: yasnippet
[0/1]
-
[ ]
意図しない所で発火してテンプレートが挿入されてしまうので保留中
SOMEDAY flymake
: on-the-fly check [0/1]
on-the-fly syntax checker.
同様の拡張には flycheck
があるけれど,
flycheck
はいろいろやりすぎてて私には合わない.
-
[ ]
設定調整が必要
LSP: lsp-mode
TeX: AUCTeX
やっている事は
- japanese-latex-mode において, 幾つかのコマンドが追加/上書きされているが, あまり使うことの無いコマンドが表示されるのが嫌なのでそれらを削除.
- コンパイルにはLatexmkを使う
と言った所.
…ただ, Beamerのクラスなんかだと勝手にdefault コマンドが LaTeX に変更されたりするので挙動がイマイチ良くわからん.
async で latexmk -pvc
を走らせておいた方が気持が良い, 気がしている….
Autoconf
いれてみたけれど, はてさて.
Fortran
Markdown
markdown自体はあまり好きじゃないんだけれど, 必要に迫られて書く事が増えてきたので設定しておく.
SCSS
ちょいちょい弄る機会が増えてきたので導入.
PlantUML
Re:VIEW
その他のモード設定
読み込むだけの mode の設定. 設定が増えたら別途まとめる。
SSH config mode
SOMEDAY 日記: tDiary
[0/1]
-
[ ]
org2blog で tDiary を更新できないか妄想している
テーマ, フォント, モードライン, などなど
SOMEDAY フォント [0/1]
試行錯誤中. とはいえ, GUIで使う事は滅多に無いのでなかなか弄る機会が無い.
-
[ ]
FSMRMP のギリシャ文字が全角にならない. 要調整
幅の確認: Greek, Math, 絵文字は全角, 他は半角で 2:1 になっているかの確認用 |abcdefghijkl| |ABCDEFGHIJKL| |'";:-+=/\~`?| |∞≤≥∏∑∫| |×±≒≡⊆⊇| ← GUI だと一部半角になる |αβγδεζ| ← GUI だと半角になる |ηθικλμ| ← GUI だと半角になる |ΑΒΓΔΕΖ| ← GUI だと半角になる |ΗΘΙΚΛΜ| ← GUI だと半角になる |日本語の美観| |あいうえおか| |アイウエオカ| |アイウエオカキクケコサシ| | hoge | hogeghoe | age | |----------------------+----------+------------------| | 今日もいい天気ですね | お、 | 等幅になった👍 🍺| |----------------------+----------+------------------|
modeline: powerline
theme: modus-theme
最近乗り換えた. じたばたしているのは背景透過と Wanderlust の face の追加, かな? あとはデフォルトの font-lock を(好みに合わせて)入れ替えたり.
Debug&Test
起動時間の出力
最後に
profiler report
これも必要に応じて
provide の設定
LICENSE
幾つかの関数の元ネタとして Emacs 本体のコードを参照したので, GPL-3 or later です.
Copyright (C) 2011--2017 Youhei SASAKI <uwabami@gfd-dennou.org> . This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.