blog/content/post/2008/12/14/2008-12-14-00001095.md

105 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Emacs-Lispの勉強
author: kazu634
date: 2008-12-14
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:4449;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- Emacs
- Lisp
---
<div class="section">
<p>
<a href="http://d.hatena.ne.jp/asin/4906391702" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4906391702', 'やさしいEmacsLisp講座');">やさしいEmacsLisp講座</a>』を読んで、Emacs-Lispの勉強をしています。今日は検索系の関数の使い方を学びがてら、練習問題を解こうとしていました(まだ途中)。
</p>
<blockquote>
<p>
下のような行を検索し、曜日のところにカーソルを移動させる関数を書いて
</p>
<blockquote>
<p>
修正時刻: Fri Jan 30 22:15:32 1998
</p>
</blockquote>
</blockquote>
<h4>
とりあえず書いてみました
</h4>
<pre class="syntax-highlight">
<span class="synSpecial">(</span><span class="synStatement">defun</span> my-search-timestamp <span class="synSpecial">()</span>
<span class="synSpecial">(</span>interactive<span class="synSpecial">)</span>
<span class="synSpecial">(</span>save-excursion
<span class="synSpecial">(</span><span class="synStatement">let</span> <span class="synSpecial">((</span>key <span class="synConstant">&#34;修正時刻: \\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\) \\(Jan\\|Feb\\|Mar\\|Apr\\|May\\|Jun\\|Jul\\|Aug\\|Oct\\|Nov\\|Dec\\)&#34;</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>goto-line <span class="synConstant">1</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span>re-search-forward key<span class="synSpecial">)</span>
<span class="synSpecial">(</span>message <span class="synConstant">&#34;found at line %s&#34;</span> <span class="synSpecial">(</span>count-lines <span class="synSpecial">(</span>point-min<span class="synSpecial">)</span> <span class="synSpecial">(</span>point<span class="synSpecial">))))))</span>
</pre>
<ul>
<li>
defunで関数を定義する
</li>
<li>
interactiveはM-xで呼び出せる手続き…というような意味ここでは
</li>
<li>
save-excursionはポインタの現在位置を記憶しておき、一連の手続きが終わればその位置にポインタを戻す
</li>
<li>
letで検索するキーを指定している
</li>
<li>
goto-line 1で論理行頭へ
</li>
<li>
r(egular)e(xpression)-search-forwardで正規表現を用いた検索
</li>
<li>
messageはミニバッファーにメッセージを表示
</li>
</ul>
<p>
とりあえず検索して、発見するところまで書けました。
</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/4906391702/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4906391702/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/51C4N4SHT7L._SL160_.jpg" class="hatena-asin-detail-image" alt="やさしいEmacsLisp講座" title="やさしいEmacsLisp講座" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/4906391702/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4906391702/?tag=hatena_st1-22&ascsubtag=d-7ibv', 'やさしいEmacsLisp講座');">やさしいEmacsLisp講座</a>
</p>
<ul>
<li>
<span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B9%AD%C0%A5%CD%BA%C6%F3" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%B9%AD%C0%A5%CD%BA%C6%F3', '広瀬雄二');" class="keyword">広瀬雄二</a>
</li>
<li>
<span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AB%A5%C3%A5%C8%A5%B7%A5%B9%A5%C6%A5%E0" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%A5%AB%A5%C3%A5%C8%A5%B7%A5%B9%A5%C6%A5%E0', 'カットシステム');" class="keyword">カットシステム</a>
</li>
<li>
<span class="hatena-asin-detail-label">発売日:</span> 1999/01
</li>
<li>
<span class="hatena-asin-detail-label">メディア:</span> 単行本
</li>
<li>
<span class="hatena-asin-detail-label">購入</span>: 4人 <span class="hatena-asin-detail-label">クリック</span>: 145回
</li>
<li>
<a href="http://d.hatena.ne.jp/asin/4906391702" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4906391702', 'この商品を含むブログ (30件) を見る');" target="_blank">この商品を含むブログ (30件) を見る</a>
</li>
</ul>
</div>
<div class="hatena-asin-detail-foot">
</div>
</div>
</div>