2016年8月6日土曜日

Spotlite

 MacOSのSpotliteをコマンド(mdfind)からEmacsで使えることは知っていたのだけど、ほとんど使ってなかった。下記のようにしてlocateのかわりにしていたのだけど。

(setq locate-command "mdfind")

 検索がファイル名のリストで、しかもファイルの中身や、タグもひっかかってしまうので、わけがわからなかったからだ。Spotliteだと、プレビューがあるからいいのだけど。でもファイル検索はやはりfindを使うより圧倒的に早い。
 el-getでmdfind-dired.elを落としてきたりした。mdfind-dired-nameでファイル名検索もできる。でもやっぱりhelmから使いたいよね。
 というわけでググってみた。
 helm-locateから使うには

(setq helm-locate-command
      (case system-type
 ('gnu/linux "locate -i -r %s")
 ('berkeley-unix "locate -i %s")
 ('windows-nt "es %s")
 ('darwin "mdfind -name %s %s")
 (t "locate %s")))

 で、helm-spotliteをつくる方法も同じとことにあった。

(defun helm-spotlight ()
  (interactive)
  (helm :buffer "*helm: spotlight*"
 :sources '(helm-source-mac-spotlight)))

Use mdfind instead of locate in helm-locate in OS X layer

;; locateのコマンドで引数を使う方法(こんな感じ?)
(setq locate-make-command-line (lambda(x) (list locate-command "-name"
search-string)))