概要
Emacs24.3がリリースされたのでインストールしてみた。使ってみたらredo+.elが動かないっぽいのでundo-tree.elに乗り換えた。
undo-tree.elについて知りたい人はインストール部分は飛ばしたらいいと思う。
インストール
先日Emacs24.3がリリースされました
http://www.gnu.org/software/emacs/
で、以前↓の記事を読んで、同じ悩みを持っていたのでコンパイルオプションぱくって、ちょっといじってインストールした。
emacs のコンパイルオプションを設定したら幸せが訪れた - willnet.in
wget http://core.ring.gr.jp/pub/GNU/emacs/emacs-24.3.tar.gz
tar xzvf emacs-24.3.tar.gz
cd emacs-24.3
./configure --without-toolkit-scroll-bars --without-xaw3d --without-compress-info --without-sound --without-pop --without-xpm --without-tiff --without-rsvg --without-gconf --without-gsettings --without-selinux --without-gpm --without-makeinfo --without-all --with-x-toolkit=no
make
sudo make install
ただ、mark setしたあとC-gでキャンセル出来ないことがある、という悩みは解決しなかった(´・ω・`)
redo+.elからundo-tree.elへ
で、起動してみるとエラーが出る。
Warning (initialization): An error occurred while loading `/home/****/.emacs.d/init.el':
error: Attempt to modify read-only object
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the `--debug-init' option to view a complete error backtrace.
言われたとおりに--debug-initして起動してみると、どうやらredo+.elがおかしい。で、そこをコメントアウトしたら動いた。そこで、undo-tree.elという拡張を導入することにした。melpaに登録してあるのでM-x list-packagesしてundo-treeのところでi押してxでインストール。(packageの使い方はぐぐればいっぱい出てくると思う。最初にmelpaをリポジトリに登録する必要がある。)
で次の設定をinit.elに書いた。
(require 'undo-tree)
(global-undo-tree-mode t)
(global-set-key (kbd "M-/") 'undo-tree-redo)
これでM-/でredo出来るようになった。
せっかくなのでundo-treeをもうちょっと使いこなしてみる
undo-treeの持つ機能はredoが出来るようになるだけではない。一言で言うとテンポラリなバージョン管理システムだ。
具体的に例を示すと、ファイルを編集・保存をしたあとにC-x uしてみると以下の様な画面が現れると思う
x
|
/ \
o o
|
|
x
これが今編集してるファイルの変更履歴だ。今xの場所にいる。で、dを押してみるとその時の変更のdiffが以下のように見れる。
@@ -297,8 +297,8 @@
(setq undo-limit 600000)
(setq undo-strong-limit 900000)
-;; (require 'undo-tree)
-;; (global-set-key (kbd "M-/") 'undo-tree-redo)
+(require 'undo-tree)
+(global-set-key (kbd "M-/") 'undo-tree-redo)
(defun toggle-truncate-lines ()
"折り返し表示をトグル"
もう一度dを押すとdiff表示をoffに出来る。
で、tree上でC-pするとtreeの上に移動する。同時にファイルがその時の状態に戻る。
o
|
/ \
x o
|
|
s
上のtreeでsはsaveされているところ。xが自分がいるところ。もう一度C-pで更に上に遡る。
x
|
/ \
o o
|
|
s
次に右下に行きたい時はC-fでtreeのルートが切り替わるので、次にC-nで右下のoに行ける。
o
|
/ \
o x
|
|
s
この状態から編集を再開したければ、C-gを押す。するとtreeのバッファが消えて、この状態からファイルを編集することが出来る。