Showing posts with label Emacs-w3m. Show all posts
Showing posts with label Emacs-w3m. Show all posts

2006-09-08

emacs-w3m の Google-en 検索で英語検索ができない

最近、Emacs-w3m の w3m-search で、検索エンジンを google-en にしても英語検索が出来なくなった。

例えば、emacs を google-en で検索しても、日本語のページがトップに出てくる。

どうやら、Google は、検索をかけてる国の情報か何かを抜き出して、Google.com からでも日本語をメインに検索するようにしているらしい。

検索 URL の末尾に &hl=en を加えると英語検索に戻るっぽい。emacs-w3m の CVS へのパッチを書いた。

--- w3m-search.el 13  6月 2006 20:49:56 +0900 1.57
+++ w3m-search.el 09  9月 2006 09:25:41 +0900 
@@ -78,19 +78,21 @@
       "http://www.google.com/search?q=%s&hl=ja&lr=lang_ja&ie=utf-8"
       utf-8)
      ("google-en"
-      "http://www.google.com/search?q=%s")))
+      "http://www.google.com/search?q=%s&hl=en&ie=utf-8"
+      utf-8)))
   (ja
    '(("google"
       "http://www.google.com/search?q=%s&hl=ja&lr=lang_ja&ie=Shift_JIS"
       shift_jis)
      ("google-en"
-      "http://www.google.com/search?q=%s")))
+      "http://www.google.com/search?q=%s&hl=en")))
   (utf-8
    '(("google"
       "http://www.google.com/search?q=%s&ie=utf-8"
       utf-8)
      ("google-en"
-      "http://www.google.com/search?q=%s")))
+      "http://www.google.com/search?q=%s&hl=en&ie=utf-8"
+      utf-8)))
   (t
    '(("google"
       "http://www.google.com/search?q=%s")

いくつか補足説明を。

utf-8 を扱える場合は、極力、utf-8 を入力エンコーディングとして使うようにした。最近の google は、è のようなアクセント付記号も、ちゃんと理解してくれる。次の検索結果を比べられたし。

英語で検索する場合は、&hl=en を加えている。ただし、次のコードには手を加えていない。

  (t
   '(("google"
      "http://www.google.com/search?q=%s")
     ("google-ja"
      "http://www.google.com/search?q=%s&hl=ja&lr=lang_ja&ie=Shift_JIS"
      shift_jis))))

これは、日本国外から使う場合を考慮してのこと。

例えば、フランスから "google" で検索をかけてる人は、自動的に Google.fr の検索結果が現れていると考えられる。従って、"google" を強制的に英語ページの検索にしてしまうのは、いけないと思った。

突っ込み、etc... あれば、どうぞコメントよろしく。

2005-11-30

Emacs の browse-url と firefox 1.5

firefox 1.5 が出た

リリース・ノートによると -remote オプションの代わりに -new-tab (-new-window) オプションが用意された。

firefox -remote (mozilla-xremote-client) はカンマを含む URL では機能しなくなり、廃止される予定です。firefox -new-window /url/ で新しいウィンドウに URL を開き、firefox -new-tab /url/ で新しいタブに URL を開きます。

今まで

