goto-chg 20131228.659(in MELPA)
goto last change

概要

あなたは、遠くの場所を編集した後にサッと戻りたいと思ったことはありますか?

たとえばコーディングをしていてrequire文を書き忘れたために
バッファ先頭に戻り、require文を書いてから、
再び元の場所に戻りたいとか、
そんな経験は何度かしていると思います。

実はEmacsには長距離移動をしたときにはmark-ringに現在位置を記憶し、
C-u C-SPCで元の位置に戻れるようになっています。

【Mark Ring】「VimのCtrl-oみたいにマークをたどる」をさらに快適にする設定
で紹介したように、 set-mark-command-repeat-pop を設定すればさらに快適になります。

ですが、もうひとつの方法があります。

buffer-undo-listという編集履歴を格納する変数を使ったものです。

mark-ringに保存してくれないコマンドにも使えるメリットがあります。

C-/ は直前の編集をキャンセルするM-x undoですが、
undoした位置にカーソルが戻ります。

goto-chg.elによるM-x goto-last-changeはundoする代わりに
過去に編集した場所をどんどん遡ります。

とはいっても単にbuffer-undo-listを辿るのではなくて、
複雑なアルゴリズムにより最小回数で編集箇所にたどりつけるようになっています。

あちこち編集して戻りたいとよく思っているならば、
ぜひとも導入してみてください。

本設定ではF8で過去に編集した箇所に戻りますが、
行き過ぎてしまった場合はM-F8で逆方向になります。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてgoto-chgを使う方は
以下のコマンドを実行します。

M-x package-install goto-chg

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name goto-chg

設定 161121133736.goto-chg.el(以下のコードと同一)

(global-set-key (kbd "<f8>") 'goto-last-change)
(global-set-key (kbd "<M-f8>") 'goto-last-change-reverse)

実行方法

$ wget http://rubikitch.com/f/161121133736.goto-chg.el
$ emacs -Q -f package-initialize -l 161121133736.goto-chg.el

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。