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

[xyzzy:02196] 質問: insert-file-contents について



はじめまして。

このMLの皆さんに刺激されて、見よう見まねでマクロを書き始めました。(とい
うより、~/lisp/の中から適当なのを探してきて、意味もよく分からずにつなぎ
合わせている状態です。)それでもなんとか、TeXソースのコンパイル(但し、
ソースにミスがあると、サブプロセスが固まって殺せないけど)とdvioutでのプ
レビューができるところまでこぎ着けました。

ここで欲が出て、DOS時代にお世話になっていた優れもののスペルチェッカー、
MicroSpellもなんとか動かせないかと思い始めました。VZのマクロにあった、キ
ー入力を監視してミススペルを知らせるなどという高級なことは最初から考えず、
とりあえずバッファーのスペルチェックができればいいと試行錯誤しています。

そこで質問なのですが、次のようにmspell-bufferを定義して実行すると、

;;; MicroSpell; MicroSpellのspell.exeをmspell.exeに改名しています。
(defun mspell-buffer ()
  (interactive)
  (if (need-buffer-save-p (selected-buffer))(save-buffer))
  (unwind-protect
      (save-excursion
	(setq buffname (buffer-name (selected-buffer)))
	(setq temp (make-temp-file-name "mspl"))
	(setq tempbak (concat (string-right-trim "[Tt][Mm][Pp]" temp) "bak"))
	(write-file temp t)
	(call-process (format nil "mspell -- ~A" temp) :show :maximize :wait t)
	(if (yes-or-no-p "元ファイルをスペルチックの結果と入れ換えますか?")
	    (progn
	      (set-buffer buffname);念のため??
	      (erase-buffer buffname)
	      (insert-file-contents temp t);???
	    ))
	(when temp (delete-file temp))
	(if (file-exist-p tempbak)
	    (delete-file tempbak))
      )))

「誰かが勝手にファイルを変更しています。ディスクから読み込みますか?」と
いうメッセージが出てしまいます。(一応、「いいえ」にすると、MicroSpellが修
正してくれたものと置き変わる。)

この「誰かが勝手に」のメッセージを出さないようにするにはどうすればいいの
でしょうか。Mule.elにあるinsert-file-contentsの説明は読むには読んだので
すが、多分、xyzzyのとは違うのでしょうね(よく理解できていない)。それと、
マクロ実行後、時々、xyzzyが他のアプリの背後に隠れてしまいます。プログラ
ミングは全くの素人なので、きっと無茶なことをしているのだと思いますが。

本当はDOS窓を出さずに、xyzzyのバッファーでやれたらもっといいのですが、単
純に出力をバッファーにしたら、制御文字がそのまま出てきて固まってしまいま
す。どなたかもっといいやり方をご存じでしたら教えてください。

今盛り上がっている話題じゃなくてすみません。

足立 公也

Index Home