長めの日本語テキストを書くときは emacs を使うのだが、 いままで ターミナル上で動く emacs しか使ったことがなかった。
この記事(Wnn8 jserver を QEMU を使って Silicon Mac で動かす)で書いたように Macbook Air M2 単体で wnn8 が使えるようになったので、 いままでよりもっと emacs を使っていこうと思い立ち GUI 版の emacs も試すことにした。
Emacs Lisp ハイパーリンクの作成で ボタンを作成してもターミナル版の emacs ではキーバインドを設定しないかぎりクリック作動が行えない。 おそらく GUI 版ならばマウスでクリックできるようになるのであろう、とか期待しながら。
この辺で書いた手順で emacs をインストールして使っているので 起動コマンドは ~/.bashrc に次のように書いている:
alias emacs="$HOME/.local/Emacs.app/Contents/MacOS/Emacs -nw"
要するに -nw オプションつきで起動させるているために常にターミナル内で emacs が起動する。 この -nw を削除すれば GUI 版 emacs になる。
単に emacs アプリアイコンを Mac の Dock にドロップしてそこから起動すればいいのかもしれない。 試していない。
そっち(GUI 版 emacs)用の良いコマンド名が思いつかないので xemacs とした:
alias xemacs="$HOME/.local/Emacs.app/Contents/MacOS/Emacs"
XEmacs といえば emacs から fork された別アプリなのであれですが、 このローカルでこのコマンド名を使うだけなので今はこれでよしとしましょう。
perplexity.ai にきいた:
へー xemacs は今はアクティブにメンテナンスされていないらしい。
デフォルトの状態で GUI 版 emacs を起動すると、welcome メッセージが出たり ツールバーにアイコンが並んでいたりと気に入らなかったので、init.el 等に設定を追加した。 背景色が真っ白なのもいやなので、普通に Solarized color のテーマを入れた。 最終的にはこんな感じになった:
ほとんど(自分が普段使っている)ターミナル版と同じ見た目になった。 GUI 版はフォントがきれいなきがする。気のせいかもしれない。
今回設定した内容を忘れないうちにここにメモしておく。
使っているバージョン:
$ emacs -version
GNU Emacs 29.1
emacs の設定ファイルに記述を追加:
(tool-bar-mode 0)
(scroll-bar-mode 0)
(horizontal-scroll-bar-mode 0)
emacs の設定ファイルに記述を追加:
(setq inhibit-startup-screen t)
emacs の設定ファイルに記述を追加:
(set-frame-size (selected-frame) 120 48)
詳細は https://github.com/sellout/emacs-color-theme-solarizedをご覧ください。
所定の場所に それを clone しておいて:
mkdir ~/.emacs.d/themes
cd ~/.emacs.d/themes
git clone https://github.com/sellout/emacs-color-theme-solarized.git
emacs の設定ファイルに記述を追加:
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/emacs-color-theme-solarized")
(load-theme 'solarized t)
これらの設定を ~/.emacs.d/init.el に記述してしまうと、 GUI 版 emacs では問題ないのですが、 ターミナル版 emcas がおかしなことになります。
そこで、GUI 版 にのみ有効な設定は ~/.emacs.d/init-gui.el に記述することにします。
;;; hide message
(setq inhibit-startup-screen t)
;;; window
(set-frame-size (selected-frame) 120 48)
;;; theme
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/emacs-color-theme-solarized")
(load-theme 'solarized t)
そして、ここが肝心なところですが、~/.emacs.d/init.el から GUI 版 emacs の場合だけ、 この init-gui.el を適用するようにします。このように:
(when window-system (load-file "~/.emacs.d/init-gui.el"))
window-system という variable が GUI 版の場合は ns という値を持ち、 ターミナル版の場合は nil になります。
see: Window Systems
実際にこれを確認するには、emacs を起動して、 M-: して window-systme とタイプして enter します。 すると GUI版では ns が(ミニバッファに)表示され、 ターミナル版では nil になります。
残りの設定に関しては init.el に記述しても問題はないのですが、 init.el ではなく early-init.el に記述した方がよいことを知りました。
(tool-bar-mode 0)
(scroll-bar-mode 0)
(horizontal-scroll-bar-mode 0)
このファイルに記述すると init.el より前にこれらの設定が反映されるらしい。 init.el に設定していた場合、 起動時に一瞬ツールバー/スクロールバーが表示されてから再描画されてそれが消えるのですが(これは見苦しさがある)、 early-init.el に記述しておくことで、最初からそれらがない状態になります。
以上です。