読者です 読者をやめる 読者になる 読者になる

うめすこんぶ

日々のプログラミングで残しておきたいメモ.何かの役に立てれば幸いです.

EmacsでもGoogle検索したい!(search-web.el, google-this)

emacs google

スポンサーリンク

Google先生Emacsから呼んじゃいましょう。2通り方法を記します。

search-web.el

google以外にも、yahoo, alcとかweblioとか、いろいろなサイトで検索ができるすごいやつ。

インストール

  • list-packages でsearch-web.elを探す。あとは、いつもの様にクリック2回でインストール。

  • gitで探す。

git clone https://github.com/tomoya/search-web.el.git

中のsearch-web.elをEmacsのパスの通ったところに置く。

.emacsの設定

Emacsの単語をブラウザで検索 - 勉強日記 を参考に、search-web.elの設定。

(require 'search-web)

(define-prefix-command 'search-web-map)
(global-set-key (kbd "M-i") 'search-web-map)
(global-set-key (kbd "M-i g") (lambda () (interactive) (search-web-dwim "google")))
(global-set-key (kbd "M-i M-i") (lambda () (interactive) (search-web-dwim)))

(defun search-web-dwim (&optional arg-engine)
  "transient-mark-mode がオンの時はリージョンを,オフの時はカーソル位置の単語を検索する."
  (interactive)
  (cond
   (
;; (transient-region-active-p)
    (region-active-p)
    (and transient-mark-mode mark-active)
    (search-web-region arg-engine))
   (t
    (search-web-at-point arg-engine))))

検索を実行しようとすると、transient-region-active-pあたりでおかしくなってうまくいかない。 CmdNote - [emacs,elisp] transient-markがonでmarkがアクティブかどうか調べる このページを元に、改造した。

(transient-region-active-p)

の部分を

(region-active-p)
(and transient-mark-mode mark-active)

と変えてうまくいった。

使う

検索したい単語の上にカーソルを置くか、リージョン選択でM-i ggoogle検索ができる。

google-this

google検索できる。search-web.elより機能は少ない。

インストール

  • list-packages でgoogle-thisを探す。あとは、いつもの様にクリック2回でインストール。

.emacsの設定

(require 'google-this)
(setq google-this-location-suffix "co.jp")
(defun google-this-url () "URL for google searches."
  (concat google-this-base-url google-this-location-suffix
          "/search?q=%s&hl=ja&num=10&as_qdr=y5&lr=lang_ja"))
(global-set-key "\C-cg" 'google-this)

/search?q=%s&hl=ja&num=10&as_qdr=y5&lr=lang_ja の部分は、日本語で10件、5年以内の検索結果をだす。好みによって変える。 (参考:Google検索のパラメータ(URLパラメータ)一覧 - fragment.database.)

使う

特定の単語の上にカーソルを置くか、リージョン選択で、C-c g

参考

search-web.el

google-this