LINUX.ORG.RU

emacs+etags


0

0

Такой вот вопрос. Изучаю основы использования такой вот связки. Создал TAGS file для всех *.c, *.h etags *.c *.h. Далее использую complete-symbol, complete-tag. Заметили одну неприятную особенность. Не всегда дополняются имена переменных и не всегда правильно. Вот пример. Если объявить две переменные таким образом

int a_variable;

int b_variable;

(т.е. в разных строчках), то дополнение сработает.

если же так: int a_variable, b_variable;

то ругается на can't find symbol. Это фича такая или я не так что-то делаю.

Re: emacs+etags

Да, и как скроллить по вариантам автокомплтиа, без того, чтобы переключаться в минибуффер и выбирать вариант там?

fukazzz ()
Ответ на: Re: emacs+etags от fukazzz

Re: emacs+etags

Не знаю, может ли быть проблема в этом, строю TAGS так [code] (defun create-tags (dir-name) "Create tags file." (interactive "DDirectory: ") (eshell-command (format "find %s -type f -name \"*.[ch]\" | etags -" dir-name))) [/code]

fukazzz ()
Ответ на: Re: emacs+etags от fukazzz

Re: emacs+etags

(defun create-tags (dir-name)
     "Create tags file."
     (interactive "DDirectory: ")
     (eshell-command 
      (format "find %s -type f -name \"*.[ch]\" | etags -" dir-name)))

fukazzz ()
Ответ на: Re: emacs+etags от fukazzz

Re: emacs+etags

Вот,продолжаю эксперемент. Написал простейший кусочек, для тестов

#include <stdio.h>

int e_variable, f_variable;

int main(int argc, char *argv[])
{
  int a_variable;
  int b_variable;
  int c_variable, d_variable;

 return 0;
}

int foo(void)
{
  return 0;
}

Сделал etags *.c.

Если я перед return 0; в main() пишу a_, затем A-x complete-tag или complete_symbol то выдает - "cant find completion"

Может кто попробует тоже самое у себя и отпишет результат? что все-таки я делаю не так?

fukazzz ()
Ответ на: Re: emacs+etags от fukazzz

Re: emacs+etags

Так, так. Вроде разобрался. etags не воспринимает локальные имена, никак. Только глобальные :-(

fukazzz ()
Ответ на: Re: emacs+etags от fukazzz

Re: emacs+etags

>Так, так. Вроде разобрался. etags не воспринимает локальные имена, никак. Только глобальные :-(

А я вот понять не могу, зачем нужны локальные имена втеги добавлять? Если ты в функции находишься, то они и так рядом. А в другом случае я просто не вижу им применения. Или я что-то упускаю из вида?

Zubok ★★★★★ ()
Ответ на: Re: emacs+etags от ott

Re: emacs+etags

Хмм... попробовал gnu global. пока никак не могу разобраться как там делать автокомплит. во всех туториалах пишут - юзать gtags-make-complete-list. Но оно выдает такое gtags-make-complete-list: Deprecated. You need not call this command any longer. Как добиться autocomplete?

fukazzz ()
Ответ на: Re: emacs+etags от Zubok

Re: emacs+etags

Zubok

Да я поразмыслил, и понял, что разрабы etags тоже так думают, может они и правы. Функции не должны быть настолько большими, чтобы в них можно было потеряться.

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