firefox -remote openURL(http://www.google.co.jp,new-tab)

としていたところ、

firefox -new-tab http://www.google.co.jp

と書くようになったということらしい。

Emacs の browse-url

この変更のおかげで、browse-url.el が動かなくなってしまった。当然、Emacs-w3m のように外部ブラウザーの起動に browse-url を使ってるコードも (該当部分が) 動かない。

とりあえず、開発版の browse-url.el への対策は以下の通り。

(eval-after-load "browse-url"
  '(progn
(defun browse-url-firefox (url &optional new-window)
  "Ask the Firefox WWW browser to load URL.
Default to the URL around or before point.  The strings in
variable `browse-url-firefox-arguments' are also passed to
Firefox.

When called interactively, if variable
`browse-url-new-window-flag' is non-nil, load the document in a
new Firefox window, otherwise use a random existing one.  A
non-nil interactive prefix argument reverses the effect of
`browse-url-new-window-flag'.

If `browse-url-firefox-new-window-is-tab' is non-nil, then
whenever a document would otherwise be loaded in a new window, it
is loaded in a new tab in an existing window instead.

When called non-interactively, optional second argument
NEW-WINDOW is used instead of `browse-url-new-window-flag'.

On MS-Windows systems the optional `new-window' parameter is
ignored.  Firefox for Windows does not support the \"-remote\"
command line parameter.  Therefore, the
`browse-url-new-window-flag' and `browse-url-firefox-new-window-is-tab'
are ignored as well.  Firefox on Windows will always open the requested
URL in a new window."
  (interactive (browse-url-interactive-arg "URL: "))
  ;; URL encode any `confusing' characters in the URL.  This needs to
  ;; include at least commas; presumably also close parens.
  (while (string-match "[,)]" url)
    (setq url (replace-match
        (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
  (let* ((process-environment (browse-url-process-environment))
  (process
   (apply 'start-process
   (concat "firefox " url) nil
   browse-url-firefox-program
   (append
    browse-url-firefox-arguments
    (if (or (featurep 'dos-w32)
     (string-match "win32" system-configuration))
        (list url)
      (list (if (browse-url-maybe-new-window
          new-window)
         (if browse-url-firefox-new-window-is-tab
      "-new-tab"
    "-new-window"))
     url ))))))
    (set-process-sentinel process
     `(lambda (process change)
        (browse-url-firefox-sentinel process ,url)))))
))

ちゃんとやろうとしたら、firefox のバージョンを確かめて、1.0.X なら -remote を、1.5+ なら -new-tab を使うように設定すべき。

ref

2005-11-23

Emacs-w3m で複数 URL をタブで一気に開く

1 行 1 URL なテキスト

http://del.icio.us/ataka/
http://at-aka.blogspot.com/
http://www.flickr.com/photos/at-aka/
http://d.hatena.ne.jp/at-aka/
http://at-aka.typepad.jp/life/
http://booklog.jp/tana.php?ac=at-aka
http://www.spurl.net/discover/user/%40aka/

を、Emacs-w3m のタブで一気に開くコマンドを quick hack してみた。

テキストをリージョンで囲んで、M-x w3m-view-urls-in-new-session して使う。

インストール

次のコードを .emacs に追記。

(defun w3m-view-urls-in-new-session (start end &optional arg)
  (interactive "r\nP")
  (when (w3m-region-active-p)
    (w3m-deactivate-region))
  (let ((buffer (current-buffer))
 (prev start)
 (url (w3m-url-valid (buffer-substring-no-properties 
        (line-beginning-position) (line-end-position))))
 urls)
    (when url
      (setq urls (list url)))
    (save-excursion
      (goto-char start)
      (while (progn
        (forward-line 1)
        (and (> (point) prev)
      (< (point) end)))
 (setq prev (point))
 (when (and (setq url (w3m-url-valid (buffer-substring-no-properties 
          (line-beginning-position) (line-end-position))))
     (string-match "\\`https?:" url)
     (bolp))
   (push url urls))))
    (setq urls (nreverse urls))
    (while urls
      (setq url (car urls)
     urls (cdr urls))
      (set-buffer buffer)
      (w3m-view-this-url-1 url arg t))))

コードは w3m-open-all-links-in-new-session のほとんどコピー。

あとがき

BloglinesGoogle Reader で気に入った記事を ChangeLog メモでメモしてる。メモは Emacs-w3m 経由。

まず firefox で見ている記事の URL をコピーする。次に Emacs-w3mw3m-goto-url で先の URL を貼り付けて開き直す。最後にそのページを clmemo.el でメモに取る。以上の手順を記事の数だけ繰り返す。

こういうことをやり始めた最初の数週間はなんとかなったけど、もう我慢の限界。そこで、記事の URL をファイルにコピペで保存 (ここまでは全部 firefox 内の作業)。そして一気に Emacs-w3m で開くようにした。メモを取る手間はあるけれど、これで少しは楽になった。

ブログ記事の ChangeLog メモ技術については、まだまだ向上の余地があるので、これからもブログにちょこちょこと書いていきます。

