[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [gnu.emacs.help] Emacs/w3m textarea editing in same window
- From: Naohiro Aota <nao.aota@xxxxxxxxx>
- Date: Mon, 01 Dec 2008 15:39:24 +0900
- X-ml-name: emacs-w3m
- X-mail-count: 10473
- References: <87tza5crys.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <b4mabbkjdyb.fsf_-_@xxxxxxx>
Katsumi Yamaoka <yamaoka@xxxxxxx> writes:
>>>>>> In [emacs-w3m : No.10437] Nicolas Neuss wrote:
>
> 大きな文章を書くには textarea は狭いので、現在のウィンドウを
> textarea のバッファに切り替えて使いたいという話しです。
> 彼は
>
> (pushnew "*w3m form textarea*" same-window-buffer-names)
>
> ということを行なったけれど、うまくいかない。その理由は
> `same-window-buffer-names' に従って動く `display-buffer' や
> `pop-to-buffer' を `w3m-form-input-textarea' が使っていないから
> で云々...。で、Niels Giesen さん曰く `w3m-form-input-textarea'
> から
>
> (condition-case nil
> (split-window cur-win (if (> size 0) size window-min-height))
> (error
> (delete-other-windows)
> (split-window cur-win (- (window-height cur-win)
> w3m-form-input-textarea-buffer-lines))))
> (select-window (next-window))
>
> の部分を外してしまえば、とりあえず望み通りになると。
>
> どなたか対応できる時間をお持ちの方はいらっしゃいませんか?
>
> ;; ぼくより適任の人がぜったいいると思うので、あえて書きました。;-)
改めてコードを読んでみました。
ここでやりたいことというのは、ちょうど
w3m-form-input-textarea-buffer-lines で指定されただけの行数を持った
window を作ることだと思います。
しかし、 pop-to-buffer() では、最小の行数を指定する変数
(split-height-threshold, window-min-height) はあれど、ぴったりこの行数と
いうものを指定することはできないようです。
なので、とりあえずは same-window-p() を使って Niels Giesen さんが外して
いる部分を unless で囲ってあげるといいのではないでしょうか?
;; w3m-form-input-textarea-buffer-lines ぴったりというのに固執する必要
;; もない気はするのですが…とりあえず踏襲ということで。
--
青田
Index: w3m-form.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m-form.el,v
retrieving revision 1.173
diff -u -r1.173 w3m-form.el
--- w3m-form.el 30 Jun 2008 06:56:39 -0000 1.173
+++ w3m-form.el 1 Dec 2008 06:33:36 -0000
@@ -1261,12 +1261,9 @@
(wincfg (current-window-configuration))
(w3mbuffer (current-buffer))
(point (point))
- (size (min
- (- (window-height cur-win)
- window-min-height 1)
- (- (window-height cur-win)
- (max window-min-height
- (1+ w3m-form-input-textarea-buffer-lines)))))
+ (size (- (window-height cur-win)
+ (1+ (max window-min-height
+ w3m-form-input-textarea-buffer-lines))))
(file (get-text-property (point) 'w3m-form-file-name))
(coding (w3m-form-get-coding-system (w3m-form-charlst form)))
(readonly (nth 3 info))
@@ -1329,13 +1326,14 @@
(get-buffer-window (cdr buffer)))
;; same frame only
(select-window (get-buffer-window (cdr buffer)))
- (condition-case nil
- (split-window cur-win (if (> size 0) size window-min-height))
- (error
- (delete-other-windows)
- (split-window cur-win (- (window-height cur-win)
- w3m-form-input-textarea-buffer-lines))))
- (select-window (next-window))
+ (unless (same-window-p (buffer-name (if (consp buffer) (cdr buffer) buffer)))
+ (condition-case nil
+ (split-window cur-win (if (> size 0) size window-min-height))
+ (error
+ (delete-other-windows)
+ (split-window cur-win (- (window-height cur-win)
+ w3m-form-input-textarea-buffer-lines))))
+ (select-window (next-window)))
(let ((pop-up-windows nil))
(switch-to-buffer (if (consp buffer) (cdr buffer) buffer))))))