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 ファイルで "~/" の補完がきくようになったのでよしとします.