2005-10-12

quickurl で emacs-w3m と firefox のどちらを呼び出すか URL で切り替える

最近、 Google Maps を始めとして JavaScript 全開なページが増えてきた。困るのは、JavaScript なページは Emacs-w3m のようなテキスト・ブラウザーでは見ることができないこと。今回は、JavaScript やフラッシュを使っていてテキスト・ブラウザーで閲覧できないページの URL をブラック・リストとして保存し、テキスト・ブラウザー ( Emacs-w3m) とモダン・ブラウザー ( firefox, etc...) に切り替える設定をば書いてみる。

設定

;;
;; emacs-w3m で見られない URL のブラックリスト
;;
(setq browse-url-dhtml-url-list
      '("http://www.google.com/reader/"
 "http://maps.google.co.jp/"
 "http://map.yahoo.co.jp/"
 "http://map.labs.goo.ne.jp/"
 "http://www.haloscan.com/"
 "http://sitemeter.com/"
 "http://www.hmv.co.jp/"
))
;;
;; ブラッリストにマッチしたら firefox、しなかったら emacs-w3m。 
;;
(setq browse-url-browser-function 
      `((,(concat "^" (regexp-opt browse-url-dhtml-url-list)) . browse-url-firefox)
 ("." . w3m-browse-url)))

変数 browse-url-browser-function は、ブラウザー名を直接指定するだけでなく、 (URL-REGEXP . BROWSER) な alist も取ることができる。つまり、上の設定は、 browse-url した時に browse-url-dhtml-url-list に URL がマッチしたら firefox を呼び出し、そうでなかったら Emacs-w3m を呼ぶ。

Emacs の quickurl-browse-url-ask で書いたように、quickurls を使った browse-url でもこの設定は有効。ただし、 Emacs-w3m の中でリンクを辿る場合は、この限りではない。

ref

Emacs-w3m と browse-url 周りの設定については、以下のエントリーも参考にどうぞ。

2005-10-10

Emacs の quickurl-browse-url-ask

Emacs から特定のウェブ・サイトに素早くアクセスするには、どうすればいいだろう?

特定のウェブ・サイトとは、例えば Google News とか Yahoo! 地図 とか 自分のウェブページfirefox なんかのウェブ・ブラウザーを使っていれば、ブックマーク (or ソーシャル・ブックマーク) に入れておくようなウェブ・サイト。

方法としては、 Emacs-w3m のような Emacs 版ブラウザーのブックマークにそのサイトを登録する。または、 Emacs-w3m から はてなブックマークなどの SBM にアクセスする。若しくは、素直に隣に起ち上げているであろう firefox からブックマーク (or SBM) を使う。というのが挙げられるでしょう。今回の記事は、そこでもう一手間省きませんか? というもの。

quickurl-browse-url-ask

紹介するコマンドは quickurl-browse-url-ask。quickurl パッケージと browse-url パッケージのいいとこ取りをしたコマンド。

quickurl は「省略キーワード」と「URL」のセットを覚えておいて、abbrev (略語展開) に活用するパッケージ。詳しくは、以前の記事をお読みあれ。

browse-url は、 Emacs から firefoxEmacs-w3m などのブラウザーを直接呼び出すパッケージ。例えば、ここら辺を参考に。

つまり、コマンド quickurl-browse-url-ask を呼び出すと、quickurl で設定した「省略キーワード」を聞いてくる。それに答えると、設定したブラウザーでそのページを開いてくれるというわけ。

例えば、quickurl に次の設定をしていた場合

 ("emacsw3m" "http://emacs-w3m.namazu.org/"     "Emacs-w3m")

Emacs から Emacs-w3m のウェブページを開くには

M-x quickurl-browse-url-ask
Browse: emacsw3m

とするだけ。省略キーワードの入力には補完が使えるし、quickurl ユーザーならテキストを書く時に使ってるキーワードだから忘れることはないでせう。

設定

quickurl-browse-url-ask は、Emacs 21.4 の標準機能。設定なしで使える。

ただ、キーバインドの設定位いはしておくと便利かも。僕の設定は次の通り。

(define-key mode-specific-map "u" 'browse-url-at-point)
(define-key mode-specific-map "U" 'quickurl-browse-url-ask)

C-c ubrowse-url を。 C-c Uquickurl-browse-url-ask を呼び出す。

では、Happy Browsing!

2005-09-30

Emacs-w3m のタブの色を変えてみた

これは、もう趣味の問題になると思うのだけど、僕は Emacs-w3m のタブの色使いが苦手。特に、タブが二つある時、どっちのタブが選択されてるか分かんなくなっちゃう。

Emacs-w3m original tabs

選択されてるタブが薄い灰色。非選択は濃い目の灰色。なのだけど、僕の目には濃い目のタブの方が目に入ってきちゃう。

もう、こんな生活は嫌んなった。そこでタブの色をカスタマイズしてみた。

Emacs-w3m costomized tabs

選択したタブは白色。非選択のものは、タブ・メニューの背景色と同じにして目立たなくした。これで、選択してるタブは一目瞭然。

Emacs-w3m with 4 customized tabs

タブの下にはロケーション・バーがあるけど、画面をスクロールさせるとロケーション・バーは見えなくなる。すると、タブがブラウズしてる画面とくっついて、あたかも本物のタブのように見える。このためだけのために、タブの三次元表現 (ボックス) もやめた。

設定

.emacs に以下のコードを追加。

;;
;; tab-color
;;
(custom-set-faces
 '(w3m-tab-selected-face 
   ((((type x w32 mac) (class color))
     (:background "white" :foreground "black"))))
 '(w3m-tab-unselected-face 
   ((((type x w32 mac) (class color))
     (:background "LightSteelBlue" :foreground "Gray20")))))

自分が使ってるのは GNU Emacs 22.0.50 (開発版) なので、 GNU Emacs 21 系じゃ上手く動かないかもしれない。その時は、ご容赦を。

2005-09-27

Emacs-w3m で見てるページを firefox の新しいタブで開く

Emacs-w3m で閲覧中のページを firefox で開くには、 Emacs-w3m の中で M (M-x w3m-view-url-with-external-browser) を押す。firefox は、 Emacs-w3m で見ていたページを開く。ただし、今まで firefox で見ていたページは上書きされる。

もし、 Emacs-w3m のページを新しくタブを開き、その中で見るようにしたければ次の設定をする。

;; browse-url-firefox
(setq browse-url-browser-function 'w3m-browse-url)
(setq w3m-content-type-alist
      (cons
       '("text/html" "\\.s?html?$"
  (lambda (url) (browse-url-firefox url browse-url-new-window-flag)))
       w3m-content-type-alist))
(setq browse-url-new-window-flag t
      browse-url-firefox-new-window-is-tab t)

ただし、上の設定は開発版 Emacs の場合の話。最新開発版の browse-url.el は次の所で手に入る。Emacs 21.4 で動くかどうか、分かんないけど...

via

ref

2005-09-25

Emacs-w3m でタブ・ブラウジングを活用する。

Emacs-w3m はテキスト・ブラウザーのくせにタブ・ブラウジングをサポートしている。リンクを辿る時に、 Shift-RETURN すると、新しいタブを開く。若しくは、 M-n ( M-x w3m-copy-buffer) で新規タブを作ることができる。

タブに関するコマンドは、以下の通り。

C-c C-t
新しいタブを作る ( M-n に同じ)。
C-c C-n
次のタブへ移る。
C-c C-p
前のタブへ移る。
C-c C-w
現在のタブを閉じる。

browse-url との連携

パッケージ browse-url を使えば、 GNU Emacs の他のバッファーから簡単に Emacs-w3m に入れることは 以前書いた (本題は firefox だったけど Xp)

さらに、次のような設定にすると、browse-url した時に新しいタブでそのページを開いてくれる。

;; Emacs-w3m を browse-url のデフォールト・ブラウザーにする
(setq browse-url-browser-function 'w3m-browse-url)
;; 新規タブで browse-url する
(setq browse-url-new-window-flag t)

2005-09-18

Emacs-w3m で Blog Search の「次」ページを簡単に |Google|

Google が始めた Blog 用検索エンジンには二種類のインターフェースがある。

  1. http://search.blogger.com/
  2. http://blogsearch.google.com/

1. が Google のブログ・サイト Blogger 風のインターフェース。2. が Google 検索のトップページを継承したインターフェースになっている。 firefox で見た限り、 Blogger 風の方がオプションが選びやすくて好み。 Google 風はシンプルに過ぎる。そういうわけで、 前に書いた記事でも Blogger 風インターフェースの紹介だけをした。

ところが、 Emacs-w3m で検索すると Blogger 風インターフェース には思わぬ弱点がある事に気付いた。 Emacs-w3m には SPC キーを押し続けることで、検索ページの一番下までページ・スクロールした後、次の検索結果ページに移動する機能がある。同様に、検索ページのトップで BackSpace を押すと前の検索結果ページに戻る。 Blogger 風インターフェースには、困ったことに「前」の検索結果へのリンクがない。一方、 Google 風インターフェースにはある。

Emacs-w3m で検索するのにインターフェースの違いは気にならない。というわけで、( Emacs-w3m の) blog 検索には http://blogsearch.google.com/ を使うが得策かと。

検索用の設定

(add-to-list 'w3m-search-engine-alist
   '("blog"
     "http://blogsearch.google.com/blogsearch?q=%s&lr=lang_ja&oe=utf-8&ie=utf-8"
     utf-8))
(add-to-list 'w3m-search-engine-alist
   '("blog-en"
     "http://blogsearch.google.com/blogsearch?q=%s&oe=utf-8&ie=utf-8"
     utf-8))

「前・次」ページ移動用の設定

(eval-after-load "w3m"
  '(progn
    (setq w3m-relationship-estimate-rules
   (cons `(w3m-relationship-simple-estimate
    "\\`http://blogsearch\\.google\\.[^/]+/blogsearch"
    ,(concat "<a href=" w3m-html-string-regexp
      "><img src=nav_next\\.gif")
    ,(concat "<a href=" w3m-html-string-regexp
      "><img src=nav_previous\\.gif")
    nil nil)
       w3m-relationship-estimate-rules))))

