pophint.el/pophint-config.elをv0.4にアップデートしました

現在の最新バージョンは以下です。

  • pophint.el ... 0.3.7
  • pophint-config.el ... 0.4.0

pophint.elについては過去エントリを参照して下さい。
ソース置き場:https://github.com/aki2o/emacs-pophint

変更点

  • バグ修正
  • アクション追加
  • さらにVimperator/Keysnailっぽく

バグ修正

最近Emacsを24にアップグレードしました。
それに関係あるかわからないんですが、ある時から以下のエラーが出るようになりました。

[PopHint] Failed pophint:do : Wrong type argument: listp, 0

調べてみると、デバッグ用のコード記述にミスがあり、それを修正したら直りました。
根本的にダメっぽい原因だったんですが、今まで何でエラーが出なかったのか。。

アクション追加

今までWebでの調べ物とかはFirefoxメインでやってきたんですが、最近どんどんEmacsから出るのが嫌になってきてます。
本格的にEmacsに侵されつつある気がします。
という訳で、Emacsからすぐにググれるようにアクションを追加しました。
以下のように設定することで、選択したヒントのテキストを元にw3m-searchが実行できます。(※1)

(define-key global-map (kbd "M-s") 'pophint:do-flexibly-search)

さらにVimperator/Keysnailっぽく

しました。(※2)
デフォルトで以下のキーバインドを定義しています。

  • リンクを開く (※3) ... f
  • リンクを開く (※4) ... F
  • 続けてリンクを開く ... C-c C-e / ; F
  • 現在のタブでリンクを開く ... ; o
  • 新しいタブでリンクを開く ... ; t
  • リンクのURLをコピーする ... ; y
  • リンク先のHTMLを表示する ... ; v
  • リンクの場所にカーソル移動する ... ; RET

変更したい場合は、お手数ですが設定ファイルでpophint-config:w3m-set-keysを再定義して下さい。
現在の定義は以下です。

(defun pophint-config:w3m-set-keys ()
  (local-set-key (kbd "f")       'pophint:do-w3m-anchor)
  (local-set-key (kbd "F")       'pophint-config:w3m-anchor-open-invert)
  (local-set-key (kbd "C-c C-e") 'pophint-config:w3m-anchor-open-new-tab-continuously)
  (local-set-key (kbd "; o")     'pophint-config:w3m-anchor-open)
  (local-set-key (kbd "; t")     'pophint-config:w3m-anchor-open-new-tab)
  (local-set-key (kbd "; F")     'pophint-config:w3m-anchor-open-new-tab-continuously)
  (local-set-key (kbd "; y")     'pophint-config:w3m-anchor-yank)
  (local-set-key (kbd "; v")     'pophint-config:w3m-anchor-view-source)
  (local-set-key (kbd "; RET")   'pophint-config:w3m-anchor-focus))

ちなみに

もしone-key.elをお使いならば、拙作のone-key-local.elを使うことで、以下のように拡張ヒントモードのヘルプのようなことも可能です。(※5)

f:id:aki2o:20130830175257p:plain

上記イメージは、以下の設定によるものです。

(one-key-local-create-menu :hook 'w3m-mode-hook :key ";" :bind "; ?")

その他

※1 検索エンジンは、とりあえず無条件にw3m-search-default-engineを使うようにしています。
※2 w3m-modeだけです。ewwというものがあるみたいですが把握できていないので未実装です。
※3 新しいタブで開くかどうかを、pophint-config:set-w3m-use-new-tabで指定します。
※4 ※3の逆の設定で開きます。
※5 最新のone-key.elは正常に動作しないみたいです。詳しくは、別エントリを。

設定例

上記を踏まえ、現在、私の設定は以下のようになっています。

(require 'pophint)
(require 'pophint-config)

(setq pophint:popup-max-tips 400)

(pophint-config:set-automatically-when-marking t)
(pophint-config:set-yank-immediately-when-marking nil)
(pophint-config:set-automatically-when-isearch t)
(pophint-config:set-relayout-when-rangeyank-start nil)
(pophint-config:set-w3m-use-new-tab t)

(define-key global-map (kbd "C-;") 'pophint:do)
(define-key global-map (kbd "C-+") 'pophint:do-interactively)
(define-key global-map (kbd "M-;") 'pophint:redo)
(define-key global-map (kbd "M-y") 'pophint:do-flexibly-yank)
(define-key global-map (kbd "C-M-y") 'pophint:do-rangeyank)
(define-key global-map (kbd "M-s") 'pophint:do-flexibly-search)

(define-key dired-mode-map (kbd "f") 'pophint:do-dired-node)

(add-to-list 'Info-mode-hook
             '(lambda () (local-set-key (kbd "f") 'pophint:do-info-ref))
             t)

(add-to-list 'help-mode-hook
             '(lambda () (local-set-key (kbd "f") 'pophint:do-help-btn))
             t)

(one-key-local-create-menu :hook 'w3m-mode-hook :key ";" :bind "; ?")

Enjoy!!!