注意書き
emacs26でuim.elを使うとC-xが無効になるバグがある。uimのgithub (https://github.com/uim/uim/tree/master/emacs) では対応済みだが、Ubuntu 18.04のレポジトリにあるuim-elでは対応されていない。
環境
Ubuntu 18.04
Emacs 26 (PPAからインストール)
uim-el (Ubuntu提供)
straight.el
解1
uim.elをローカルの~/.emacs.dにclone(正確にはpull)することにした。
しかし、そのままgit cloneするとgithub.com/uim/uim.gitのディレクトリやファイル全てがcloneされるので不要なファイルがたくさん入ってしまう。そこで、特定のディレクトリだけpullすることにした。
特定のディレクトリのみgitでpullする
git sparse checkout で clone せずに一部のサブディレクトリだけを pull/checkout するを参考にした。emacsのパッケージ管理にstraight.elを使っているので、straightでローカルリポジトリを参照することもしている。
cd ~/.emacs.d/straight/repo
mkdir uim
cd uim
git init
git config core.sparsecheckout true
git remote add origin https://github.com/uim/uim.git
echo /emacs > .git/info/sparse-checkout
git pull origin master
これでuim/emacs以下にuim.el関連のファイルがpullされる。
init.elの記述
straightをつかってこのレポジトリを参照してほしいので、init.elを書く
(straight-use-package '(uim :local-repo "uim/emacs"))
これ以下にuimの設定を書いていく。これでstraightがバイトコンパイルもしてくれるので嬉しい。
なお、uim-lang-code-alistでエラーを吐くので、以下をコメントアウト
;;以下をコメントアウト
(setq uim-lang-code-alist
(cons '("Japanese" "Japanese" utf-8 "UTF-8")
(delete (assoc "Japanese" uim-lang-code-alist)
uim-lang-code-alist)))
uim.elの解説を読んでいればわかるが、uimの文字コードをデフォルトのeuc-jpからUTF-8にするlispである。これで不具合がでるかどうかはまだわからない。
注意
Ubuntuのuim-elはアンインストールしない。そうしないとemacs起動時にuim-versionがないと怒られる。なんだか中途半端だが、とりあえずこれで問題は解決した。
これでいいのだろうか?もっと賢い方法があるような気がする。
追記: 2019.09.25
これはgithubのuim.elまわりのファイルををちゃんとコンパイルしてないからとても中途半端になり、uim-elを消せない。~/.emacs.d/以下に置いたlispファイルを無理矢理読ませて必要なところだけ解決する悪いやり方。uim.elのバグを解決したバージョンはuim-1.8.7だが、Ubuntu 18.04で提供しているバージョンが1.8.6なのが問題。
対応は以下。
解2
githubの更新履歴を見ていると、キーバインドのバグはuim-keymap.elの改善で解決されている。なので、このファイルだけ更新する手がある。Ubuntuでuim-elをインストールしていると、/usr/share/emacs26/site-lisp/uim-el/にバイトコンパイルされたファイル、usr/share/emacs/site-lisp/uim-el/に元のelispがある。
wget https://raw.githubusercontent.com/uim/uim/master/emacs/uim-keymap.el
でホームにuim-keymap.elを取得する。
cd /usr/share/emacs/site-lisp/uim-el
sudo mv uim-keymap.el uim-keymap-o.el
sudo mv ~/uim-keymap.el ./
sudo chown root:root uim-keymap.el
一応元のファイルをuim-keymap-o.elとしてバックアップしてある。また、ファイルの所有者と所有グループをrootにしておいた。パーミッションも変えたほうがいいかもしれないが、とりあえずは大丈夫そう。
参照
uim/uim - github
git sparse checkout で clone せずに一部のサブディレクトリだけを pull/checkout する
raxod502/straight.el - github
How to generate and activate autoloads for local packages?