[xyzzy:04112] Re: fluid-let
- Subject: [xyzzy:04112] Re: fluid-let
- From: Yutaka OIWA <oiwa@xxxxxxxxxxxxxxxxxxxxx>
おおいわです。
>> On Fri, 4 Feb 2000 12:11:46 +0900, Tetsuya Kamei <kamei@xxxxxxxxxxxx> said:
Tetsuya> んー、これと同じではないかと…。
Tetsuya> (let ((buffer-read-only nil))
Tetsuya> (declare (special buffer-read-only))
Tetsuya> (insert "abc"))
…………………。(^^;;
# buffer-read-only が special ならいいのになぁとか
# 思いつつ書いたのですが、local に宣言できるのを
# すっかり見落としていました。
……確かに Common Lisp マニュアルには
(defun hack (thing *mod*) ;The binding of the parameter
(declare (special *mod*)) ; *mod* is visible to hack1,
(hack1 (car thing))) ; but not that of thing
(defun hack1 (arg)
(declare (special *mod*)) ;Declare references to *mod*
; within hack1 to be special
(if (atom arg) *mod*
(cons (hack1 (car arg)) (hack1 (cdr arg)))))
という例はあるのですが、今回の場合だと2番目の declare は
なくてもいいということなのでしょうか……。(?_?)
まぁ動いたからいいや (^^;;
buffer-read-only が buffer-local であることを考えると
素直に declare を使った方がいいですね。
(拙作 fluid-let は set-buffer すると違うものに書き戻してしまう)
ついでというわけでもないのですがちょっと質問が。
# お手の空いている時で結構です。
(set-text-color from to &optional foreground background char extend-p)
の char と、
(set-text-attribute from to tag &key :foreground :background :bold :underline :strike-out :prefix :extend)
の tag はどのように使えばいいのでしょうか。
tag はとりあえず後でそれを使って操作しているのが grep.l とかから
分かったのですが、単純にテキストの一部に下線を付けたい時などは、
nil を渡してしまっていいのでしょうか。
--
大岩 寛 Yutaka Oiwa
東京大学大学院 理学系研究科情報科学専攻 修士課程 米澤研究室
<oiwa@xxxxxxxxxxxxxxxxxxxxx>, <yutaka@xxxxxxxxxxxxxxxxxxxxx>
PGP fingerprint = C9 8D 5C B8 86 ED D8 07 EA 59 34 D8 F4 65 53 61