[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [emacs-w3m:00042] Re: Google search
At Sun, 04 Mar 2001 06:11:16 +0900 (JST),
Shun-ichi GOTO wrote:
>
> 調べました。
> 原因はgoogleがはく出力の多くは、
> <a href=hoge/hage/kero/ny-a.html>
> というように、href="..." のようなダブルクォートをつけておらず、
> 一方w3mはダブルクォートを期待するregexpを使っているからでした。
素晴しい。うまく検索出来ました。でも、日本語で検索出来ないようです。
エンコードの部分がおかしいのかな。後でちょっと見てみます。
> * Yahooのsearch出力などに見られますが、複数の空行が多く出力される
> ページがあるため、これを取り除くためのスイッチを設けました。
> 出力はすっきりするはずです。
> 変数は w3m-delete-duplicated-empty-lines で、デフォルトを t にしました。
> デフォルトは tでよいでしょうか? > all
デフォルトを t にして defcustom でなく defvar で宣言しておくので
十分じゃないでしょうか。customize 変数はなくべく少ない方がいい。
> * 西田さんの yohoo-search, google-search を追加しました。
> ただし、他のサーチエンジンも使えるように、
> w3m-search-engine-alistという変数で定義できるようにし、
> デフォルトのサーチエンジンを w3m-default-search-engine で
> 指定できるようにしました。
> サーチのコマンドは M-x w3m-search です。
> prefixをつけるとエンジンが選択できます。
おお、いいですね、これ。
ちょこちょこっと手を入れてみました。
* ffap の代わりに thingatpt を使うようにした。
thingatpt は browse-url でも使われてるので、こちらの方がベター。
* w3m-command-arguments に関数を設定出来るようにした。
フレームのサイズを変えてから reload すると、それに合わせて
fill-column も変わる。w3m-fill-column は custom 変数から外した。
(誰も変更しないと思う。たぶん w3m-command-arguments も)
* w3m-anchor-face は標準で赤でなく青にした。これが一般的だと思うが・・
* w3m-arrived-anchor-face から bold 指定を外した。
* w3m-search-engine-alist の書式単純化。
* w3m-search の中で "word" でなく "query" を使うようにした。
検索式は一語とは限らないので。
-- Kei
Index: w3m.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.49
diff -u -r1.49 w3m.el
--- w3m.el 2001/03/03 20:52:38 1.49
+++ w3m.el 2001/03/03 22:45:38
@@ -51,7 +51,7 @@
(if (featurep 'xemacs)
(require 'poem))
-(require 'ffap)
+(require 'thingatpt)
(unless (fboundp 'find-coding-system)
(if (fboundp 'coding-system-p)
@@ -83,16 +83,13 @@
:group 'w3m
:type 'string)
-(defcustom w3m-fill-column (- (frame-width) 4)
- "*Fill column of w3m."
- :group 'w3m
- :type 'integer)
-
(defcustom w3m-command-arguments
- '("-T" "text/html" "-t" tab-width "-halfdump" "-cols" w3m-fill-column)
+ (lambda ()
+ (list "-T" "text/html" "-t" (int-to-string tab-width) "-halfdump"
+ "-cols" (int-to-string (- (frame-width) 4))))
"*Arguments of w3m."
:group 'w3m
- :type '(repeat (restricted-sexp :match-alternatives (stringp boundp))))
+ :type 'sexp)
(defcustom w3m-mailto-url-function nil
"*Mailto handling Function."
@@ -203,17 +200,15 @@
:type 'integer)
(defface w3m-anchor-face
- '((((class color) (background light)) (:foreground "red" :underline t))
+ '((((class color) (background light)) (:foreground "blue" :underline t))
(((class color) (background dark)) (:foreground "cyan" :underline t))
(t (:underline t)))
"*Face to fontify anchors."
:group 'w3m-face)
(defface w3m-arrived-anchor-face
- '((((class color) (background light))
- (:foreground "navy" :underline t :bold t))
- (((class color) (background dark))
- (:foreground "LightSkyBlue" :underline t :bold nil))
+ '((((class color) (background light)) (:foreground "navy" :underline t))
+ (((class color) (background dark)) (:foreground "LightSkyBlue" :underline t))
(t (:underline t)))
"*Face to fontify anchors, if arrived."
:group 'w3m-face)
@@ -327,15 +322,15 @@
:type '(repeat (cons symbol coding-system)))
(defcustom w3m-search-engine-alist
- '(("yahoo" "http://search.yahoo.com/bin/search" "p=%s")
- ("google" "http://www.google.com/search?q=" "q=%s"))
- "*Search engine database.
-Each elemnt of alist is a list as:
-\( name-of-engine url query-format \)"
- :group 'w3m
- :type '(repeat (list (string :tag "Engine")
- (string :tag "URL")
- (string :tag "Query-format"))))
+ '(("yahoo" . "http://search.yahoo.com/bin/search?p=%s")
+ ("google" . "http://www.google.com/search?q=%s"))
+ "*An alist of search engines.
+Each elemnt looks like (ENGINE . ACTION)
+ENGINE is a string, the name of the search engine.
+ACTION is a string, the URL that performs a search.
+ACTION must contain a \"%s\", which is substituted by a query string."
+ :group 'w3m
+ :type '(repeat (cons (string :tag "Engine") (string :tag "Action"))))
(defcustom w3m-default-search-engine "yahoo"
"*Default search engine name.
@@ -604,7 +599,7 @@
(mapatoms (lambda (x)
(setq candidates (cons (cons (symbol-name x) x) candidates)))
w3m-backlog-hashtb)
- (setq default (or default (ffap-url-at-point)))
+ (setq default (or default (thing-at-point 'url)))
(setq prompt (or prompt
(if default "URL: "
(format "URL (default %s): " w3m-home-page))))
@@ -1115,13 +1110,10 @@
(default-process-coding-system
(cons w3m-output-coding-system w3m-input-coding-system)))
(w3m-message "Rendering...")
- (apply 'call-process-region
- start end w3m-command t t nil
- (mapcar (lambda (x)
- (if (stringp x)
- x
- (prin1-to-string (eval x))))
- w3m-command-arguments))
+ (apply 'call-process-region start end w3m-command t t nil
+ (if (functionp w3m-command-arguments)
+ (funcall w3m-command-arguments)
+ w3m-command-arguments))
(goto-char (point-min))
(w3m-message "Rendering... done")
(let (title)
@@ -1542,8 +1534,8 @@
"
(kill-all-local-variables)
(buffer-disable-undo)
- (setq major-mode 'w3m-mode
- mode-name "w3m")
+ (setq major-mode 'w3m-mode)
+ (setq mode-name "w3m")
(use-local-map w3m-mode-map)
(setq truncate-lines t)
(run-hooks 'w3m-mode-hook))
@@ -1838,37 +1830,31 @@
(string-to-list str)
""))
-(defun w3m-do-search (word engine)
- (let ((alist (assoc engine w3m-search-engine-alist)))
- (if (null alist) (error "Unknown search engine: %s" engine))
- (w3m (concat (nth 1 alist) "?"
- (format (nth 2 alist) (w3m-escape-query-string word))))))
+(defun w3m-do-search (engine query)
+ (let ((pair (assoc engine w3m-search-engine-alist)))
+ (if (null pair)
+ (error "Unknown search engine: %s" engine)
+ (w3m (format (cdr pair) (w3m-escape-query-string query))))))
(defun w3m-search (arg)
- "Search word using search-engine.
+ "Search query using search-engine.
With prefix ARG, you can choose search engine deinfed in
`w3m-search-engine-alist'. Otherwise use `w3m-default-search-engine'."
(interactive "P")
- (let (engine word)
+ (let (engine query)
;; decide search engine
(if (null arg)
(setq engine w3m-default-search-engine)
;; with prefix, select
- (setq engine (completing-read
+ (setq engine (completing-read
(format "Which Engine? (%s): " w3m-default-search-engine)
w3m-search-engine-alist nil t))
(if (string= engine "")
- (setq engine w3m-default-search-engine))
- (if (and (string= engine w3m-default-search-engine)
- (y-or-n-p "Set %s as default search engine? "))
- (setq w3m-default-search-engine engine)))
- ;; input search word
- (let ((prompt "%s search word: "))
- (while (or (null word) (string-match "^[ \t]$" word))
- (setq word (read-string (format "%s search word: " engine)))
- (setq prompt "%s search word again: ")))
- ;; search it
- (w3m-do-search word engine)))
+ (setq engine w3m-default-search-engine)))
+ ;; input search query
+ (setq query (read-string (format "%s search: " engine)))
+ (if (not (string= query ""))
+ (w3m-do-search engine query))))
(provide 'w3m)
;;; w3m.el ends here.