Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

8. テキストの切り取りと保存

Programming in Emacs Lisp*1の8章の練習問題を解いてみました。識者の皆さん,アドバイスをお願いします。

文字列を検索するインタラクティブな関数を書きなさい。もし文字列の検索に成功すればその直後にポイントを移動し、「見つけた!」というメッセージを表示するようにしなさい。(この関数の名前に search-forward という名前を使ってはいけない。そうしてしまうと、元の Emacs で定義された現在の search-forward を上書きしてしまう。例えば test-search という名前を使いなさい。

(defun 87search-foward (str)
  (interactive "sInput string: ")
  (if (search-forward str nil nil 1)
      (message "見つけた!")))

現在の kill リングの三番目の内容をエコー領域に表示するような関数を書きなさい。その際、もし kill リングに三番目の要素が無い場合にも適切なメッセージを表示するようにしなさい。

(defun 87kill-ring-third ()
  (interactive)
  (let (str)
    (if (>= (length kill-ring) 3)
	(progn
	  (setq str (car (nthcdr 2 kill-ring)))
	  (message "%s" str))
      (message "3番目の要素がありません。"))))