blog/content/post/2009/10/13/2009-10-13-00001238.md

144 lines
6.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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
---
<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に行ってきた &#8211; なんとなく日記');" target="_blank">五反田Emacs#01に行ってきた &#8211; なんとなく日記</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 &#8211; 武蔵の日記');" target="_blank">2009-10-12 &#8211; 武蔵の日記</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に行ってきた &#8211; なんとなく日記');" target="_blank">五反田Emacs#01に行ってきた &#8211; なんとなく日記</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">&#34;My Anything&#34;</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">&#34;Insert String&#34;</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span>candidates . <span class="synSpecial">(</span><span class="synConstant">&#34;quote&#34;</span> <span class="synConstant">&#34;code&#34;</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>action . <span class="synSpecial">((</span><span class="synConstant">&#34;insert&#34;</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">&#34;Insert&#34;</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span>candidates . <span class="synSpecial">(</span><span class="synConstant">&#34;quote&#34;</span> <span class="synConstant">&#34;code&#34;</span> <span class="synConstant">&#34;foo&#34;</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>action . <span class="synSpecial">((</span><span class="synConstant">&#34;insert&#34;</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>