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番目の要素がありません。"))))