[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
w3m-m17n support (was Re: User specified content type / w3mmee support)
有沢です。
文字に関しては詳しくないので、誤りなどありましたら申し分けないです。
>>>>> In [emacs-w3m : No.00849]
>>>>> Hironori Sakamoto <h-saka@lsi.nec.co.jp> wrote:
> とりあえず、-halfdump 時にも -dump と同じ文字コード(-O で指定)で
> 出力するオプション(ext_halfdump)を追加した w3m-m17n-0.19 への
> patch を出しておきますね。
この patch をあてた w3m-m17n を使って、文字コードの変換を Emacs で行わ
ず、w3m-m17n にまかせるようにしてみました。
w3m.el に以下の patch をあてて、(setq w3m-type 'w3m-m17n) としてくださ
い。
問題としては、w3m-m17n の出力コードをどうしようかというのがあります。
w3m-m17n で出力できて、多くの文字集合を表現できて、Emacs が理解できる
などという都合の良い coding-system が見当たらなかったため、デフォルト
では Emacs が utf-8 が使えればそれを、ダメなら iso-2022-jp-2 で出力さ
せています。
utf-8 は良く知らないので置いておきますが(^^;、iso-2022-jp-2 ではかな
り表現できる文字集合が制限されます。特に半角カナが出せないあたり、結構
気になります。
ということで、html の文字コードに応じて w3m-m17n の出力コードを変えら
れるような仕組があると良いかなと思いながらも、個人的には utf-8 で満足
してしまってます(^^;
なお、サンプルの html を http://www.nijino.com/ari/tmp/m17n/ にいくつ
か置いてありますので試用の際にご利用ください。
Index: w3m.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.299
diff -u -r1.299 w3m.el
--- w3m.el 2001/06/07 01:18:25 1.299
+++ w3m.el 2001/06/07 15:50:35
@@ -129,10 +129,13 @@
:type '(choice (const :tag "w3m" 'w3m)
(const :tag "w3m with MNC patch" 'w3m-mnc)
(const :tag "w3mmee" 'w3mmee)
+ (const :tag "w3m-m17n" 'w3m-m17n)
(symbol :tag "other" nil)))
(defcustom w3m-command
- (if (eq w3m-type 'w3mmee) "w3mmee" "w3m")
+ (cond ((eq w3m-type 'w3mmee) "w3mmee")
+ ((eq w3m-type 'w3m-m17n) "w3m-m17n")
+ (t "w3m"))
"*Name of the executable file of w3m."
:group 'w3m
:type 'string)
@@ -182,13 +185,17 @@
:type 'coding-system)
(defcustom w3m-input-coding-system
- (if (eq w3m-type 'w3mmee) 'binary 'iso-2022-7bit)
+ (if (memq w3m-type '(w3mmee w3m-m17n)) 'binary 'iso-2022-7bit)
"*Coding system for write operations to `w3m'."
:group 'w3m
:type 'coding-system)
(defcustom w3m-output-coding-system
- (if (eq w3m-type 'w3mmee) 'ctext 'w3m-euc-japan)
+ (cond ((eq w3m-type 'w3mmee) 'ctext)
+ ((eq w3m-type 'w3m-m17n)
+ (cond ((w3m-find-coding-system 'utf-8) 'utf-8)
+ (t 'iso-2022-jp-2)))
+ (t 'w3m-euc-japan))
"*Coding system for read operations of `w3m'."
:group 'w3m
:type 'coding-system)
@@ -805,12 +812,17 @@
"Name of the executable file of w3m. If nil use 'w3m-command'.")
(defconst w3m-halfdump-command-arguments
- (if (eq w3m-type 'w3mmee)
- (list "-dump=half-buffer"
- '(if charset "-I")
- 'charset
- "-o" "concurrent=0")
- (list "-halfdump"))
+ (cond ((eq w3m-type 'w3mmee)
+ (list "-dump=half-buffer"
+ '(if charset "-I")
+ 'charset
+ "-o" "concurrent=0"))
+ ((eq w3m-type 'w3m-m17n)
+ (list "-halfdump"
+ "-o" "ext_halfdump=1"
+ '(if charset "-I") 'charset
+ "-O" '(symbol-name w3m-output-coding-system)))
+ (t (list "-halfdump")))
"Arguments for 'halfdump' execution of w3m.")
(defconst w3m-halfdump-command-common-arguments
@@ -2299,7 +2311,7 @@
(w3m-with-work-buffer
(if (string= "text/html" type)
(progn
- (unless (eq w3m-type 'w3mmee)
+ (unless (memq w3m-type '(w3mmee w3m-m17n))
(w3m-decode-buffer url content-charset type))
(w3m-rendering-region (point-min) (point-max)
content-charset))
@@ -3198,7 +3210,7 @@
(interactive "r")
(save-restriction
(narrow-to-region start end)
- (when (eq w3m-type 'w3mmee)
+ (when (memq w3m-type '(w3mmee w3m-m17n))
(encode-coding-region (point-min) (point-max) w3m-coding-system))
(setq w3m-current-title
(w3m-rendering-region (point-min) (point-max)))
--
有沢 明宏