2017年8月14日月曜日

emacsでカーソル位置を覚えておく

最近、Emacsを使って長い文章を書く仕事をしていて、少し、困ったことがありました。具体的には以下のようなことです。
  • 「長い文章」なので作業は一日では終わらない
  • 一日では終わらないので、編集のためのEmacsを起動させたままにはしていない
  • 次にEmacsでそのファイルを開いたときに、「長い文章」のためにファイルが大きく、前回の最後の作業位置を見つけるのが少しめんどう
そこで、Emacsの拡張機能で、終了時にファイルのカーソル位置を覚えてくれて 、次回、そのファイルを開いたら、前回のカーソル位置に戻してくれるというものがないか、調べてみました。すると以下のWWWページを見つけました。
Emacsで一度開いたファイルのカーソル位置を覚えておく
http://d.hatena.ne.jp/hnw/20140111

ここでは以下のように設定するように書かれています。
;; 以前開いたファイルを再度開いたとき、元のカーソル位置を復元する
;; http://www.emacswiki.org/emacs/SavePlace

(when (require 'saveplace nil t)
  (setq-default save-place t)
  (setq save-place-file "~/.emacs.d/saved-places"))
そうなのかと思い設定したのですが、 動きません。そこで、コメントにある
Save Place
http://www.emacswiki.org/emacs/SavePlace
を見てみると、以下のようにありました。
For GNU Emacs 25.1 and newer versions
(save-place-mode 1)
Note that saveplace is auto-loaded by save-place-mode. So you do not need to explicitly require it.
私の使っているEmacsは
GNU Emacs 25.2.1 (amd64-portbld-freebsd11.0, GTK+ Version 3.22.15) 
なので、上のようにする必要がありました。

使ってみると、.emacs.d/placesというファイルに以下のように情報が書き込まれます。

$ cat .emacs.d/places
;;; -*- coding: utf-8 -*-
(("/home/USER1/text/file3.txt" . 24459)