[xyzzy:09032] Re: fillの質問
- Subject: [xyzzy:09032] Re: fillの質問
- From: 武井進 <susumu-takei@xxxxxxxxxxxxxxxxx>
- X-mailer: Becky! ver. 2.10.02 [ja]
武井です。
山本殿、NANRI殿
ありがとうございます。
お蔭様で希望する動きになりました。
>> >◆質問1
>> >行頭から書いた場合は、例にありますように、1行目の先頭の「・」分、2行目
>> >以降は、ちゃんと先頭にスペースを入れてくれます。
>> >(常にこうなって欲しいのです。)
>>
>> 通常のfillではなく、flex-fillではないでしょうか?手元の環境にはflex-fillを
>> 入れてないので未確認ですが、下みたいにするとどうなりますか?
>>
>> (defvar *flexible-fill-bullet-prefix-regexp* "^ *\\(・\\|[0-9]+)\\)")
これだけではうまくいきませんでした。
で、
(setq *flexible-fill-prefix-regexp* "^ *# *")
とやってみたところ、2行目はうまく行ったのですが、3行目以降うまくいかな
くなりました。
で、試行錯誤の末、flex-fill を直接書き換え、下記の処理順番に変更してみた
ところ、それなりにうまく動きました。
;;;;;ここから(flex-fill)
(cond ((looking-at *flexible-fill-bullet-prefix-regexp*)
(setq fill-prefix
(make-vector (- (progn (goto-char (match-end 0)) (current-column))
(progn (goto-char (match-beginning 0)) (current-column)))
:element-type 'character
:initial-element *flexible-fill-bullet-prefix-char*)))
((looking-at *flexible-fill-prefix-regexp*)
(setq fill-prefix (buffer-substring (match-beginning 0) (match-end 0))))
;;;;;ここまで
>> >◆質問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)
>>
>> それなりに動くような気がします。
よく分からないのですが、そのままではうまく動かなかったので、上記コードを
ヒントに下記のようなことをしたら、それなりに動くようになりました。
(かなり無理やりです...)
(defun foo-func ()
(and auto-fill *auto-fill-hook
(when (equal *last-command-char* #\RET)
(funcall *auto-fill-hook #\LFD))))
(add-hook '*pre-command-hook* 'foo-func)
山本殿、NANRI殿
本当にありがとうございました。
--
武井進 <susumu-takei@xxxxxxxxxxxxxxxxx>