Команда ctags не повторяет, говоря «это не обычный файл» - PullRequest
32 голосов
/ 03 июня 2010

Когда я запускаю ctags -R *, я получаю сообщение об ошибке, в котором говорится, что все каталоги не являются обычными файлами, и он пропускает их вместо рекурсивного создания тегов для них.

ctags: skipping arpa: it is not a regular file.
ctags: skipping asm: it is not a regular file.
ctags: skipping asm-generic: it is not a regular file.
ctags: skipping bits: it is not a regular file.
ctags: skipping blkid: it is not a regular file.
ctags: skipping boost: it is not a regular file.

В чем проблема?

Ответы [ 2 ]

65 голосов
/ 03 июня 2010

Аналогично , и , , проблема в том, что вы не используете Exuberant Ctags, вы используете GNU Emacs etags, который также предоставляет исполняемый файл ctags , Запустите ctags --version, и вы увидите что-то вроде этого:

ctags (GNU Emacs 23.1)
Copyright (C) 2009 Free Software Foundation, Inc.
This program is distributed under the terms in ETAGS.README

И если вы заглянете на страницу руководства, вы увидите, что -R фактически эквивалентно --no-regex. На самом деле, на странице руководства даже не упоминается рекурсия в качестве опции.

   -R, --no-regex
          Don't  do  any more regexp matching on the following files.  May
          be freely intermixed with filenames and the --regex option.

Возможно, вы могли бы сгенерировать теги рекурсивно, используя магию оболочки, но вы можете столкнуться с проблемами в будущем, если вы ожидаете Exuberant Ctags. Поэтому, вероятно, лучшее решение - установить нужные вам ctags:

sudo apt-get install exuberant-ctags

Exuberant Ctags также можно установить из источника:

http://ctags.sourceforge.net/
8 голосов
/ 12 июля 2012

Это происходит, если у вас установлены elvis-tools. удалите их чем-то вроде

sudo apt-get remove elvis-tools 

и затем установите exuberant-ctags с помощью

sudo apt-get install exuberant-ctags
...