ref

.
.

2005-09-14

Emacs-w3m で Blog Search を使う

Googleブログ用の検索エンジンを出したので、 Emacs-w3m で動作確認。 Google 検索同様、シンプルながらテキスト・ブラウザーでも視認性が落ちない。ここら辺が、 Ask Jeeves との違いだなぁ、としみじみ思う。

恒例のことながら、 Emacs-w3m の検索エンジン候補に Blog Search を含める方法。.emacs に以下のコードを追加する。

(add-to-list 'w3m-search-engine-alist
   '("blog"
     "http://search.blogger.com/?q=%s&lr=lang_ja&oe=utf-8&ie=utf-8"
     utf-8))
(add-to-list 'w3m-search-engine-alist
   '("blog-en"
     "http://search.blogger.com/?q=%s&oe=utf-8&ie=utf-8"
     utf-8))

注意。サイト上からは、日本語が上手く通らない。検索ボックスに日本語文字列を入れると、ヘッダーが ISO-8859-1 を返す関係で文字化けしてしまう。上の quick hack にはその対策も入ってる。 ieoe (input encoding と output encodeng) を utf-8 に指定しているのがソレ。そんなわけで、Emacs が Unicode に対応してないと、このコードは使えない。そういう人は、こっちをどうぞ。

(add-to-list 'w3m-search-engine-alist
   '("blog"
     "http://search.blogger.com/?q=AUCTeX&lr=lang_ja&oe=Shift_JIS&ie=Shift_JIS"
     shift_jis))
