[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re:
URLのエコ
ーとtextarea
のminor化
TSUCHIYA Masatoshi <tsuchiya@namazu.org> writes:
> が,とりあえずの叩き台としてパッチを作ってみましたので,末尾に添付しま
> す.ただし,
>
> ・このパッチのままだと,オプションで動的に動作が変更できない.オプショ
> ンを作ったとしても,再描画しない限り反映されない.
>
> ・レンダリングが更に遅くなりそう.バルーンヘルプを表示するときに,
> decode して欲しい.
これらに関しては、w3m-make-help-echo で作成する lambda 式の中で
decode 処理を入れれば良いのではないでしょうか。
> ・単に undecided で運任せにするのではなくて,描画中のページの文字コー
> ドと w3m-coding-system-priority-list を参照して,頑健にコード推定し
> て欲しい.
w3m-url-decode-string に priority-list を渡せるようにしてみました。
これらを反映させた叩き台ですが、いかがでしょうか。
変数 w3m-decode-help-echo で動的に decode の有無が切り替わるはずです。
--
有沢 明宏
Index: w3m.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.1102
diff -u -r1.1102 w3m.el
--- w3m.el 24 Feb 2005 07:08:59 -0000 1.1102
+++ w3m.el 25 Feb 2005 04:09:50 -0000
@@ -2562,7 +2562,8 @@
(nth 5 attrs)))
`(nth 5 (w3m-attributes ,url ,no-cache))))
-(defmacro w3m-make-help-echo (property)
+(defvar w3m-decode-help-echo t)
+(defmacro w3m-make-help-echo (property &optional url-decode)
"Make a function returning a string used for the `help-echo' message.
PROPERTY is a symbol (which doesn't need to be quoted) of a text
property (in XEmacs, it is an extent) with the value of a string which
@@ -2574,16 +2575,28 @@
(lambda (extent)
(if (and w3m-track-mouse
(eq (extent-object extent) (current-buffer)))
- (get-text-property (extent-start-position extent)
- ',property)))))
+ (let ((prop (get-text-property (extent-start-position extent)
+ ',property)))
+ (if (and ,url-decode w3m-decode-help-echo)
+ (w3m-url-decode-string
+ prop
+ (cons w3m-current-coding-system
+ w3m-coding-system-priority-list))
+ prop))))))
`(if (>= emacs-major-version 21)
(function
(lambda (window object pos)
(if w3m-track-mouse
(progn
(w3m-message "") ; Clear the echo area.
- (get-text-property pos ',property
- (window-buffer window)))))))))
+ (let ((prop (get-text-property pos ',property
+ (window-buffer window))))
+ (if (and ,url-decode w3m-decode-help-echo)
+ (w3m-url-decode-string
+ prop
+ (cons w3m-current-coding-system
+ w3m-coding-system-priority-list))
+ prop)))))))))
(defmacro w3m-make-balloon-help (property)
"Make a function returning a string used for the `balloon-help' message.
@@ -2776,12 +2789,18 @@
(t " "))
buf)
(setq start (match-end 0)))
- (decode-coding-string
- (apply 'concat (nreverse (cons (substring str start) buf)))
- (or coding
- w3m-default-coding-system
- w3m-coding-system
- 'iso-2022-7bit))))
+ (setq str (apply 'concat (nreverse (cons (substring str start) buf))))
+ (when (listp coding)
+ (setq coding
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert str)
+ (w3m-detect-coding-region (point-min) (point-max) coding))))
+ (decode-coding-string str
+ (or coding
+ w3m-default-coding-system
+ w3m-coding-system
+ 'iso-2022-7bit))))
(defsubst w3m-url-transfer-encode-string (url &optional coding)
"Encode non-ascii characters in URL into the sequence of escaped octets.
@@ -2927,7 +2946,7 @@
(defun w3m-fontify-anchors ()
"Fontify anchor tags in the buffer which contains halfdump."
- (let ((help (w3m-make-help-echo w3m-href-anchor))
+ (let ((help (w3m-make-help-echo w3m-href-anchor t))
(balloon (w3m-make-balloon-help w3m-href-anchor))
prenames start end)
(goto-char (point-min))