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

Re: Quicksearch support in Emacs-w3m



※ "山岡さん" こと yamaoka@jpl.org さんの
   『[emacs-w3m:04281] Re: Quicksearch support in Emacs-w3m』より

山岡さん> あの、以前から疑問だったんですが、http://www.google.com/ を開く
山岡さん> と、勝手に http://www.google.co.jp/ に飛ばされてしまうのはなぜで
山岡さん> しょう?  なので、ぼくは ("gg" . "google") だけで充分。:-p

なぜなんでしょうね?Accept-Language を en にしても cookieを
無効にしても co.jp にいってしまうようです。

私はまず「日本語のページを検索」で絞り込んで探して、なければ
「ウェブ全体から検索」って使い方をしたいものでして。

水戸さん> どうせなら、w3m-search-quick-search-engine-alist の定義のあ
水戸さん> たりでこれと同等のことをしてもらえればいいと思うのですが、い
水戸さん> かがでしょう?

山岡さん> あ、ぜひそうして下さい。パッチと ChangeLog お待ちしております。:)

defcustom でやっちゃっていいものか判断がつかなかったんですが、
とりあえずやってみました。
2002-11-13  Mito  <mito@mxa.nes.nec.co.jp>

	* w3m-search.el (w3m-search-quick-search-engine-alist): Add all engines in w3m-search-engine-alist automatically.

--- w3m-search.el.~1.19.~	Wed Nov 13 09:15:41 2002
+++ w3m-search.el	Wed Nov 13 11:57:50 2002
@@ -88,12 +88,20 @@
   :type 'string)
 
 (defcustom w3m-search-quick-search-engine-alist
-  '(("gg"   . "google")
+  (let ((engine-alist w3m-search-engine-alist)
+        (quick-search-engine-alist '(("gg"   . "google")
     ("ggg"  . "google groups")
     ("ya"   . "yahoo")
     ("al"   . "altavista")
     ("bts"  . "debian-bts")
-    ("dpkg" . "debian-pkg"))
+                                     ("dpkg" . "debian-pkg")))
+        engine)
+    (while engine-alist
+      (setq engine (car (car engine-alist))
+            engine-alist (cdr engine-alist))
+      (when (not (rassoc engine w3m-search-quick-search-engine-alist))
+        (nconc quick-search-engine-alist (list (cons engine engine)))))
+    quick-search-engine-alist)
   "*An alist of short names for defined search engine names.
 Each element follows the scheme (NAME . ENGINE)
 NAME if the short name you want to use for this engine.
※ "山岡さん" こと yamaoka@jpl.org さんの
   『[emacs-w3m:04282] Re: Quicksearch support in Emacs-w3m』より

山岡さん> 後知恵で申し訳ありませんが、w3m-search-quick-search-engine-alist
山岡さん> に w3m-search-engine-alist をマージするのは大変だし、ユーザオプ
山岡さん> ションとしての特性が変化してしまうので、例えば w3m-search.el に
山岡さん> w3m-search-quick-search-engine-alist と同名の関数を作って、二つ
山岡さん> の変数をマージした結果を返すようにしてはいかがでしょう?

真意をちゃんと理解していないかもしれませんが、以下のような感
じでしょうか?
---
11/13 13:01頃
NECソフト 水戸
--- w3m-search.el.~1.19.~	Wed Nov 13 09:15:41 2002
+++ w3m-search.el	Wed Nov 13 12:35:09 2002
@@ -102,6 +102,18 @@
 engines defined in `w3m-search-engine-alist'."
   :group 'w3m)
 
+(defun w3m-search-quick-search-engine-alist ()
+  "Concatinate w3m-search-quick-search-engine-alist and w3m-search-engine-alist."
+  (let ((engine-alist w3m-search-engine-alist)
+        engine)
+    (while engine-alist
+      (setq engine (car (car engine-alist))
+	    engine-alist (cdr engine-alist))
+      (when (not (rassoc engine w3m-search-quick-search-engine-alist))
+	(nconc w3m-search-quick-search-engine-alist
+               (list (cons engine engine)))))
+    w3m-search-quick-search-engine-alist)
+
 (defcustom w3m-search-word-at-point t
   "*Non-nil means that the word at point is used as initial string."
   :group 'w3m
@@ -157,7 +169,7 @@
 If URL is a quicksearch url, replace it with the real url needed to access
 the search engine.  If not, leave it alone."
   (let ((ret url))
-    (dolist (quick-search-engine w3m-search-quick-search-engine-alist ret)
+    (dolist (quick-search-engine (w3m-search-quick-search-engine-alist) ret)
       (if (string-match (concat "\\`" (car quick-search-engine) ":") url)
 	  (let ((query (substring url (match-end 0))))
 	    (unless (string= query "")