(add-to-list 'w3m-search-engine-alist
   '("blog-en"
     "http://search.blogger.com/?q=%s"
     utf-8))

多少も文字化けは起きるかもしれないけど、動くはず。

ref

2005-07-03

Technorati Search in Emacs-w3m |Emacs-w3m|Technorati|

[2005-07-01]、 Technorati.jp の正式サービスが始まった。

テクノラティは、ブログ界で何が起きているかを確認することができるリアルタイム検索エンジンです。

ようはブログ検索サービス。 GoogleYahoo! みたいな検索サービスは、インデックスの更新がだいたい一か月おき (?) なので、最新の情報を集めるのには不向き ( そこで Google News というのは置いといて)。 Technorati は、RSS や PING 情報を基にして最新のブログ検索を行っている。だから、1 時間前のポストも、すぐに検索結果に反映されてたりする。

Technorati で面白いのは、ブログに対する逆リンクも調べられる事。検索キーワードの替わりに、 ブログの URL を入れるとそのブログにリンクしているページが、 permalink を入れるとそのポストにリンクしているページが分かる。これは Technorati がチェックしているブログからのリンクのみを調べてるから、漏れてるブログもある。でも、トラックバックを打ってないけど、リンクしているページなんかを見付けるのに便利。

Technorati in Emacs-w3m

