bbyac 20170127.516(in MELPA)
Type a little Bit, and Bang! You Are Completed.

概要

通常の M-/ (dabbrev-expand) や M-x hippie-expand では、
補完したい文字列の最初からタイプする必要があり、
elispの長いシンボルを補完するのには向いていません。

そこで、ido式あいまいマッチ(各文字間に「.*」をはさんだ正規表現に変換)
を使って補完するのが bbyac.el です。

候補が複数個ある場合は、ミニバッファでC-p/C-nとすることで選択できます。

いわば idoM-x dabbrev-completion といった感じで、
打鍵数を最小限にして適切にシンボルを補完してくれます。

シンボル補完以外にも行補完(M-s RET、M-s l)や
パラグラフの補完(M-s p)があります。

本設定ではbbyac.el内蔵の候補選択ではなく、
ido-vertical-mode.el(レビュー) にインターフェースをすり替えています。

なぜならC-p/C-n以外にも文字をタイプして絞り込みができるからです。

dabbrevやhippie-expandにフラストレーションを感じている方は
絶対に試してみる価値があります。

20150312093753.png
Fig1: texの後にC-@を押すと…

20150312093759.png
Fig2: 長いシンボルが一発で補完!

20150312093819.png
Fig3: thの後にC-@を押すとidoで選択

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))

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

M-x package-install bbyac

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

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

設定 150312092945.bbyac.el(以下のコードと同一)

;;; このときidoが使うwindowの高さは大きくした方がいい
(setq ido-max-window-height 0.75)
;;; あいまいマッチは入れておこう
(setq ido-enable-flex-matching t)
;;; 本格的にidoを使いたい人は有効にしよう
;; (ido-mode 1)
(ido-vertical-mode 1)
(setq ido-vertical-define-keys 'C-n-and-C-p-only)
;;; 改行が含まれていない場合はidoで候補選択
(setq bbyac-max-chars 99999)
(defun bbyac--display-matches--use-ido (orig strlist)
  (cond ((null (cdr strlist))
         (car strlist))
        ((cl-notany #'bbyac--string-multiline-p strlist)
         (ido-completing-read "Bbyac: " strlist nil t))
        (t (apply orig strlist))))
(advice-add 'bbyac--display-matches :around 'bbyac--display-matches--use-ido)
(bbyac-global-mode 1)
(define-key bbyac-mode-map (kbd "C-@") 'bbyac-expand-symbols)
;;; this-is-a-very-long-variable-for-example
;; tex
;; th

実行方法

$ wget http://rubikitch.com/f/150312092945.bbyac.el
$ emacs -Q -f package-initialize -l 150312092945.bbyac.el

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


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