[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):