LoginSignup
0
0

More than 3 years have passed since last update.

Ubuntu 18.04 (LTS)のemacs26でuim.elをつかう

Last updated at Posted at 2019-09-18

注意書き

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を書く

init.el
(straight-use-package '(uim :local-repo "uim/emacs"))

これ以下にuimの設定を書いていく。これでstraightがバイトコンパイルもしてくれるので嬉しい。
なお、uim-lang-code-alistでエラーを吐くので、以下をコメントアウト

init.el
;;以下をコメントアウト
(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?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0