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

Up directory(page?)



大和 正武と申します.

昨日からw3m.elを利用しはじめました.
とても便利です.開発者のみなさんに感謝します.
いよいよemacsから離れられません.

以前からウェブブラウザに欲しいと思っていた機能を
w3m.elに実装してみたので,報告するとともにみなさんが
有用であると思われたらw3m.elに取り込んでいただきたく
思います.

実装した機能(w3m-view-parent-page; "^"キーにバインドしました.)は,
現在提示しているページよりも一つ「上」のページを表示する機能です.
たとえば
http://www.foo.bar/baz/giga
を現在表示している場合には,"^"キーを押すと
http://www.foo.bar/baz/
を表示しようとします.さらに"^"キーを押すと
http://www.foo.bar/
を表示します.

あるウェブページを開こうとしてNot Foundとなる場合があります.
このとき,みなさんはどうなさいますか? 特にそのページ(に書いてあっ
ただろうこと)に関心がある場合には,その親ディレクトリ(やそこにある
ファイル)を漁ろうとしませんか? w3m-view-parent-pageそのようなファイル
漁るときに,わざわざurlを編集する必要なく,キーつで上のディレクトリ
(ページ?)へ移動できます.

w3m.elを評価したあとにどうぞ.

;;
(define-key w3m-mode-map "^" 'w3m-view-parent-page)
(defun w3m-view-parent-page ()
  (interactive)
  (if (null w3m-current-url)
      (error "w3m-current-url is not set"))
  (let (parent-url)
    ;; Check whether http://foo/bar/ or http://foo/bar
    (if (string-match "/$" w3m-current-url)
	(if (string-match "\\(.*\\)/[^/]+/$" w3m-current-url)
	    ;; http://foo/bar/ -> http://foo
	    (setq parent-url (match-string 1 w3m-current-url)))
      (if (string-match "\\(.*\\)/.+$" w3m-current-url)
	  ;; http://foo/bar -> http://foo
	  (setq parent-url (match-string 1 w3m-current-url))))
    ;; Ignore "http:/"
    (if (and parent-url
	     (string-match "^[a-z]+:/$" parent-url))
	(setq parent-url nil))
    (if parent-url
	(w3m parent-url)
      (error "No parent page for: %s" w3m-current-url))))