[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:08384] *before-save-buffer-hook* と no-or-yes-p



つづけて失礼します、おおばです。質問があります。長くなりますが、
よろしくお願いします。

前メールのrenumber-sections.lは番号の並びを

           %%% #2                  %%% #1
           %%% #3          ->      %%% #2
           %%% #7.5                %%% #2.1

このように書き換えるものなのですが、*before-save-buffer-hook*に
hookしてセーブ時に自動実行しようとしています。

番号の並びに不整合(1.2 の次に階層が飛んで 1.2.3.4が来る場合)が
あると no-or-yes-p ダイアログボックスを出して、"No"なら
(goto-point (point-max))で検索を終了させ、"Yes"ならどうにか体裁を
つけて最後までやってしまうのですが、

* 不整合がなければ最後まで行ってセーブ完了。
* no-or-yes-pで"No"を選択すればそこまでの処理でセーブして完了。

しかし、ここで"Yes"を選択するとリナンバーの処理は終わりますが、セ
ーブされません。

そこで以下のコードを*scrach*バッファでそれぞれ評価して、test.txt
を作り、適当に改行をして(modifiedにして)save-bufferしてみました。
(実験する時、編集中のbufferがあればsaveしてから行ってください)

(defun save-test ()
  (interactive)
  (cond ((no-or-yes-p "さぁ、どっち!")
	 (insert (format nil "Yesです\n")))
	(t
	 (insert (format nil "Noです\n")))
	))

(add-hook '*before-save-buffer-hook* #'save-test)


文字は出力されましたが、........ あっ、どちらもセーブされません。

yes-or-no-pでも同じ結果でした。私は根本的に使い方を間違っているの
でしょうか。よろしくご教授下さい。

--
OHBA Masahiro (おおば正宏)
mailto:arbos@xxxxxxxxxxxxxxxx
http://www.venus.dti.ne.jp/~arbos/

Index Home