読者です 読者をやめる 読者になる 読者になる

simple-hatena-mode内で検索をかけさせるelisp

Emacs

Macだとspotlightでも検索はできるんだけど、はてダラの形式で書いたやつに対してはタイトルとかが分からない。なので、いちいちファイルを開いてみないといけないので大変面倒。というわけで、Rubyのスクリプトは昔作っていたんだけど、それをEmacsから簡単に呼べるようにした。

simple-hatena-mode内でC-cC-sとやるとタグ検索ができるようになっていて、実際にやるとwindowが縦に二分割される。で、ファイルパスとタイトルが表示されるんだけど、ファイルパス上でC-cC-oとかやると、すぐにそのファイルが開けるという感じ。

(defun string-chomp (str)
  (if (string-match "\\(\r\\|\n\\)$" str)
      (substring str 0 (match-beginning 0))
    str))

(defun open-in-emacs ()
  (interactive)
  (switch-to-buffer (find-file-noselect (string-chomp (thing-at-point 'line))))
  )

(define-key global-map "\C-c\C-o" 'open-in-emacs)

(setq hatena-search-path "/Users/yasuhisa/ruby/hatena_search.rb")

(defun hatena-search ()
  "function to search hatena files by tag."
  (interactive)
  (let ((tag (read-string "Tag: "))
	(search-buffer-name "*SimpleHatenaSearch*"))
    (if (get-buffer search-buffer-name)
	(kill-buffer search-buffer-name))
    (if (one-window-p)
	(split-window-horizontally))
    (other-window 1)
    (switch-to-buffer search-buffer-name)
    (insert "\n")
    (start-process-shell-command 
     "simple-hatena-search-mode"
     search-buffer-name
     "ruby" hatena-search-path tag)
    (goto-char (point-max))
    (message "finished")))

(add-hook 'simple-hatena-mode-hook
          '(lambda()
             (progn
               (define-key simple-hatena-mode-map "\C-c\C-s" 'hatena-search)
               )))