[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
>> On Mon, 24 Nov 2003 09:23:13 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:
土> そこで,かなり今更かなあという気はするのですが,w3m-goto-url() の
土> default の動作は「window / frame を popup する」ということにしませ
土> んか?
山> これぞ妙案!
‥‥‥ですか?
山> 何となく w3m-goto-url() は、引数の多さからしても内部コアルーチンで
山> あって、派手な (ビジュアルな) 変化を起こすことが似合わないという気
山> がしていた一方で、インタラクティブなコマンドとして w3m() との地位
山> の関係がうまく整理されていないなあ、と思っていました。
同感です.
で,これまた今更なんですが,私が w3m() と w3m-goto-url() の切り分けを
実施した rev 1.117 のコードを取り出してきて眺めてみました.該当部分を
末尾に添付しましたが,
うーん,なんてシンプルなんだ! なんて分かり易いんだ!
プロジェクトの進展って何なんだろう‥と改めて考えさせられてしまいます.
でまあ,rev 1.117 を眺めてはっきりしたんですが,当時の私の意図は
・w3m() は,基本的には URL の入力を受け取らず,単に emacs-w3m のバッ
ファを表示するためのコマンド.
・w3m-goto-url() は,完全にバックエンドの関数.
だったんですねえ.ところが,そのように変更してしまうと,emacs-w3m のバッ
ファ内で g URL RET とするためのコマンドがなくなってしまったので,慌て
て w3m-goto-url() をコマンドにした,というのが真相のようです.
よく調べてみると,w3m-goto-url() がコマンドになったのは rev 1.118 なん
ですが,
revision 1.118
date: 2001/03/15 08:09:02; author: tsuchiya; state: Exp; lines: +7 -5
revision 1.117
date: 2001/03/15 07:49:45; author: tsuchiya; state: Exp; lines: +96 -92
と,僅かに20分しか経っていません.このことからも,いかに私が慌てていた
か分かります.
さて,そのように考えると,
山> しかし、自分用の解釈ですが、インタラクティブなコマンドのための内部
山> コア、それ自身もコマンド、しかし例外として派手な動作を抑制すること
山> が可能、とすれば、すべてがすっきりする気がします。w3m() の popup
山> 機能を w3m-goto-url() に委ねるところあたりから作業をはじめようと思
山> います。
w3m() / w3m-goto-url() の基本的な違いは,引数の入力を必要とするか否か
の条件のみである,と考えれば良いのではないかと思います.すなわち,
・w3m() は,管轄外のバッファから emacs-w3m を起動するためのコマンド
であって,基本は emacs-w3m のバッファの popup のみ.ただし,
w3m-quick-start が nil の場合は,URL の問い合わせを行う.
・w3m-goto-url() は,管轄外・内を問わずに適当なバッファから,指定さ
れた URL を表示する emacs-w3m のバッファを開くためのコマンドであり,
常に URL を問い合わせる.
というように整理(現状追認?)すれば良いのではないでしょうか.
したがって,やはり w3m-goto-url() の default としては「window / frame
を popup する」ということになると思います.
このように考えてくると,やっぱり,現行の w3m-goto-url() は,一つの関数
であまりにもたくさんのことを実行しすぎているので,適当な機能の分担が必
要ですね.
--
土屋 雅稔 ( TSUCHIYA Masatoshi )
(defun w3m-goto-url (url &optional reload)
"Retrieve URL and display it in this buffer."
(cond
;; process mailto: protocol
((string-match "^mailto:\\(.*\\)" url)
(w3m-goto-mailto-url url))
;; process ftp: protocol
((and (string-match "^ftp://" url)
(not (string= "text/html" (w3m-local-content-type url))))
(w3m-goto-ftp-url url))
(t
;; When this buffer's major mode is not w3m-mode, generate an
;; appropriate buffer and select it.
(unless (eq major-mode 'w3m-mode)
(set-buffer (get-buffer-create "*w3m*"))
(unless (eq major-mode 'w3m-mode)
(w3m-mode)
(setq mode-line-buffer-identification
(list "%b" " / " 'w3m-current-title))))
;; Setup arrived database.
(w3m-arrived-setup)
(w3m-arrived-store-position w3m-current-url)
;; Retrive.
(let ((orig url)
(name))
(when (string-match "#\\([^#]+\\)$" url)
(setq name (match-string 1 url)
url (substring url 0 (match-beginning 0))))
(if (not (w3m-exec url nil reload))
(w3m-refontify-anchor)
(w3m-arrived-add orig)
(if name (w3m-arrived-add url))
(w3m-fontify)
(or (and name (w3m-search-name-anchor name))
(goto-char (point-min)))
(setq w3m-display-inline-image-status 'off)
(when w3m-display-inline-image
(sit-for 0)
(w3m-toggle-inline-images 'force reload))
(setq buffer-read-only t)
(set-buffer-modified-p nil))))))
(defun w3m (url &optional args)
"*Interface for w3m on Emacs."
(interactive
(list (or (w3m-alive-p)
(w3m-input-url))))
(if (bufferp url)
(set-buffer url)
(w3m-goto-url url))
(switch-to-buffer (current-buffer)))
- References:
- w3m-{weather,antenna,perldoc,...} do not popup buffer
- Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
- Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
- Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
- Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
- Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
- Prev by Date:
Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
- Next by Date:
Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
- Previous by thread:
Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
- Next by thread:
Re: w3m-{weather,antenna,perldoc,...} do not popup buffer
- Index(es):