144 lines
6.3 KiB
Markdown
144 lines
6.3 KiB
Markdown
---
|
||
title: とりあえずサンプルスクリプトを作成してみる
|
||
author: kazu634
|
||
date: 2009-10-13
|
||
url: /2009/10/13/_1350/
|
||
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
|
||
|
||
---
|
||
<div class="section">
|
||
<p>
|
||
色々と参考にして作成してみます。
|
||
</p>
|
||
|
||
<ul>
|
||
<li>
|
||
<a href="http://www.slideshare.net/k1LoW/anythingcsource" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.slideshare.net/k1LoW/anythingcsource', 'はじめてのanything-c-source-*');" target="_blank">はじめてのanything-c-source-*</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://d.hatena.ne.jp/conceal-rs/20090930/1254271076" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/conceal-rs/20090930/1254271076', '五反田Emacs#01に行ってきた – なんとなく日記');" target="_blank">五反田Emacs#01に行ってきた – なんとなく日記</a>
|
||
</li>
|
||
</ul>
|
||
|
||
<h4>
|
||
name, candidates, actionについて
|
||
</h4>
|
||
|
||
<p>
|
||
name, candidates, actionはこのような説明があります:
|
||
</p>
|
||
|
||
<blockquote title="2009-10-12 - 武蔵の日記" cite="http://d.hatena.ne.jp/sirocco634/20091012#1255336649">
|
||
<dl>
|
||
<dt>
|
||
name (必須)
|
||
</dt>
|
||
|
||
<dd>
|
||
source の名前。この値は source からヒットしたリストの上に表示されるタイトルでもある。この値はユニークである必要がある。
|
||
</dd>
|
||
</dl>
|
||
|
||
<dl>
|
||
<dt>
|
||
candidates (candidates-in-buffer 要素を指定しなかった場合、必須)
|
||
</dt>
|
||
|
||
<dd>
|
||
source から候補を取得するための方法を指定する。この要素に指定できるのは、変数、引数なしの関数、あるいは実際の候補のリストである。
|
||
</dd>
|
||
</dl>
|
||
|
||
<dl>
|
||
<dt>
|
||
action (type 要素が指定されなかった場合、必須)
|
||
</dt>
|
||
|
||
<dd>
|
||
action 要素は「(表示文字列 . 関数)ペアー」のリストである。指定された関数は選択された候補を引数として呼び出される。
|
||
</dd>
|
||
</dl>
|
||
|
||
<p>
|
||
<cite><a href="http://d.hatena.ne.jp/sirocco634/20091012#1255336649" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/sirocco634/20091012#1255336649', '2009-10-12 – 武蔵の日記');" target="_blank">2009-10-12 – 武蔵の日記</a></cite>
|
||
</p>
|
||
</blockquote>
|
||
|
||
<p>
|
||
このように解説がなされているので、試してみました。こんな風にも書いてあった、ということもあり:
|
||
</p>
|
||
|
||
<blockquote title="なんとなく日記" cite="http://d.hatena.ne.jp/conceal-rs/20090930/1254271076">
|
||
<p>
|
||
name, action, candidates だけがあればだいたい大丈夫
|
||
</p>
|
||
|
||
<p>
|
||
<cite><a href="http://d.hatena.ne.jp/conceal-rs/20090930/1254271076" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/conceal-rs/20090930/1254271076', '五反田Emacs#01に行ってきた – なんとなく日記');" target="_blank">五反田Emacs#01に行ってきた – なんとなく日記</a></cite>
|
||
</p>
|
||
</blockquote>
|
||
|
||
<h4>
|
||
サンプル
|
||
</h4>
|
||
|
||
<pre class="syntax-highlight">
|
||
<span class="synSpecial">(</span><span class="synStatement">defun</span> my-anything-find-file <span class="synSpecial">()</span>
|
||
<span class="synConstant">"My Anything"</span>
|
||
<span class="synSpecial">(</span>interactive<span class="synSpecial">)</span>
|
||
<span class="synSpecial">(</span>anything <span class="synSpecial">(</span><span class="synStatement">list</span>
|
||
temp-c-source-hatena<span class="synSpecial">)))</span>
|
||
<span class="synSpecial">(</span><span class="synStatement">setq</span> temp-c-source-hatena
|
||
<span class="synSpecial">'((</span>name . <span class="synConstant">"Insert String"</span><span class="synSpecial">)</span>
|
||
<span class="synSpecial">(</span>candidates . <span class="synSpecial">(</span><span class="synConstant">"quote"</span> <span class="synConstant">"code"</span><span class="synSpecial">))</span>
|
||
<span class="synSpecial">(</span>action . <span class="synSpecial">((</span><span class="synConstant">"insert"</span> . insert<span class="synSpecial">)))))</span>
|
||
</pre>
|
||
|
||
<p>
|
||
これをスクラッチ・バッファーで C-x C-e して、M-x my-anything-find-file してやると、こうなります。
|
||
</p>
|
||
|
||
<p>
|
||
<center>
|
||
</center>
|
||
</p>
|
||
|
||
<p>
|
||
<a href="http://flickr.com/photos/42332031@N02/4007300814/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://flickr.com/photos/42332031@N02/4007300814/', '');" title="anythingのサンプル1"><img src="http://farm3.static.flickr.com/2630/4007300814_5ba6ffb8f3.jpg" /></a>
|
||
</p></p>
|
||
|
||
<p>
|
||
この状態で候補を選択してあげると、選択した文字列がバッファーに挿入されます。
|
||
</p>
|
||
|
||
<p>
|
||
これを次のように変更すると、どうなるかというと:
|
||
</p>
|
||
|
||
<pre class="syntax-highlight">
|
||
<span class="synSpecial">(</span><span class="synStatement">setq</span> temp-c-source-hatena
|
||
<span class="synSpecial">'((</span>name . <span class="synConstant">"Insert"</span><span class="synSpecial">)</span>
|
||
<span class="synSpecial">(</span>candidates . <span class="synSpecial">(</span><span class="synConstant">"quote"</span> <span class="synConstant">"code"</span> <span class="synConstant">"foo"</span><span class="synSpecial">))</span>
|
||
<span class="synSpecial">(</span>action . <span class="synSpecial">((</span><span class="synConstant">"insert"</span> . message<span class="synSpecial">)))))</span>
|
||
</pre>
|
||
|
||
<p>
|
||
このようになります(C-x C-eを忘れずに):
|
||
</p>
|
||
|
||
<p>
|
||
<center>
|
||
</center>
|
||
</p>
|
||
|
||
<p>
|
||
<a href="http://flickr.com/photos/42332031@N02/4006542967/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://flickr.com/photos/42332031@N02/4006542967/', '');" title="anythingのサンプル2"><img src="http://farm4.static.flickr.com/3492/4006542967_5d62d0c82c.jpg" /></a>
|
||
</p></p>
|
||
|
||
<p>
|
||
そして候補を選択すると、ミニバッファーに選択文字列が表示されます。
|
||
</p>
|
||
</div> |