2014-06-13 3 views
3

Я пытаюсь добавить .volt расширения на Ctags карты языка, но держать игнорируя .volt файла. Это содержание моего .ctags файла:Добавление нового Ланга в Ctags не работает

--recurse=yes 
--tag-relative=yes 
--exclude=*.git* 
--exclude=.DS_Store 

--langmap=html:+.volt 

Когда я Ctags --list-карта Я вижу .volt файлы включаются в HTML:

HTML  *.htm *.html *.volt 

Но еще, когда я запускаю ctags, он полностью игнорирует файлы .volt. Что я здесь делаю неправильно?

ответ

2

Причины неожиданного поведения, скорее всего:

  1. Вы в настоящее время не используется последняя версия 5.8 буйный Ctags, но версия 5.6 перед тем.
  2. Ваш .ctags файл имеет --langmap=html:+.volt в конце файла без прерывания строки.

Читайте полный рассказ ниже, почему я думаю, что эти 2 причины приводят к неожиданному поведению Ctags на вашем компьютере.


Я посмотрел на вашей проблеме на Windows, сначала с помощью старой версии 5.5.4 из Exuberant Ctags установлен с текстовым редактором UltraEdit, а затем и с версией 5.8 скачанной непосредственно с Exuberant Ctags страницы проекта.

Я создал копию одного из моих проектов HTML только с 1 * .html файлом в родительском каталоге тестового проекта, 3 * .html-файлами в подкаталоге и еще двумя * .html-файлами также в подкаталоге с файлом расширение было изменено с html на volt на оба файла, которые были только копиями 2 из 3 * .html файлов в этом подкаталоге.

Далее я создал в родительском каталоге проекта файл ctags.conf и скопировал несколько строк, которые вы отправили в этот файл. Кроме того, я вставил сверху строку с --verbose, так как это полезно для поиска таких проблем.

И последнее, что я скопировал ctags.exe (первый v5.5.4, позже v5.8) также в каталог тестового проекта, чтобы упростить его запуск из командной строки.

Я открыл окно командной строки в каталоге тестового проекта и выполняется

ctags.exe -f test.tag --options=ctags.conf 

я мог видеть подробный вывод, что были открыты оба * .volt файлы для обработки и созданного test.tag содержали также все теги из 2 * .volt файлы, те же теги, что и файлы 2 * .html, с которых ранее были скопированы файлы * .volt.

И что может быть проблемой?

Я не только знаком с HTML. Моя основная работа - программирование на C/C++.Поэтому я знаю о часто ошибочной ошибке в файлах исходного кода C при чтении в текстовых файлах: неправильная обработка текстовых файлов без завершения строки в последней строке файла.

И я знаю, что некоторые текстовые редакторы, такие как gedit на Linux, позиционируют каретку Ctrl + End в начале строки под последней строкой в ​​файле, даже если последняя строка файла не имеет завершения строки. Каретка должна быть в этом случае помещена текстовым редактором в конце строки на последней строке вместо начала на следующей строке за пределами реального конца файла. Это с моей точки зрения неправильное поведение позволяет пользователю текстового редактора думать, что текстовый файл имеет завершение строки также в последней строке файла, даже если это неверно.

Поэтому я думал, что вы добавили --langmap=html:+.volt, возможно, в конец файла без завершения строки, а ctags.exe не оценивает строку в этом случае из-за неделанного анализа текстового файла в исходном коде. Поэтому я снял окончание строки в ctags.conf от последней строки, содержащей теперь только --langmap=html:+.volt

я выполнил то же командную строку, как и раньше, и AHA оба * .volt файлов игнорируются из-за unknown language.

Это было время, когда я скачал версию 5.8 из Ctags для Windows и скопировал ее в каталог тестового проекта, заменив исполняемый файл версии 5.5.4.

Я выполнил командную строку снова с измененным ctags.conf. Оба файла * .volt обрабатывались . Ctags и test.tag снова содержали теги из обоих файлов * .volt.

При добавлении к последней строке файла ctags.conf снова завершение строки и выполнение командной строки еще раз не привели к другому результату. Таким образом, эта ошибка с игнорированием последней строки файла опций, если в конце файла нет конца строки, установленного в версии 5.8 из Ctags.

Я искал в Change Notes из Exuberant Ctags для last и нашел в изменениях отмечает блок для Ctags-5,6 (MON 29 мая 2006 года)

  • Исправлена ​​проблема чтения последней строки списка файлов (-L) без окончательной новой строки.

Это подтверждение того, что я думал и мог видеть. И, конечно, проблема существует не только на чтение файла список, но и при чтении других текстовых файлов, таких как файл опций, или C и Java-файлы в качестве следующей строки в примечаниях изменения сообщает

  • Fixed бесконечного цикла, может возникать в файлах без окончательной новой строки [C, Java].
Смежные вопросы