[xyzzy:04507] Re: cvs-mode
- Subject: [xyzzy:04507] Re: cvs-mode
- From: nobu.nokada@xxxxxxxxxxxx
なかだです。
At Thu, 11 May 2000 11:23:02 +0900,
KAMEI Tetsuya <kamei@xxxxxxxxxxxx> wrote:
> | (add-hook '*find-file-hooks* 'cvs::open-file)
> |
> | という風にしてみたんですが、効果ありません。フックの使い方が間
> | 違ってるんでしょうか。
>
> すいません。find-file から *find-file-hooks* を呼ぶタ
> イミングが間違ってます。フックが呼ばれた時点では、読み
> 込んだバッファがカレントになってません。
なるほど、たしかに。
> そのうち直します。
とりあえずこんなとこで逃げておくことにしました。
--- files.l.orig Tue Feb 1 22:34:31 2000
+++ files.l Fri May 12 01:12:56 2000
@@ -169,7 +169,9 @@
(or nomsg
(message "新しいファイルです")))))
(set-auto-mode last-buffer))))
- (mapcan 'funcall *find-file-hooks*)
+ (save-excursion
+ (set-buffer buffer)
+ (mapcan 'funcall *find-file-hooks*))
buffer))
(defun find-file (filename &optional encoding nomsg)
と、ついでにさらに質問(^^;ですが、
(1) ファイルを保存したときになんかする、っていうのは何か方法あ
りますか? elisp なら after-save-hook みたいなの。
save-buffer の置き換えしかなし?
C++ レベルなら Buffer::save() をオーバーライドして、とかか
なと思ったんですが、でもそれだとバッファのクラス自体を変え
なきゃならなくなるし、やっぱり不便だ。> C++
ていうか、lisp でサブクラス化とかメソッドのオーバーライドと
かってできればと思いましたが、それだと CLOS とか Scheme に
なっちゃうんでしょうか。いやどっちも使ったことないんで分か
りませんが。
(2) keymap について、こんな風にしてみたんですが、minor-mode で
のうまい手ってないでしょうか。
コメントアウトした部分のようなことができるといいんですが、
これは現時点においての sparse keymap に対してしか使えません
し、これでもやはり他のところで同じようなことをされると分か
らなくなるし…。
いっそ global/local keymap ではなく keymap のリストを持つよ
うにするとか。
(defun cvs::set-key ()
(interactive)
(let ((map (copy-keymap (local-keymap))))
; ((map (make-sparse-keymap)))
; (setf (cdr (last map)) (local-keymap))
(mapcar #'(lambda (k) (define-key map k cvs::mode-map))
cvs::keymap-prefixes)
(use-keymap map)))