LINUX.ORG.RU

Omnicppcomplete


0

2

Как заставить сабж выполнять автодополнение для классов стандартной библиотеки C++ и Boost?

Как заставить ctags рекурсивно сканировать все файлы, которые подключены при помощи #include?

Deleted

В ридми написано. Но я взял архив с уже подготовленными хидерами и натравил на него ctags.

andreyu ★★★★★
()
Ответ на: комментарий от kamre

> И как, после «натравливания» ctags на stl и boost completion работает?

С stl работает, а для boost я я не создавал таблицу тэгов, т.к. не очень люблю его.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

С stl работает

А можно скриншот увидеть как оно работает для такого тривиального случая:

#include <string>
#include <map>

void f()
{
  std::map<int, std::string> m;
  m[0].<completion>
}

?

kamre ★★★
()
Ответ на: комментарий от pevzi

> А какой редактор этот случай осиливает?

Полагаю осилит любой, предназначенный для написания кода.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Неплохо, раньше это не работало.

А как вообще с инстанцированием шаблонов, ctags или omnicpp научились это делать?

Такой случай тоже обрабатывается нормально:

#include <memory>
#include <vector>

void f()
{
    using namespace std;
    auto_ptr<vector<int> > ptr(new vector<int>());
    ptr-> <completion>
}

?

P.S. ну шрифт в редакторе...

kamre ★★★
()
Ответ на: комментарий от kamre

> Такой случай тоже обрабатывается нормально:

http://img220.imageshack.us/img220/7748/vim.png

Такого случая быть не должно - auto_ptr + vector - это большая проблема.

P.S. ну шрифт в редакторе...


Droid Sans Mono 9. Не знаю, похоже, что gvim его так криво рендерит. Символ m в некоторых случаях криво рендерится. Да и тормозной gvim до ужаса. Мне больше нравится vim запущенный в urxvt.
Только не все комбинации клавиш у меня работают (к примеру забинденный Ctrl+Tab и Ctrl+Shift+Tab не работают в vim).

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

> http://img220.imageshack.us/img220/7748/vim.png

Не корректно сработал completion, т.к. operator-> перегружен у std::auto_ptr и это нужно учитывать. На самом деле должны быть функции из класса std::vector.

Т.е. получается, что пока completion в vim не умеет работать с «умными» указателями?

Такого случая быть не должно - auto_ptr + vector - это большая проблема.

Это просто пример кода, когда нужно разрешать перегрузку для operator->. И даже в этом коде проблемы нет, т.к. внутри auto_ptr можно хранить что угодно.

kamre ★★★
()
Ответ на: комментарий от kamre

> Не корректно сработал completion, т.к. operator-> перегружен у std::auto_ptr и это нужно учитывать. На самом деле должны быть функции из класса std::vector.

Угу, есть такое дело.

И даже в этом коде проблемы нет, т.к. внутри auto_ptr можно хранить что угодно.


Да, попутал с std::vector<std::auto_ptr<> >

andreyu ★★★★★
()
Ответ на: комментарий от pevzi

> А какой редактор этот случай осиливает?

Тот редактор, который умеет инстанцировать шаблоны и разрешать перегруженные операторы хотя бы в таком простом случае.

kamre ★★★
()
Ответ на: комментарий от pevzi

Сам пользуюсь в основном Eclipse+CDT, и иногда Emacs+Xrefactory в случаях, когда удобно запользовать макросы Emacs для рефакторинга.

Вроде NetBeans для C++ неплох, но он тормознее чем CDT и внешний вид у него не очень хорош под линуксом.

kamre ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.