--- title: とりあえずサンプルスクリプトを作成してみる author: kazu634 date: 2009-10-13 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4827;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - Emacs ---

色々と参考にして作成してみます。

name, candidates, actionについて

name, candidates, actionはこのような説明があります:

name (必須)
source の名前。この値は source からヒットしたリストの上に表示されるタイトルでもある。この値はユニークである必要がある。
candidates (candidates-in-buffer 要素を指定しなかった場合、必須)
source から候補を取得するための方法を指定する。この要素に指定できるのは、変数、引数なしの関数、あるいは実際の候補のリストである。
action (type 要素が指定されなかった場合、必須)
action 要素は「(表示文字列 . 関数)ペアー」のリストである。指定された関数は選択された候補を引数として呼び出される。

2009-10-12 – 武蔵の日記

このように解説がなされているので、試してみました。こんな風にも書いてあった、ということもあり:

name, action, candidates だけがあればだいたい大丈夫

五反田Emacs#01に行ってきた – なんとなく日記

サンプル

(defun my-anything-find-file ()
"My Anything"
(interactive)
(anything (list
temp-c-source-hatena)))
(setq temp-c-source-hatena
'((name . "Insert String")
(candidates . ("quote" "code"))
(action . (("insert" . insert)))))

これをスクラッチ・バッファーで C-x C-e して、M-x my-anything-find-file してやると、こうなります。

この状態で候補を選択してあげると、選択した文字列がバッファーに挿入されます。

これを次のように変更すると、どうなるかというと:

(setq temp-c-source-hatena
'((name . "Insert")
(candidates . ("quote" "code" "foo"))
(action . (("insert" . message)))))

このようになります(C-x C-eを忘れずに):

そして候補を選択すると、ミニバッファーに選択文字列が表示されます。