重たいはてブとはこれでサヨナラ? anything-hatena-bookmark.el を migemo に対応させて完璧にする。
k1LoW さんがデフォルトで (migemo) に対応するコードを入れてくれました。よって、最新の anything-hatena-bookmark.el をインストールすれば、anything-hatena-bookmark.el の編集は必要ありません。つまり、anything-migemo.el をインストールするだけで、migemo に対応できるようになったという訳です!!
みなさん、id:k1LoW さんの作成した、Anything を使ってローカルではてなブックマークをブラウジングする anything-hatena-bookmark.el という便利な Elisp をご存じですか?
Anything って何?な人は、まずはもう初心者なんて言わせない、Anything で始まる Emacs 道。をご覧下さい。
M-x install-elisp
で、インストールすると、M-x anything-hatena-bookmark で呼び出して、ブラウザではてブを開かなくても、Emacs で自分のはてブを見る事ができます。
Anything ですから、全記事からの絞り込みが可能ですが、デフォルトの状態だと、日本語の記事を見つけるのに、日本語を入力しなければ絞り込めないのでちょっと面倒です。
Emacs をお使いの方は、もちろん migemo を愛用しているでしょうから、ここは是非ともみげもりたいところです。
Anything は、とても優れたフレームワークなので、3分1分もかからず migemo に対応させることができますので、migemo をインストールしている人は、サクっと migemo に対応してしまいましょう!
anything-migemo.el をインストールする。
M-x install-elisp
で、id:rubikitch さんの作った、anything-migemo.el をインストールします。
もちろん、require しましょう。require の仕方が分からない人は一番最後に設定があります。
anything-hatena-bookmark.el を少し書き換える。(最新版では不要)
110 行目付近の、anything-c-source-hatena-bookmark 関数を、ちょっとだけ書き換えます。
(defvar anything-c-source-hatena-bookmark '((name . "Hatena::Bookmark") (init . (lambda () (call-process-shell-command (concat "less -f " anything-hatena-bookmark-file) nil (anything-candidate-buffer 'global)))) (candidates-in-buffer) (action ("Browse URL" . (lambda (candidate) (string-match "\\[href:\\(.+\\)\\]$" candidate) (browse-url (match-string 1 candidate)))) ("Show URL" . (lambda (candidate) (string-match "\\[href:\\(.+\\)\\]$" candidate) (message (match-string 1 candidate)))) ("Show Summary" . (lambda (candidate) (string-match "\\[summary:\\(.+\\)\\]\\[" candidate) (message (match-string 1 candidate)))))) (migemo) ; これだけで migemo 対応 (multiline)))
(migemo) を加えるだけで、migemo に対応できるのですが、見ての通り、ちょっと文字数が多くて表示がごちゃごちゃになってしまっているので、僕は (multiline) を入れることで、表示に隙間を開けようとしています。
で、バイトコンパイル(後で説明します)した後に再起動して、「yuusyou」 で絞り込んでみると、こうなります。
見事に、「優勝」を含む記事だけがリストアップされました :-)
リニューアルしてから、検索機能が充実して大変便利になったはてブですが、Emacs 内で動作する Anything なはてブ検索と比べると、その速度はどうがんばっても比べものになりません。
Firefox 拡張も超優秀ですが、Emacs に慣れ親しんだ人は、Emacs で何かしているときに、即座にはてブを引ける anything-hatena-bookmark.el のスピード感と快適さに慣れると、自分のはてブを開くことはもうありません。
バイトコンパイルについて。
バイトコンパイルというのは、Elisp を機械語に翻訳(つまりコンパイル)して読み込みを早くする仕組みです。
auto-install や install-elisp によってインストールした Elisp は、インストール時にバイトコンパイルしており、同名のファイルで拡張子が .elc というファイルが作成されています。
hoge.elc ファイルが存在すると、いくら hoge.el を書き換えても起動時に hoge.elc しか読み込まないため、hoge.elc ファイルが存在する Elisp ファイルはバイトコンパイルして新たなhoge.elc ファイルを作成しなければいけないという訳です。
参考: Meadow/Emacs memo: バイトコンパイル
バイトコンパイルを素早く行ないたい場合は、.emacs に、
;; mode-compile (autoload 'mode-compile "mode-compile" "Command to compile current buffer file based on the major mode" t) (global-set-key "\C-c\C-c" 'mode-compile) (autoload 'mode-compile-kill "mode-compile" "Command to kill a compilation launched by `mode-compile'" t) (global-set-key "\C-ck" 'mode-compile-kill) (global-set-key "\C-cn" 'next-error) ; エラー箇所に飛ぶ
(multiline) のセパレーター。
(setq anything-candidate-separator "------------------------------------------------------------------------------------")
という形で自由に変更する事ができます。
anything-hatena-bookmark.el のバイトコンパイル時にエラーがでる。
僕の環境では「sha1-binary という関数は無いよ」というエラーが出ました。その場合は、
M-x install-elisp
で、sha1-el.el をインストールして、
(require 'sha1-el)
.emacs に上記の設定を書くことで対処できます。
(require 'sha1) することで関数がロードされたので、Emacs に sha1.el が入っているぽいですね。というわけで、最新バージョンの anything-hatena-bookmark.el だと、エラー出ないと思います。
anything-hatena-bookmark-get-dump が遅い。
自分のはてなブックマークを検索するanything-hatena-bookmark.elのデータ更新用シェルスクリプト - aki77の日記を利用させてもらいましょう。一瞬です。
anything-hatena-bookmark.el を使うための設定の纏め。
(require 'anything) (require 'anything-config) (require 'anything-migemo) (require 'anything-hatena-bookmark)
という訳で、これだけ .emacs に書いてあれば、大丈夫なはずです!
あとは、M-x anything-hatena-bookmark とタイプするのが面倒な人は、自分でキーバインドを定義するなり、key-chord.el を使うなりしましょう。
という感じで、migemo れるようになって、ブラウザよりも爆速な anything-hatena-bookmark.el で、より良いはてブライフを送りましょう ;-)