Thursday, May 26, 2011

bm.el を入れてみた

まずは、環境から。

環境

  • Mac OS X version 10.6.7
  • GNU Emacs 22.3.1 (i386-apple-darwin9.8.0, Carbon Version 1.6.0) of 2010-01-09 on gs674-seijiz.local


参考

以下のページを参考にしました。


基本、上記のページを参照して頂ければ、bm.el のインストールは出来ると思います。。。

(;・∀・)


インストール

Emacs の scratch buffer で以下のコマンドを入力して、C-j で実行する。

(install-elisp "http://cvs.savannah.gnu.org/viewvc/*checkout*/bm/bm/bm.el")

上記のコマンドを入力すると、bm.el のソースがダウンロードされる。ダウンロードした後に、"C-c C-c to continue" と言われるので、C-c C-c を入力してインストールを行う。

install-elisp の引数には、http://cvs.savannah.gnu.org/viewvc/*checkout*/bm/bm/bm.el を指定する。ブラウザから http://cvs.savannah.gnu.org/viewvc/*checkout*/bm/bm/bm.el にアクセスすると、bm.el の最新のソースコードが表示される。


設定

設定をする上で、キーバインドを何にするか迷った。候補としては、参考にしたサイトを参考に以下が上がった。

M-;
M-:
M-@
M-[
M-]

これらのキーバインドは、以下に割り当てられていた。

M-;  ww-next-gtag
M-:  eval-expression
M-@  mark-word
M-[  (undefined)
M-]  (undefined)

M-@ に割り当てられている mark-word は何をする関数か調べてみる。

mark-word is an interactive compiled Lisp function in `simple.el'.
It is bound to M-@.
(mark-word &optional arg allow-extend)

Set mark arg words away from point.
The place mark goes is the same place M-f would
move to with the same argument.
Interactively, if this command is repeated
or (in Transient Mark mode) if the mark is active,
it marks the next arg words after the ones already marked.

単語ごとに選択が出来るようにする関数らしい。特に、使うこともないので、M-@、 M-[、M-] を使うことにした。

因みに、キーバインドがどんな関数に割り当てられているか、関数が何をするかの詳細を調べるには、以下のコマンドを利用する。

  • キーバインドがどんな関数に割り当てられているか
    [f1] - c
    または
    M-x help-for-help c
  • 関数が何をするか
    [f1] - f
    または
    M-x help-for-help f

詳細は、以下のページを参照。

いつもの操作がなんなのか調べる方法 - 32nd Diary(2010-12-12)


そういう訳で、M-@、M-[、M-] を使って設定をする。と言っても、bm.el入れました - kenkov dialy にある設定を ~/.emacs にコピペしてみました。。。

;;; bm.elの設定
;;; (install-elisp "http://cvs.savannah.gnu.org/viewvc/*checkout*/bm/bm/bm.el")
(require 'bm)
;; キーの設定
(global-set-key (kbd "M-@") 'bm-toggle)
(global-set-key (kbd "M-[") 'bm-previous)
(global-set-key (kbd "M-]") 'bm-next)
;; マークのセーブ
(setq-default bm-buffer-persistence t)
;; セーブファイル名の設定
(setq bm-repository-file "~/.emacs.d/bm-repository")
;; 起動時に設定のロード
(setq bm-restore-repository-on-load t)
(add-hook 'after-init-hook 'bm-repository-load)
(add-hook 'find-file-hooks 'bm-buffer-restore)
(add-hook 'after-revert-hook 'bm-buffer-restore)
;; 設定ファイルのセーブ
(add-hook 'kill-buffer-hook 'bm-buffer-save)
(add-hook 'auto-save-hook 'bm-buffer-save)
(add-hook 'after-save-hook 'bm-buffer-save)
(add-hook 'vc-before-checkin-hook 'bm-buffer-save)
;; Saving the repository to file when on exit
;; kill-buffer-hook is not called when emacs is killed, so we
;; must save all bookmarks first
(add-hook 'kill-emacs-hook '(lambda nil
                              (bm-buffer-save-all)
                              (bm-repository-save)))

一つ変えたところは、セーブファイル名。ドットファイルから、通常のファイルにした。

  • 変更前
    (setq bm-repository-file "~/.emacs.d/.bm-repository")
  • 変更後
    (setq bm-repository-file "~/.emacs.d/bm-repository")


動作確認


~/.emacs を保存した後に、以下のコマンドを実行して ~/.emacs を読みなおす。

M-x load-file [return]
~/.emacs [return]

そして、M-@ でブックマークをし、M-[、M-] で前のブックマークに戻ったり、次のブックマークに進んだりする。

期待した通りの動作をしました!!

これで、少し速く開発できる!!と思う。

ヽ(´ー`)ノ

No comments:

Post a Comment