with-temp-buffer に罠を見た。

どーも!
ユニクロのフリースを,昔の感覚で,ついつい L サイズを買って,
家に帰ってきて着てみたら,きつい。あぁ,そうか,
オレは成長したんだ,と,自分の成長に驚いている
whitypig です。
体がでかくなったのは間違いないけど,要するにでぶっただけです。


昔,whitypig さんは書きました。
string-match の逆版。その名も,string-match-backward。
オレの単語復習プログラム内で使っていて,挙動がおかしいところを発見し,
探っていたら見つからず。
そして時間を空けて,もっかいチャレンジしたら,おそらくであろう所を発見し,
それが,string-match-backward。

(string-match-backward "school" "I go to school by bus.") ; => 9 OK
(match-string 0 "I go to school by bus.") ; => "" OUCH!!
(match-beginning 0) ; => 0 がーん。

(string-match "school" "I go to school by bus.")
(match-string 0 "I go to school by bus.") ; => "school" グッジョブ!!

(let ((s "I go to school by bus."))
  (string-match-backward "school" s)
  (match-string 0 s)) ; => "chool " これで一応オーケー。

たぶん with-temp-buffer 内でごにょってるから,
べっぱんで評価するといかんちゅうことなのかな。
だから,let 内では temp-buffer が生きている? から,
大丈夫なんだと思う。


Emacs Lisp Manual 読めばわかりそうだけど,
なんか風邪引いたみたいで,熱がある疑いがあるので,
けど,インフルだったら怖いので熱を計らないという,
なんともガキっぽい感じを醸し出しています。


というか,よくこの状態で今まで正常に動作していたなぁと。
どうやって直そうか。。。
見当がつかん。
backward-search はなんとかして使いたいんだよねぇ。。。