Emacs-Lispの勉強

Dec 14, 2008   #Emacs  #Lisp  :

やさしいEmacs‐Lisp講座』を読んで、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講座

やさしいEmacs‐Lisp講座