[xyzzy:09029] Re: fillの質問
- Subject: [xyzzy:09029] Re: fillの質問
- From: YAMAMOTO Taizo <ymtz@xxxxxxxxxxxxxxx>
- X-mailer: Datula version 1.51.09 for Windows
山本です。
武井進さんの<20040722124049.07C0.SUSUMU-TAKEI@xxxxxxxxxxxxxxxxx>から
>
>◆質問1
(略)
>行頭から書いた場合は、例にありますように、1行目の先頭の「・」分、2行目
>以降は、ちゃんと先頭にスペースを入れてくれます。
>(常にこうなって欲しいのです。)
通常のfillではなく、flex-fillではないでしょうか?手元の環境にはflex-fillを
入れてないので未確認ですが、下みたいにするとどうなりますか?
(defvar *flexible-fill-bullet-prefix-regexp* "^ *\\(・\\|[0-9]+)\\)")
>◆質問2
>
>それから、漢字の場合は、リターンキー(漢字を確定した瞬間)で改行してくれ
>ますが、アルファベットの場合、スペースキーじゃないと改行してくれません。
>アルファベットもリターンキーで改行させたい場合はどうしたらよいのでしょう
>か?
動作検証は仕切れていませんが、次のように.xyzzyに書いて試してください。
(defun foo-func ()
(and auto-fill *auto-fill-hook
(funcall *auto-fill-hook *last-command-char*)))
(add-hook '*pre-command-hook* 'foo-func)
それなりに動くような気がします。
以下はおまけです。
空白やタブの場合にauto-fillが作動するのは以下のロジックによ
るものです。ロジックだけをみると改行でもauto-fillが作動する
ように見えますが、改行(=LFD(=C-j))が別のコマンドに割り当てら
れていると、純粋な改行ではなくなるために以下のロジックを通ら
なくなります。
fill.l ------------------------------------------------
(defun do-auto-fill (c)
(unless (plusp fill-column)
(return-from do-auto-fill nil))
(when (and (or (member c '(#\SPC #\TAB #\LFD))
(and (or (kanji-char-p c)
(kana-char-p c))
(not (listen *keyboard*))))
(>= (current-column) fill-column))
(when (= (save-excursion ... )))))
--
YAMAMOTO Taizo / 山本 泰三
mailto:cbf95600@xxxxxxxxxxxxxxx
http://www1.odn.ne.jp/ymtz/