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

[xyzzy:09032] Re: fillの質問



武井です。

山本殿、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>

Index Home