概要
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のバッファが消えて、この状態からファイルを編集することが出来る。