Emacs

macとwinで操作感を揃えたHHKBの設定

Emacsでの作業効率を維持しつつ、HHKBを macOSと Windowsの両方で使うための自分なりの設定です。

私は 2022年からHHKBを使い始めた若輩者で、さすがに macOS と Windows の両方でHHKBを使うのは厳しかったので、macOS 用には HHKB Professional HYBRID Type-Sを使い、Windows 用には、ProgresTouch RETRO TINYを使ってきました。macOS用の一つ前は、純正のMagic Keyboardです。当然ながら昔も今も USキーボードです。

defadvice から advice-add に移行

Emacs 30.1 になり、defadvice がとうとう obsolete になりました。

私が advice を頻繁に使うようになった頃にはすでに advice-add を使うように推奨されていたため、自分の設定に残る defadvice は一つだけで、今回それを書き換えました。

orgバッファと専用編集バッファのコードの見た目を揃える

2025年にもなってタブスペースで悩むという貴重な体験をしましたが、無事に好みの設定にできました。

まず、普段編集する emacs-lisp-mode のファイルですが、他人様のファイルで特に指定のない状態ではインデントがタブ8で書かれていることも多いです。これは単純に tab-width のデフォルト値が 8 だけという理由だと思いますが、emacs-lisp-mode のファイルを編集するだけならなんら問題ないです。

define-key から keymap-set に移行

Emacs 29.1からキーバインドの設定には define-key ではなく keymap-set を使うように変更(推奨)されています。自分の設定も変更してみました。(see What’s New in Emacs 29.1?)

Table 1: before/after
変更前 変更後
define-key keymap-set
global-set-key keymap-global-set
local-set-key keymap-local-set
global-unset-key keymap-global-unset
local-unset-key keymap-local-unset
substitute-key-definition keymap-substitute
define-key-after keymap-set-after
lookup-key keymap-lookup
kye-binding keymap-lookup
locak-key-binding keymap-local-lookup
global-key-binding keymap-global-lookup

これまで kbd を挟んでいましたが、単純な置き換えではうまく行かないパターンもあったので、 SPC などの指定は、 "SPC", "RET", "<tab>", "S-<tab>", "<delete>" を kbd を挟まずに指定することでうまくいきました。

org-log-repeat を改良

org-log-repeat を non-nil に設定すると、繰り返しタスクを一度完了(その後に自動でTODOに戻る)するたびに、次のような情報が記録されます。

- State "DONE"       from "TODO"       [2025-02-10 Mon 22:55]

繰り返し頻度が高かったり、長期間に渡って完了開始を繰り返すタスクの場合には、記録されるデータがどんどん増えてしまいます。今のところ、私はこの記録をうまく活かせていないので停止することにしました。

ツリーのカットペースト時に統計情報を更新する

org-refile を使ってサブツリーを移動するのもいいですが、シンプルにサブツリーをカット&ペーストするのも直感的で良いですよね。

スピードコマンドを有効にしていれば、カット&ペーストは、ツリー(見出し)の行頭で ky で簡単できます( yorg-yank を呼ぶ設定は自分で追加が必要です)。

古い暗号化エントリーの Decryption failed を回避する

org ファイルの各エントリーは、gpg を使って暗号化できますが、かれこれ10年ほど前に暗号化したエントリーを復号できないケースに当たりました。数年前にも同じようなケースに遭遇しましたが、今回はその時とは違う方法で解決できたので、記録を残します。

インラインパッチ付きmacOS用EmacsをNativeComp対応に

脆弱性対策の為に先日、最新の安定版29.3がリリースされたEmacsですが、次のメジャーアップデートのEmacs 30からは、NativeCompがデフォルトでオンになるようです。

https://github.com/emacs-mirror/emacs/blob/master/etc/NEWS#L29

** Native compilation is now enabled by default.
'configure' will enable the Emacs Lisp native compiler, so long as
libgccjit is present and functional on the system.  To disable native
compilation, configure Emacs with the option:

./configure --with-native-compilation=no

macOS用のインラインパッチ付きEmacsはどうしましょう…

MacBook Air (M3)

3月冒頭に発売された M3チップ搭載のMacBook Airをゲットしました。手元の Intel i7 のMacBook Airと比較して、どのくらいスペックが向上したかな?との疑問が自然と生じますので、早速比較してみました。Emacsの起動時間で。