backward-forward 20161228.2150(in MELPA)
navigation backwards and forwards across marks

概要

Emacsにはふたつのマークリング、

  • mark-ring
  • global-mark-ring

があるのですが、
あなたは使いこなせていますか?

バッファ内の移動において、
C-u C-SPC で過去のマーク位置に
戻れる前者は便利ですよね。

けれど、僕は後者の
global-mark-ring
いまだに使いこなせません。

そこで、
backward-forward.el は
マークを統一して
使いやすくしてくれます。

両者を併合する
backward-forward-mark-ring という
第3のマークを用意してくれます。

マイナーモード
M-x backward-forward-mode
を有効にすれば、
以下の効果が得られます。

  1. C-left で過去方向のマークへ移動(backward-forward-previous-location)
  2. C-right で未来方向のマークへ移動(backward-forward-next-location)
  3. push-mark 時に backward-forward-mark-ring にも登録
  4. ggtags-find-tag-dwim 時に push-mark する
  5. switch-to-buffer 時に push-mark する

よって、

  • とりあえず前のマークに行きたいと思ったら C-left
  • 行きすぎたと思ったら C-right

でバッファ内でもバッファ間でも
過去にマークした場所に
移動してくれるようになります。

この機能が気に入って
頻繁に使用するようになれば、
矢印キーにまで手をのばすのは億劫でしょう。

そのときは
backward-forward-mode-map
キーを割り当てましょう。

個人的に、
けっこういい感じにできていると思います。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))

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

M-x package-install backward-forward

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

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

設定 170106081610.backward-forward.el(以下のコードと同一)

(backward-forward-mode 1)
;;; 慣れてきたら他のキーに割り当ててもよい
(define-key backward-forward-mode-map (kbd "H-h") 'backward-forward-previous-location)
(define-key backward-forward-mode-map (kbd "H-l") 'backward-forward-next-location)
;;; push-markしてほしいコマンドがあったらこのようにアドバイスを設定する
;; (advice-add 'ggtags-find-tag-dwim :before #'backward-forward-push-mark-wrapper)

実行方法

$ wget http://rubikitch.com/f/170106081610.backward-forward.el
$ emacs -Q -f package-initialize -l 170106081610.backward-forward.el


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