理系学生日記

おまえはいつまで学生気分なのか

探索の練習問題

文字列を探す対話的関数を書いてみよ。文字列を探しあてた場合には、その直後にポイントを移動してメッセージ「Found!」を表示する

(defun test-search (word)
  (interactive "ssearch-for: ")
  (when (search-forward word nil t)
      (message "Found!")))

search-forward は前方検索用の関数だけど,第一引数で指定した単語が見つからなかった場合は nil を返す.
だから,検索ワードが見つかったときだけ "Found!" って出力するためには,search-forward 自体の戻り値を判断してやれば良いんじゃないかと.

キルリングに第3要素があれば、それをエコー領域に表示する関数を書いてみよ。キルリングに第3要素がなければ、適切なメッセージを表示せよ。

(defun third-elem-kill-ring ()
  (interactive)
  (let ((elem (nth 3 kill-ring)))
    (if elem
        (message elem)
      (message "not exist 3rd element in kill-ring"))))

ごく自然.