ido-occasional 20150214.448(in MELPA)
Use ido where you choose.

M-x package-install ido-vertical-mode

概要

優れた補完のインターフェースとして、 helmido があります。

確かになんでもできるhelmはとても優れていますが、
あいまいマッチ有効時のidoは打鍵数がhelmよりも少なくなります。

ido原理主義者ならば ido-ubiquitous.el(レビュー) を使えばいいですが、
helmには複数情報源・複数アクション・Migemo化 というメリットもあります。

よって、適材適所で両者を共存させるのがベストです。

そこで、 ido-occasional.el の出番です。

with-ido-completion マクロを使えば、
既存のコマンドの内部で使われている completing-read 関数(補完入力関数)を
idoのもの(ido-completing-read)に置き換えたコマンドを定義します。

機能としては、たったこれだけ(1つの関数と1つのマクロしか定義されていない)ですが、
より細かな制御ができるようになります。

(global-set-key (kbd "<f1> f") (with-ido-completion describe-function))
(global-set-key (kbd "<f1> v") (with-ido-completion describe-variable))
(global-set-key (kbd "<f2> i") (with-ido-completion info-lookup-symbol))

と定義しておけば、<f1> fはたとえ helm-mode が有効が有効であったとしても
idoの補完が使われるようになります。

それぞれ以下のコマンドが定義され、
そのまま global-set-keydefine-key に設定できます。

  • describe-function -> describe-function/with-ido
  • describe-variable -> describe-variable/with-ido
  • info-lookup-symbol -> info-lookup-symbol/with-ido

helm好きならば、ぜひともidoの候補を縦に並べる
ido-vertical-mode(レビュー) も入れておきましょう。

20150223080911.png
Fig1: ido化されたdescribe-function with ido-vertical-mode

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてido-occasionalを使う方は
以下のコマンドを実行します。

M-x package-install ido-occasional

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name ido-occasional

設定 150223080750.ido-occasional.el(以下のコードと同一)

;;; このときidoが使うwindowの高さは大きくした方がいい
(setq ido-max-window-height 0.75)
;;; あいまいマッチは入れておこう
(setq ido-enable-flex-matching t)
(ido-mode 1)
(ignore-errors
  (ido-vertical-mode 1)
  (setq ido-vertical-define-keys 'C-n-and-C-p-only))

(global-set-key (kbd "<f1> f") (with-ido-completion describe-function))
(global-set-key (kbd "<f1> v") (with-ido-completion describe-variable))
(global-set-key (kbd "<f2> i") (with-ido-completion info-lookup-symbol))

実行方法

$ wget http://rubikitch.com/f/150223080750.ido-occasional.el
$ emacs -Q -f package-initialize -l 150223080750.ido-occasional.el

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。