bm.elとは目に見えるブックマークのことです (レビュー記事) 。

さらに、helm-bmというhelmインターフェース も存在します。

しかし、bmの大きな欠点はbmを永続化できるものの、
開いているバッファの範囲でしかbmを一覧できないことです。

つまり、まだ開いていないファイルについては
bmをつけたかどうかがわからないのです。

そのため標準のbookmarkの代わりには使いづらいです。

そこで、 bm-repository-load した後に
bm-repository に登録されている全ファイルを開いてしまいます。

これにより、リポジトリに保管されているbmを
起動時から一覧できるようになります。

ちなみにこの欠点に気付くのに何年もかかりました(苦笑)

ついでに bm-repository-file を ~/.emacs.d/bm-repository に変更しました。

設定 141217093322.bm-repository-open.el(以下のコードと同一)

(require 'bm)
(defun bm-find-files-in-repository ()
  (interactive)
  (cl-loop for (key . _) in bm-repository
           when (file-exists-p key)
           do (find-file-noselect key)))
(defun bm-repository-load-and-open ()
  (interactive)
  (bm-repository-load)
  (bm-find-files-in-repository))

(setq bm-repository-file "~/.emacs.d/bm-repository")
(setq-default bm-buffer-persistence t)
(setq bm-restore-repository-on-load t)
(add-hook 'after-init-hook 'bm-repository-load-and-open)
(defun bm-buffer-restore-safe ()
  (ignore-errors (bm-buffer-restore)))
(add-hook 'find-file-hooks 'bm-buffer-restore-safe)
(add-hook 'kill-buffer-hook 'bm-buffer-save)
(defun bm-save-to-repository ()
  (interactive)
  (unless noninteractive
    (bm-buffer-save-all)
    (bm-repository-save)))
(add-hook 'kill-emacs-hook 'bm-save-to-repository)
(run-with-idle-timer 600 t 'bm-save-to-repository)
(add-hook 'after-revert-hook 'bm-buffer-restore)
(add-hook 'vc-before-checkin-hook 'bm-buffer-save)
(add-hook 'before-save-hook 'bm-buffer-save)

(require 'helm-bm)
;; migemoくらいつけようね
(push '(migemo) helm-source-bm)
;; annotationはあまり使わないので仕切り線で表示件数減るの嫌
(setq helm-source-bm (delete '(multiline) helm-source-bm))

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