そんな検索サービスがあるなら、 Emacs-w3m からも使ってみたい所。以下のコードを .emacs に含めると、 Emacs-w3m のサーチから、 Technorati の検索ができるようになる。

(add-to-list 'w3m-search-engine-alist
   '("technorati"
     "http://www.technorati.jp/search/search.html?query=%s&language=ja"
     utf-8))
(add-to-list 'w3m-search-engine-alist
   '("technorati-en"
     "http://www.technorati.com/search/%s"
     utf-8))
(add-to-list 'w3m-search-engine-alist
   '("technorati-tag"
     "http://www.technorati.com/tag/%s"
     utf-8))

最後の設定: technorati-tag は、 Technorati がサポートしているタグを検索する。タグは Flickr のタグや Movable Type のカテゴリーに対応している。日本語サポートもサポートされている (けど、 Technorati Japan には説明ページがない...?)

ちなみに Technorati の検索結果は Emacs-w3m で見ても、 Google と同じ位い見易い。難を言えば、ヘッダーが場所を取り過ぎてることかな?

ref

2005-06-29

Emacs-w3m で「次・前」のページへ |Emacs-w3m|HTML|

Emacs-w3m では、ちょっとした quick hack で HTML の link 要素を辿るようにできる。今回はその発展編 (?) で、link 要素のないページで「次」のページと「前」のページを推測する機能について。

rel="next/prev" を辿る

その前に Emacs-w3m の link 要素サポートに関して一言。実は、先日の hack を加えなくとも、 rel="next" (or rel="prev") だけなら Emacs-w3m はデフォールトでサポートしている。

例えば、 Google で何かを検索してみよう。 SPC を連打してページの一番下まで行く。そこでもう一回 SPC を打つと、 Emacs-w3m は「次」の検索結果ページへとジャンプする。「前」の検索結果に戻りたければ、 DEL。もし、ウェブページの全てに link 要素が (ちゃんと) 入っていれば、 Emacs-w3mSPCDEL キーだけでページを全部見れる (言いすぎ?)。

link 要素の推測

さて、 Google の検索結果ページのソースを見てみよう。ソースに、link 要素が見あたらないはず。そう、 Google は link 要素を持っていない。さっきの「次の検索結果」へのジャンプは、 Emacs-w3m の link 要素推測機能で実現されている。

Emacs-w3m の link 要素推測機能は、ページごとに link 要素を推測させるルールを追加することで実現している。ルールは変数 w3m-relationship-estimate-rules に書かれているので、新しいルールの追加は次のようにする。

