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

5.0 KiB
Raw Blame History

title author date wordtwit_post_info categories
Emacs-Lispの勉強 kazu634 2008-12-14
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";}}
Emacs
Lisp

やさしいEmacsLisp講座』を読んで、Emacs-Lispの勉強をしています。今日は検索系の関数の使い方を学びがてら、練習問題を解こうとしていました(まだ途中)。

下のような行を検索し、曜日のところにカーソルを移動させる関数を書いて

修正時刻: Fri Jan 30 22:15:32 1998

とりあえず書いてみました

(defun my-search-timestamp ()
(interactive)
(save-excursion
(let ((key "修正時刻: \\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\) \\(Jan\\|Feb\\|Mar\\|Apr\\|May\\|Jun\\|Jul\\|Aug\\|Oct\\|Nov\\|Dec\\)"))
(goto-line 1)
(re-search-forward key)
(message "found at line %s" (count-lines (point-min) (point))))))
  • defunで関数を定義する
  • interactiveはM-xで呼び出せる手続き…というような意味ここでは
  • save-excursionはポインタの現在位置を記憶しておき、一連の手続きが終わればその位置にポインタを戻す
  • letで検索するキーを指定している
  • goto-line 1で論理行頭へ
  • r(egular)e(xpression)-search-forwardで正規表現を用いた検索
  • messageはミニバッファーにメッセージを表示

とりあえず検索して、発見するところまで書けました。

やさしいEmacs‐Lisp講座

やさしいEmacsLisp講座