helm-bm 20160321.631(in MELPA)
helm sources for bm.el

概要

昨日は「目に見えるブックマーク」としてbm.elを紹介しました が、
今日はその helmインターフェース です。

M-x bm-toggleM-x bm-previous, M-x bm-next があれば
カレントバッファ内の移動は不自由しません。

実は M-x bm-show-all という全bmを一覧するコマンドがありますが、
今ならやっぱりhelmだよねー!
ということで helm-bm.el を紹介します。

実はanything.el時代に M-x anything-bm-list があったのですが、
helmでは削除されていたので、MELPAで探して見付けたのでした。

しかも大幅にパワーアップして帰ってきました。

かつて自分が作ったものがより優れたものに
置き換わるのは嬉しい限りです。

とにかくhelm化されることで快適に検索できるようになります。

なので、bmの用途が広がり、
現在位置を記憶する以外にも
その行の『内容』を記憶させる
という目的にも使えるようになります。

快適設定も紹介します。

インストール

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

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

M-x package-install helm-bm

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

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

設定 141122044603.helm-bm.el(以下のコードと同一)

;;; bm.el初期設定
(setq-default bm-buffer-persistence nil)
(setq bm-restore-repository-on-load t)
(require 'bm)
(add-hook 'find-file-hook 'bm-buffer-restore)
(add-hook 'kill-buffer-hook 'bm-buffer-save)
(add-hook 'after-save-hook 'bm-buffer-save)
(add-hook 'after-revert-hook 'bm-buffer-restore)
(add-hook 'vc-before-checkin-hook 'bm-buffer-save)
(add-hook 'kill-emacs-hook '(lambda nil
                              (bm-buffer-save-all)
                              (bm-repository-save)))
(global-set-key (kbd "M-[") 'bm-previous)
(global-set-key (kbd "M-]") 'bm-next)

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

(defun bm-toggle-or-helm ()
  "2回連続で起動したらhelm-bmを実行させる"
  (interactive)
  (bm-toggle)
  (when (eq last-command 'bm-toggle-or-helm)
    (helm-bm)))
(global-set-key (kbd "M-SPC") 'bm-toggle-or-helm)

;;; これがないとemacs -Qでエラーになる。おそらくバグ。
(require 'compile)

実行方法

$ wget http://rubikitch.com/f/141122044603.helm-bm.el
$ emacs -Q -f package-initialize -l 141122044603.helm-bm.el

提供するコマンドは M-x helm-bm のみです。

アクションは以下のものです。

  • その場所に移動(デフォルト)
  • bmを削除(C-SPCで候補をマークすることで複数可)
  • annotation(bmでつけられるコメント)を編集
  • カレントバッファ内の全bmを削除(候補とは無関係)
  • 全バッファの全bmを削除(候補とは無関係)

デフォルトの設定から、3点を改良しました。

  • Migemo に対応させた
  • 表示件数を増やした
  • M-SPC M-SPCで起動させた

初期設定ではM-SPCにM-x bm-toggleを割り当てていましたが、
2回連続で実行すると元の状態に戻ります。

そこで、2回連続M-SPCを押すと M-x helm-bm
起動させるようにすると、かなり快適になります。

20141122050546.png
Fig1: bmをhelm + migemoで絞り込み!

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


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