2015年3月26日木曜日

Emacsからspot-light

 辞書検索もできるようになったのだからspot-lightもできるようにしたいじゃないか。mdfindコマンドでspot-light検索できることは知っていたのだけれど、プログラミングするのが面倒だなぁ、と思っていたらすごい簡単な方法があることを知る。

http://truongtx.me/2013/09/13/macos-spotlight-search-inside-emacs/

 locateの実行コマンドをmdfindに置き換えるだけ。
 というか、locateというコマンドのことなどすっかり忘れていた。ああ、そういえば、そんなもんあったな。
 結果が表示されるlocateから「!」で「open」と実行してもいいんだけど、Meadowのころにどこかで見つけていれておいた、diredでの外部プロセス実行をマップすることに。(locate-modeはdired-modeを継承していたので)

;; diredで外部プロセス起動
(add-hook 'dired-mode-hook
   (lambda ()
     (define-key dired-mode-map
       "W" 'dired-open)))

(defun dired-open ()
  (interactive)
  (let* ((file (dired-get-filename))
  (extension (file-name-extension file)))
    (deferred:process "open" file)))

;; locate-modeで外部プロセス起動
(add-hook 'locate-mode-hook
   (lambda ()
     (define-key locate-mode-map
       "W" 'dired-open)))