Visible Bookmarks 用 anything-source
anything-c-source-bm
id:rubikitch さん作の anything-c-source-bm を少し改造。
※実は、自作した後 id:rubikitchさんが既に作っていたのを発見してorz
- 空行に設定したブックマークがリスティングされなかったので、(適当に)修正
- annotation を表示するようにした
(defvar anything-c-source-bm '((name . "Visible Bookmarks") (init . anything-c-source-bm-init) (candidates-in-buffer) (action . (("Goto line" . (lambda (candidate) (goto-line (string-to-number candidate)))))))) (defun anything-c-source-bm-init () (let ((bookmarks (bm-lists)) (valid-bm-marks) ) (setq valid-bm-marks (delq nil (mapcar (lambda (bm) (let ((start (overlay-start bm)) (end (overlay-end bm)) (annotation (or (overlay-get bm 'annotation) "")) ) (if (< (- end start) 1) ; org => (if (< (- end start) 2) nil (format "%7d: [%s]: %s" (line-number-at-pos start) annotation (buffer-substring start (1- end)))))) (append (car bookmarks) (cdr bookmarks))))) (with-current-buffer (anything-candidate-buffer 'global) (insert (mapconcat (lambda (item) item) valid-bm-marks "\n")))))
anything-c-source-bm-ext
(defvar anything-c-source-bm-ext '((name . "Visible Bookmarks AllBuffers") (init . anything-c-source-bm-ext-init) (candidates-in-buffer) (action . (("Goto line" . anything-c-source-bm-ext-action))))) (defun anything-c-source-bm-ext-init () (let* ((bookmarks (bm-all-bookmarks)) (lines (mapconcat 'my-bm-format-line bookmarks ""))) (if (null bookmarks) (message "No bookmarks.") (with-current-buffer (anything-candidate-buffer 'global) (insert lines))))) (defun anything-c-source-bm-ext-action (candidate) (let* ( (items (delete "" (split-string candidate " "))) (buffer-name (car items)) (line-number (+ 1 (string-to-number (second items)))) ) (switch-to-buffer buffer-name) (goto-line line-number))) ;; bm-format-lineのオリジナルバージョン ;; →annotationも表示させたいので (defun my-bm-format-line (bm) (let ((buf (overlay-buffer bm))) (with-current-buffer buf (let ((string (format "%-30s %5s [%s] %s" buf (count-lines (point-min) (overlay-start bm)) (or (overlay-get bm 'annotation) "") (buffer-substring (overlay-start bm) (overlay-end bm))))) (put-text-property 0 (length string) 'bm-buffer buf string) (put-text-property 0 (length string) 'bm-bookmark bm string) string))))
次は、保存した全てのブックマークをリスティングする anything-sourceを作りたい。
2008/9/16追記
anything-c-source-bm は、Matsuyamaさん作だとの指摘をいただきました。
「ありえるえりあ」の中の人だったんですね!
失礼しました。
そして、id:rubikitch さんが更に改良をして加えてくれたので、ありがたくパクらせて頂きます。
2008-09-13 - http://rubikitch.com/に移転しました
しかし、id:rubikitch さんの情報収集力とレスポンスの速さは脱帽です。