ac-dabbrev.el ですげぇこと思いついた。
はい,オチからいいます。
全然すごいこと思いついてません。
dabbrev スキャン対象バッファに dired-mode バッファを入れてみる。
なぜ?
ファイル名の補完をして欲しかったから。
java の場合はファイル名=クラス名みたいなところあるからというのと,
初めてクラス名書く時,あったら便利かなぁと。
jde-gen-class 系使えば,問題ないですね。わかります。
IDE 使えばもっと問題ないですね。わかります。
ごむぇん,にいちゃん。
(defun my-dabbrev-select-jde-mode-buffers () "Return a list of buffers opened with jde-mode or java-mode." (let (l (bl (buffer-list))) (dolist (elt bl) (save-excursion (set-buffer elt) ;; dired-mode を足してみた。 (when (memq major-mode '(java-mode jde-mode dired-mode)) (add-to-list 'l elt)))) l)) (defun my-jde-mode-hook-func () ;; 長いので省略 (set (make-local-variable 'dabbrev-check-all-buffers) nil) (set (make-local-variable 'dabbrev-select-buffers-function) 'my-dabbrev-select-jde-mode-buffers))
ac-dabbrev.el でスキャン結果を保存しておくのはどうだろうか?
毎回毎回対象バッファを眺めるのは,多くの場合,同じ事の繰り返しになるので,
エコ的に考えると大変なのでは?
というか,minibuffer に Scanning foo.el... みたいなんがパラパラ漫画みたいにでるのが,
うっとおしいだけだったりする。
さて。
スキャン対象バッファの集合{b1, b2, b3}があって,今,b2 を編集中だとする。
b2 で,補完一発目の際に,集合のすべてのバッファを対象にをスキャンして結果を保持。
b2 で,2度目以降,補完する際は,b2 だけをスキャンすればいいんじゃね?
スキャンした結果は更新しておく。
b1 に移って,一発目の補完については,キャッシュから引っ張ってくればよい。
あとは,同じ。
オレにしては賢いんじゃね?
あぁ,でも,すでに,dabbrev--find-expansion とかで実装されてそうですね。わかります。