いやー、知らなかった。AlfredもDashも使っててこの連携をやってないなんて。もしかして普通の人は連携してるのかな。
連携の前にそれぞれの概要
Alfred
ランチャーアプリケーションです。僕はControl+Spaceをホットキーに使っています。
Dash
リファレンス(docset)を閲覧したり、スニペットを管理できるアプリケーションです。僕はもっぱらスニペット管理に使っていました。日記(日々の記録)のテンプレとか自分のメールアドレスとか。リファレンスのほうはあまり使っていませんでした。
Dashの検索をAlfredから行う
DashにはURLスキームがあります。
AlfredにはURLを指定したカスタム検索ができます。
つまり、この2つの機能を組み合わせればAlfredからDashの検索が可能になります。Alfredから操作できるということはいつなんどきでも秒速でリファレンス検索ができるということです。
設定方法
Dash側の設定は要りません。
Alfred側の設定のためAlfredのPreferenceを開きます。

左側の項目からCustom Searchesを選択し、右側に現れたリストの+ボタンを押します。

次のような画面が現れるので項目を埋めます。

- Search URL
dash://{query}と入れておきます。これでDashがURLスキーム経由で呼び出されます - Title これはAlfredで検索するときに出るタイトルで、なんでも良いです
- Keywords Alfredは基本的にはアプリケーションランチャーなので、いきなりリファレンス検索したい語句を入力しても検索はしてくれません。ここで作るカスタム検索を呼び出すよということを指示するためのキーワードを決めておく必要があります。通常は短いアルファベットにするはず。ここではdsとしました。
- Validation
ここに入れた語句をSearch URLの
queryの部分に入れて検索テストを行います。無事Dashで検索ができていればOK - アイコン 右側のアイコン部分に好みの画像をドロップするとアイコンを設定できます。見た目で何の検索をするのかわかりやすくなるので入れておいたほうがいいかも
使う
Alfredを起動してds (最後はスペース)と入れてあげるとさっき設定した画像やタイトルがでてきます。ここに語句を入力して決定すればDashでの検索が完了します。便利すね。

特定のDocsetのみを検索したい
さきほどはDash全体で検索をかけましたが、特定のリファレンスのみを対象とした検索をしたいことのほうが多いでしょう。そのためには2つの方法があります。
どちらもキーワードというものを使います。Dashの設定画面のDocsetタブを見るとそれぞれのDocsetに対応するキーワードがわかります。
例えばC++のリファレンスのキーワードはcpp:です。

検索語句でキーワードを指定
先ほど設定したカスタム検索をそのまま使えます。

上のようにキーワード付きで検索語句を入力すれば対象のDocset内で検索をしてくれます。
こんな風に。

Alfredでキーワードを指定したカスタム検索を作る
最初と同じ手順でAlfredのCustom Searchesを新規作成し、Search URLにはキーワードも入れておくようにします。これで対象のDocsetのみを検索するAlfredのカスタム検索が作れました。

最後に
Docsetを指定するためのキーワードは独自のものに編集できます。特にDashに手動で認識させたDocsetは物によってはキーワードがdoxygenになっていたりするので編集しないと使い物にならないかもしれません。
あと、Alfredで作る新しい検索とかの条件(上でカスタム検索とか適当に呼んでるやつ)のことを普通はなんて言うんでしょうかね?