(setq w3m-relationship-estimate-rules
     (cons `(ルール) w3m-relationship-estimate-rules))

ルールの書式は次の通り。

`("ルールを適用するサイトの URL"
  "「次の」リンク (を含むテキスト)"
  "「前の」リンク (を含むテキスト)"
 nil nil)
例えば、http://www.foo.bar で <a href="bar003.html">次へ</a> が「次のページ」へのリンクに、 <a href="bar001.html">前へ</a> が「前のページ」へのリンクになっていたら、次のように書く。
(setq w3m-relationship-estimate-rules
  (cons `("\\`http://www\\.foo\\.bar"
          ,(concat "<a href=" w3m-html-string-regexp ">次へ</a>")
          ,(concat "<a href=" w3m-html-string-regexp ">前へ</a>")
          nil nil)))

URL 関連は全て正規表現。なので、. (period) は \ (backslash) でエスケープ。リンク先の bar003.html は bar004.html や bar005.html なんて感じに変わるかもしんない。 Google みたいに、機械的にリンク URL を作ってるかもしんない。ここは、 Emacs-w3m が用意している URL 用の正規表現 w3m-html-string-regexp を使うのがミソ。

実際の例は、w3m.el の中にある w3m-relationship-estimate-rules のソース・コードとか、 Yahoo Search Beta in Emacs-w3m (2) を参照されたし。

ref

2005-06-27

Link 要素 |HTML|Emacs-w3m|Firefox|

HTML には Link 要素というものがあって、外部ファイルへのリンクと閲覧中のファイルとの関係性を記述できる。代表的なものは、外部スタイルシートへのリンク。この他にも、代替ファイルへのリンクとか、「次の」ファイルや「前の」ファイルへのリンク、それから「スタートページ」へのリンクを設定できる。

link 要素の書き方は二種類ある。一つは head 要素の中に書く方法。

<link rel="start" type="text/html" href="../index.html" title="...">

もう一つは、a 要素の中に書く方法。

<a href="../index.html" rel="start" title="...">

rel= に指定するキーワードは、alternate, start, contents, index, prev, next, help など。

link 要素を正しく使えば、適切なリンク先をブラウザーに教える事ができる。例えば、ブログで古い記事の続きを書く場合でも rel="previous" として、古い記事にリンクを張ればいい。適切なブラウザーを使っていれば、キー操作一つで「前の」記事へとジャンプする。

問題は、 適切な ブラウザーが少いこと。そこで、 firefoxEmacs-w3m で link 要素を使う方法を書いとく。

Firefox - linkToolbar

firefox には LinkToolbar という拡張がある ( 日本語版もある)。この拡張を導入すると、 firefox の右下に link 先を表す小さなアイコンが表示される。アイコンは左から、スタート・親・最初・前・次・最後・その他、のページへのリンクになってる。アイコンを中クリックすると、新しいタブでページを開くので便利。

Emacs-w3m

Emacs-w3m には、link 要素用の関数は用意されていない。けれど、link 要素をスキャンして値を変数に保存する機能があるので、quick hack で link ジャンプを実現できる。link 要素関連の変数は次の通り。

w3m-next-url
rel="next" なリンク情報を保存
w3m-previous-url
rel="prev" なリンク情報を保存
w3m-start-url
rel="start" なリンク情報を保存
w3m-contents-url
rel="contents" なリンク情報を保存

この変数を活用する。.emacs に次のコードを追加する。

(add-hook 'w3m-mode-hook
   '(lambda ()
      (define-key w3m-mode-map "\C-cN" (lambda () (interactive) (if w3m-next-url (w3m-goto-url w3m-next-url))))
      (define-key w3m-mode-map "\C-cP" (lambda () (interactive) (if w3m-previous-url (w3m-goto-url w3m-previous-url))))
      (define-key w3m-mode-map "\C-cS" (lambda () (interactive) (if w3m-start-url (w3m-goto-url w3m-start-url))))
      (define-key w3m-mode-map "\C-cC" (lambda () (interactive) (if w3m-contents-url (w3m-goto-url w3m-contents-url))))))

今回の例だと、 C-c NNextC-c PPreviousC-c SStartC-c CContents へのジャンプ機能を割り当てた。ここら辺のキーバインドは、お好きなように。

ref

2005-06-26

Yahoo Search Beta in Emacs-w3m (2) |Emacs|Emacs-w3m|

昨日の続き。Emacs-w3m は検索するにも優れたブラウザーで、Google の検索ページを SPC キーだけで閲覧することができる。もう少し説明すると、Emacs-w3m では SPC キーでページのスクロールができて、検索ページの一番下まで行くと、次の検索ページへとジャンプしてくれる。つまり、「次へ」のリンクを (クリックしたりして) 辿る必要がない。ブラウザーの操作に気を使わなくて済むということは、検索結果だけに集中できるのでありがたい。

