6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Auto Complete でファイル名の入力が上手くいかない問題を解決する

Posted at

Auto Complete の ac-source-filename を有効にしている状態で Elisp を書いているとき,"~/" 以降の補完がきかないことが気になったので調べてみました.すると auto-completeでファイル名補完 にこう書いているのをみつけました.

オムニ補完の仕様上、ac-sourcesの中にファイル名らしき文字列を補完するソースがac-source-filenameより先に存在する場合、正しくファイル名補完が開始されないことがあります。M-: ac-soucesなどで順番をチェックして、ac-source-filenameが先頭に来るようにしておいてください。

Elisp で ac-sources を見てみると ac-source-filename が先頭にきていません.どうやら ac-common-setup の設定は ac-**-mode-setup よりも後ろにきてしまうようです.

ということで,以下のようにして解決しました.

(require 'auto-complete-config)

;;; パス入力用の情報源を追加
(defun ac-common-setup ()
  (add-to-list 'ac-sources 'ac-source-filename))

;;; ac-source-filename は ac-sources の先頭でないと "~/" が上手く補完できないため,
;;; ac-sources の後ろに mode-hook 用情報源を付け足すよう変更
(defun ac-emacs-lisp-mode-setup ()
  (setq ac-sources (append ac-sources '(ac-source-features ac-source-functions ac-source-yasnippet ac-source-variables ac-source-symbols))))

(defun ac-cc-mode-setup ()
  (setq ac-sources (append ac-sources '(ac-source-yasnippet ac-source-gtags))))

(defun ac-css-mode-setup ()
  (setq ac-sources (append ac-sources '(ac-source-css-property))))

;;; 設定した ac-source を適用する
(ac-config-default)

auto-complete-config のデフォルトの設定をコピーしてきて,各モードの ac 情報源が全て ac-sources の後ろに追加されるように,append の引数の順序を入れ替えました.

ac-source-filename 以外で情報源の順番がどのような影響を与えるかよくわかっていないのですが,とりあえず .el ファイルで "~/" の補完がきくようになったのでよしとします.

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?