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

Re: file を html として開く方法



>>>>> In [emacs-w3m : No.09944] 中山さん wrote:
> At Mon, 21 Jan 2008 11:05:02 +0900,
> Katsumi Yamaoka wrote:
>> `w3m-find-file' にしろ `w3m-goto-url' にしろ、引数などで
>> content type を指定できるように改良する必要があるでしょう。

そもそも `w3m-find-file' はどういう目的で使うために用意されてい
るコマンドなのかがぼくの中では曖昧だったのですが、最初にこれを作っ
た白井さんの記事を見ると、単に `find-file' するのではなく、中身
が text/html かどうかを積極的に調べて emacs-w3m としてしかるべき
処理を行なうことが期待されているようです。(あたりまえ、ですか?)

<http://emacs-w3m.namazu.org/ml/msg00282.html>
>>>>> In [emacs-w3m : No.00283] Hideyuki SHIRAI (白井秀行)さん wrote:

> これに関連した話だと、僕は dired から w3m できるように

> (add-hook 'dired-mode-hook
> 	  (lambda ()
>               (define-key dired-mode-map "\C-xw" 'dired-w3m-find-file)))

> (defun dired-w3m-find-file ()
>   (interactive)
>   (require 'w3m)
>   (let ((file (dired-get-filename)))
>     (if (y-or-n-p (format "Open 'w3m' %s " (file-name-nondirectory file)))
> 	(w3m-find-file file))))

> な関数/設定を仕込んでいます。結構便利。

そうすると、その内容が text/html かどうかを判定する機能はとても
重要ですね。判定基準は次のような順序になるでしょうか。

1. オプショナル引数 (boolean?) で text/html が指定された。
2. ファイル名が "\\.html?\\'" だった。
3. 中身を解析したら text/html だった。

そして、これらに合致しなかったら `w3m-local-find-file-function'
で指定された関数を使う、と。

(Gnus が記事中の text/html パートを browse-url に渡すときはファ
イル名に .html を付けています。)

> 前のメールを出した直後に
>   "opening local files with arbitrary extensions as HTML"
> のスレッドの山岡さんのメールを読んで、w3m-local-find-file-function
> をいじっていたのですが、結局 content type を渡さないといけなさそう
> だなーというところで止まっていました。現状の構造だとcontent type
> を渡すのは大変ということでしょうか。

いや、というか content type を渡せるようになっていた時期があるん
ですよ。

<http://emacs-w3m.namazu.org/ml/msg00792.html>
>>>>> In [emacs-w3m : No.00793] 中川さん wrote:

>   さて、w3m-find-file への要望ですが、method(or type? "text/html" と
> か)をオプションで指定できるようにできないでしょうか。現在は拡張子から
> の推測だけなので、hoge.html.20010517 なんてファイルを作ってしまうと

2001-05-17  TSUCHIYA Masatoshi  <tsuchiya@xxxxxxxxxx>

	* w3m.el (w3m-find-file): New optional argument, `type' is added.

ところが:

2001-05-21  TSUCHIYA Masatoshi  <tsuchiya@xxxxxxxxxx>

	(w3m-find-file): Simplified and optional argument `type' is removed.

(経緯は不明)

というようなことを昨日は漫然と眺めていて、さらに調べを進めるのが
面倒になってきたので、こんな方向↓に逃げた次第。;-p

>> でも、とりあえずそれは棚上げにして、こんなのではどうですか?
>>
>> (defun mime-w3m-view-text/html (entity cal)
[...]
>>     (insert (decode-coding-string (mime-entity-content entity) coding))
>>     (w3m-buffer)

> mime-w3m.el に取り込むにはためらわれます。
> 添付する差分でよさそうに思っていますが、問題になりそうな
> 点はありますでしょうか。

問題ではなくて単純な疑問なんですが。すでに FLIM が text/html だ
と判定したパートを、そのコンテンツが Emacs のバッファ上に存在し
ているのに、何のブラウザが使われるかわからないわけではなく他でも
ない emacs-w3m に渡すのに、いったんファイルを経由させるのはなぜ
ですか?

`w3m-region' や `w3m-buffer' を使う場合、新規の session や frame
を作るかどうかの制御が面倒かもしれませんね。通常 emacs-w3m を使
うときのために設定したユーザの好みが、そのまま反映されるようにす
るためには、`w3m-find-file' を利用するのが最も妥当だ、ということ
であれば理解できます。

そして `w3m-find-file' を使うのならば、上に書いたような text/html
かどうかの判定結果を `w3m-goto-url' に渡す機構は、だれがやるにし
ろ、追加する必要がありますよね。

(ぼくは全貌をきちんと把握して書いているわけじゃないので、このボ
ケ頭をなぐってくれるのは歓迎です。;-)
-- 
山岡