この機能を Yahoo! Search Beta でも使うには、次のコードを .emacs に追加する。

(eval-after-load "w3m"
  '(progn
    (setq w3m-relationship-estimate-rules
      (cons `(w3m-relationship-simple-estimate
             "\\`http://beta\\.search\\.yahoo\\.co\\.jp/"
             ,(concat "<a href=" w3m-html-string-regexp
               "><img src=http://i\\.yimg\\.jp/images/common/ar_next\\.gif")
             ,(concat "<a href=" w3m-html-string-regexp
               "><img src=http://i\\.yimg\\.jp/images/common/ar_prev\\.gif")
             nil nil)
       w3m-relationship-estimate-rules))))

昨日書いた Yahoo! Search Beta 用のコードは CVS Emacs-w3m に既に取り込まれた (Thanks: 土屋さん) ので、新しもの好きな人は開発版もどうぞ。

2005-06-24

Yahoo! Search Beta in Emacs-w3m

Yahoo! が出した 新しい検索エンジンは、 Google みたいにシンプルなデザイン。既に色んな所で話題になってるので、趣向を変えて Emacs-w3m から見た Yahoo! Search について。

検索エンジンの返す結果は、 firefox のようなモダン・ブラウザーで見ると見栄えがいい。でも、テキスト・ブラウザーでの見栄えまで考えている所は少ないようで、 Emacs-w3m ユーザーとしては不満の出る事も多い。私見では、まともに見えるのは Google 位いのもの (だから Google が好きになる)。yahoo search beta の出来は如何ほどか?

google in emacs-w3m yahoo in emacs-w3m

GoogleYahoo! のトップページを比べてみると、どちらもシンプル。ただし、Yahoo! では [画像] 検索や [音声] 検索へのリンクに JavaScript を使っているので、 Emacs-w3m では表示されない。 Google よりシンプルだけど、機能性がなくなっちゃあねぇ。最近、はやりの Ajax にしてもそうだけど、便利になったように見えてアクセシビリティが下がる事もあるのでウェブ制作者は考えて欲しいもの。

検索結果ページの比較

次に、両者のページで Flickr を検索してみた。

google searches flickr in emacs-w3m yahoo searches flickr in emacs-w3m

見ての通り、どちらもテキスト・ブラウザーでの見栄えがいい。実際、使ってみても Google と同じ位いの使い勝手。検索エンジンはウェブ・ツールの中で一番よく使うから、使い勝手が悪いと使う気がしない。 Yahoo! Search は、使ってみたい気にさせる。

Emacs-w3m の search に yahoo search を加える

(eval-after-load "w3m-search"
  '(progn
     (add-to-list 'w3m-search-engine-alist
    '("yahoo beta"
      "http://beta.search.yahoo.co.jp/search?p=%s&ei=UTF-8&eo=UTF-8"
      utf-8))
))

追記(2005-06-26): 土屋さんに日本語で検索しても文字化けしない方法を教わったので上記のサンプルを修正しました。

via

2005-06-18

Emacs-w3m で Google News を検索する |Emacs|Google|

[2005-06-16] に書いた、 Emacs-w3m から Google News を検索する機能が、 Emacs-w3m の開発版に取り込まれた (作業をしてくれた山岡さん、ありがとうございます)。

日本語環境で使っていれば、 google news という検索エンジン名で Google ニュース 日本語版を、 google news-en で英語版の Google News を検索できる。

ref

2005-06-16

Emacs-w3m の検索に Google News 検索を加える |Emacs|Google|

昨日は、 Google News の検索はフレッシュ検索として使える って書いた。せっかくだから、愛用のブラウザー Emacs-w3m の検索エンジンに Google News も組み込んでみる。以下のコードを .emacs に追加するだけ。

(eval-after-load "w3m-search"
  '(progn
     (add-to-list 'w3m-search-engine-alist
    '("google news"
      "http://news.google.co.jp/news?hl=ja&ie=Shift_JIS&q=%s"
      shift_jis))
     (add-to-list 'w3m-uri-replace-alist
    '("\\`gn:" w3m-search-uri-replace "google news"))))