コメント応答
>ども、Plus です。
どもども。コメントありがとう!
>>> #ただし美人教師とのマンツーマン放課後居残り補習なら積極的に受けさせてもらいますw
>> ちなみに補修担当は,体育会系のゴツイ,ハードゲイの先生だそうです。
>
> あーはいはい、物を修理するのはガチホ○先生にまかせておきますから
> #だって【補修】だもんね。
> 補習の方は、びじんセンセー щ(゜□゜щ)カモォォォン
緊急連絡ですが,美人センセーも一緒に`補修'を行うようです。
> …気を取り直して Exercise ですけど、
あいw
> region 内で何かを処理する場合は
> narrowing すると開始位置/終了位置の point を気にしなくていいので便利ですよ〜
ほほう・・・。ゴクリ。
> と書いた所で Chapter 13 を読んでみたら、
> そちらの解説も同じように point で判定を行ってるんですね。
> とりあえず再帰版を narrowing を使用して修正してみました。どうでしょうか。
ほ〜。
グレイトッ!!
その発想はなかたヨー。
narrowing してしまえば,その範囲全てが対象になるわけですね。
Emacs Lisp Intro では,たぶん re-search-forward で,
引数で BOUND を指定することを学ばせたかったのかなぁ,
なんて思っちょります。
つまり,指定しないと行き過ぎちゃうよ〜,ということを。
でも,narrowing するのも1つの方法だし,
widen は出てきたけど,narrow-to-region は出てなかったはず。
教訓
region を対象にごにょごにょする関数を書くときは,
narrow-to-region を使うと楽になることがあるぞ。
ただし,save-restriction を忘れるなよっ!
ありがとうございました。うっす。ごっつぁんです。
(defun recursive-count-punctuation-marks (beg end) "Print the number of punctuation marks in the region. A punctuation mark is period, comma, semicolon, colon, exlamation mark, or question mark." (interactive "r") (save-excursion (save-restriction (narrow-to-region beg end) (goto-char (point-min)) (message "There are %d punctuation marks." (count-puncs-recursively))))) (defun count-puncs-recursively () (if (re-search-forward "[.,;:!?]" nil t) (1+ (count-puncs-recursively)) 0))