2010-06-03 10 views
5

jestem edycji prosty plik PHP z klasy, która ma kilka metod, jeśli $bar jest instancją tej klasy i wpisujęvim: ograniczenie metody podane przez omnicomplete do tych obecnych w ctags

$bar->ctrlxctrlo

dostaję okienko z wielu metod (wbudowane jedynek) w uzupełnieniu do tych z mojej klasy i występuje na liście ctags. Jak można uniknąć pokazywania wszystkich tych zewnętrznych metod i po prostu zachować te zdefiniowane w mojej klasie?

+0

To samo pytanie - bez rozwiązania:/http://stackoverflow.com/questions/1224838/vim-php-omni-completion – nuqqsa

Odpowiedz

1

Jestem pewien, że widziałem dokumentację vim (:help ft-c-omni) w ten sposób: "".

Podczas korzystania CTRL-X CTRL-O po nazwie bez lub "->" zostało zakończone bezpośrednio z pliku znaczników. Działa to dla dowolnego identyfikatora, a także dla nazw funkcji . Jeśli chcesz uzupełnić nazwę zmiennej lokalnej, która nie pojawia się w pliku znaczników jako , użyj zamiast niej CTRL-P.

Podczas korzystania z CTRL-X CTRL-O po czymś, co "." lub "->" Vim spróbuje rozpoznać typ zmiennej i dowiedzieć się, jakie jej członkowie mają. Oznacza to, że na liście znajdą się tylko członkowie ważni dla zmiennej.

Po wprowadzeniu nazwy członka, CTRL-X CTRL-O doda "." lub "->" dla typów kompozytowych.

Jeśli poprawnie odczytam, wbudowana funkcja w najlepszym wypadku pozwoli tylko na użycie CTRL-P i dopasowanie nazw zmiennych lokalnych, tym samym pomijając całkowicie plik TAGS.

To, czego naprawdę chcesz, to plik TAGS, który jest specyficzny dla jednostki tłumaczeniowej, nad którą aktualnie pracujesz (plik nagłówkowy/cpp). Oto kroki, które wykonywałbym, próbując rozwiązać ten problem:

  1. Utwórz skrypt (lub jeszcze lepiej, włącz do pliku Makefile) automatyczne tworzenie plików TAG specyficznych dla jednostki tłumaczeniowej.
  2. Utwórz komendę w vim, która usuwa istniejące pliki TAGS, ponownie ładuje plik TAGS specyficzny dla pliku i przeprowadza regularne omni-complete w postaci CTRL-X CTRL-O. W razie potrzeby powróć do oryginalnego TAGU.

Wydaje mi się, że chciałbyś móc wywołać skrypt dla # 1 bezpośrednio z VIM, ponieważ często zmieniasz bieżącą jednostkę tłumaczeniową podczas kodowania.

Mam nadzieję, że wszystko zaczęło się we właściwym kierunku, a ja z chęcią zobaczę/pomogę w implementacji =).

+0

Nie, piszę kod PHP, a nie C++. Dokumentacja stwierdza "po" -> "kompletna tylko funkcja i nazwy zmiennych specyficzne dla danej klasy", ale to nie jest zachowanie, które otrzymuję. –

+0

Masz rację, mój błąd. Jeśli spełniasz wymagania (Exuberant ctags 5.5.4/nowszy) i wypróbowałeś sztuczkę @var; to bardzo dziwny problem.Wygląda to tak, jakby znaczniki były domyślne dla zasięgu globalnego, gdy nie mogą znaleźć niczego bardziej konkretnego (klasa zmiennych). – reshen

Powiązane problemy