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

Re: w3m-safe-url-regexp



>>>>> In [emacs-w3m : No.09966] 山岡 wrote:

> こんな方針で変更するのではいかがでしょうか?

> 1. text/html メッセージを表示するバッファで `w3m-safe-url-regexp'
>    をローカル変数にして、(mew|mime|mm)-w3m-safe-url-regexp の値
>    を反映させる。

すでにリリースされている Gnus の版は改造できないので、だめですね。
Mew, Wanderlust, Gnus ともに

  (let ((w3m-safe-url-regexp XXX-w3m-safe-url-regexp))
    (w3m-region ARGS))

という構造なので、こんなことをすれば良いかな。あんまり美しくない
ですが。

1. 新しい変数 `w3m-safe-url-regexp-to-use' を導入。`w3m-region'
   はそれをバッファローカル変数にして、`w3m-safe-url-regexp' の
   そのとき束縛されている値をそれに記憶させ、以後の url が安全か
   どうかの判定にはその値を使う。

   ただしすべての場面で描画を `w3m-region' が行なうわけではない
   から、`w3m-safe-url-regexp-to-use' がローカル変数になっていな
   いこともある。そんな場合のために `w3m-safe-url-regexp-to-use'
   のデフォルト値を特別な値 t にして、url が安全かどうかの判定に
   は `w3m-safe-url-regexp' の値を使うことを意味させる。

つまり、

(defvar w3m-safe-url-regexp-to-use t
  "Variable that holds the value of the `w3m-safe-url-regexp' variable.
This will be made buffer-local in buffers in which html contents are
rendered, and will be set to the value of `w3m-safe-url-regexp' that
might be bound to the value of the variable `mew-w3m-safe-url-regexp',
`mime-w3m-safe-url-regexp', or `mm-w3m-safe-url-regexp'.

The special value t means to use the value of `w3m-safe-url-regexp' to
compare with a url in order to examine whether the url is safe.  That
is the case where `w3m-region' has not been used to render a page (only
`w3m-region' sets this variable).  Otherwise, a non-nil value of this
variable overrides the value of `w3m-safe-url-regexp', and it is used
to compare.")

(defun w3m-region (args)
  ...
  (set (make-local-variable 'w3m-safe-url-regexp-to-use)
       w3m-safe-url-regexp)
  ...)

そして、これ↓

(defun w3m-retrieve (args)
  ...
  (unless (and w3m-safe-url-regexp
	       (not (string-match w3m-safe-url-regexp url)))
    ...Retrieving...))

を次のように変更:

(defun w3m-retrieve (args)
  ...
  (unless (let ((regexp (if (eq w3m-safe-url-regexp-to-use t)
			    w3m-safe-url-regexp
			  (or w3m-safe-url-regexp-to-use
			      w3m-safe-url-regexp))))
	    (and regexp
		 (not (string-match regexp url))))
    ...Retrieving...))

以下の 3. と 4. も同様に。

> 2. `w3m-safe-toggle-inline-image' と `w3m-safe-toggle-inline-images'
>    を廃止。それらにバインドされているキーのコマンドを
>    `w3m-toggle-inline-image' と `w3m-toggle-inline-images' に戻す。

> 3. `w3m-toggle-inline-image' は url を `w3m-safe-url-regexp' と
>    照合し、安全でない場合は表示しない。対話的に呼ばれた場合は

> This image is considered to be unsafe; use the prefix arg to force display

>    と言わせる。さらに接頭引数付きで対話的に呼ばれた場合でも

> Are you sure you really want to show this image (maybe insecure)?

>    で確認を求める。

> 4. `w3m-toggle-inline-images' は `w3m-safe-url-regexp' とそれぞ
>    れの画像 url を照合し、安全でないものは表示しない。対話的に呼
>    ばれた場合は

> There are some images considered unsafe; use the prefix arg to force display

>    と言わせる。接頭引数付きで対話的に呼ばれた場合は、全画像 url
>    を走査して、`w3m-safe-url-regexp' に合致しない画像がある場合
>    には

> Are you sure you really want to show all images (that may be insecure)?

>    で確認を求める。
-- 
山岡