Help us understand the problem. What is going on with this article?

Emacs24.3の導入とundo-tree.elの紹介

More than 5 years have passed since last update.

概要

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に書いた。

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

takc923
よろしくお願いします。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした