Skip to content

set tags でワイルドカードを設定しPHP のオムニ補完を実行すると QuickFix ウインドウが開く #211

@heavenshell

Description

@heavenshell

PHP でオムニ補完を実行すると補完のポップアップが実行されずに、QuickFix のウインドウが開きます。

再現手順

autocmd!
set nocompatible
syntax enable
filetype plugin indent on
set backspace=indent,eol,start
if has('path_extra')
  set autochdir
  set tags+=$HOME/.vim/tags/**3/tags;
endif

autocmd QuickfixCmdPost grep,grepadd,vimgrep if len(getqflist()) != 0 | copen | endif
autocmd FileType php setlocal omnifunc=phpcomplete#CompletePHP
  1. vim -u .vimrc_simple sample.php で Vim を起動
  2. 入力モードのまま でオムニ補完を実行
  3. QuickFix のウインドウが開く

再現環境

  • Scientific Linux 6.1 Vim7.3 (最新版ソースを vim.org からダウンロードしコンパイル)をターミナルから使用
  • MacVim Kaoriya Vim7.3(最新版のバイナリをダウンロードし使用)をターミナルから使用

Linux の Vim と MacVim では挙動が少し異なり、

  • Linux の Vim では エラーメッセージが表示後 QuickFix が開き for と表示され、オムニ補完のポップアップが QuickFix に表示される
  • MacVim は QuickFix に for と入力されており、ポップアップは開かない

Linux のエラーメッセージ

E315: ml_get: 無効なlnumです: 2
E315: ml_get: 無効なlnumです: 2
E315: ml_get: 無効なlnumです: 2
E322: 行番号が範囲外です: 1 超えています
E320: 行 2 がみつかりません
E315: ml_get: 無効なlnumです: 2

ctags の set tags+=$HOME/.vim/tags/**3/tags; の設定箇所が怪しいです。
tag ファイルは $HOME/.vim/tags/py/tags という Python 用の ctags ファイルがあります。

!_TAG_FILE_FORMAT>2>/extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED>1>/0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR>-Darren Hiebert>-/dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME>-Exuberant Ctags>//
!_TAG_PROGRAM_URL>http://ctags.sourceforge.net>-/official site/
!_TAG_PROGRAM_VERSION>5.8>//
add>sample.py>/^def add(x, y):$/;">-f
hello>sample.py>/^def hello(x):$/;">f

set tags+=$HOME/.vim/tags/**3/tags;set tags+=$HOME/.vim/tags/py/tags; とすると発生しません。
また
autocmd QuickfixCmdPost grep,grepadd,vimgrep if len(getqflist()) != 0 | copen | endif から vimgrep を削ると発生しません。

Linux Vim
Vim(Linux)
MacVim
MacVim

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions