Как добавить комментарии в конфигурационный файл Exuberant Ctags?

Какой символ я могу использовать для размещения комментариев в файле Exuberant Ctags .ctags?

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

Но я не могу найти символ комментария, который принимает ctags-exuberant!
Я продолжаю получать предупреждение:

ctags: Warning: Ignoring non-option in /home/joey/.ctags

что лучше, чем ошибка, но все же немного раздражает.

Я пробовал # // /* ... */ и ; в качестве комментариев, но ctags пытается разобрать их все!

Вот пример файла с некоторыми комментариями, на которые будут жаловаться ctags:

# Add some more rules for Javascript
--langmap=javascript:+.jpp
--regex-javascript=/^[ \t]*var ([a-zA-Z_$][0-9a-zA-Z_$]*).*$/\1/v,variable/
--regex-javascript=/^[ \t]*this\.([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]*=.*$/\1/e,export/
--regex-javascript=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*):.*$/\1/p,property/
--regex-javascript=/^\<function\>[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)/\1/f,function/

# Define tags for the Coffeescript language
--langdef=coffee
--langmap=coffee:.coffee
--regex-coffee=/^class @?([a-zA-Z_$][0-9a-zA-Z_$]*)( extends [a-zA-Z_$][0-9a-zA-Z_$]*)?$/\1/c,class/
--regex-coffee=/^[ \t]*(@|this\.)([a-zA-Z_$][0-9a-zA-Z_$]*).*$/\2/e,export/
--regex-coffee=/^[ \t]*@?([a-zA-Z_$][0-9a-zA-Z_$]*):.*[-=]>.*$/\1/f,function/
--regex-coffee=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]+=.*[-=]>.*$/\1/f,function/
--regex-coffee=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]+=[^->\n]*$/\1/v,variable/
--regex-coffee=/^[ \t]*@?([a-zA-Z_$][0-9a-zA-Z_$]*):.*$/\1/p,property/

person joeytwiddle    schedule 10.06.2012    source источник


Ответы (4)


Как указывает @joeytwiddle, парсер не поддерживает комментарии, но есть обходной путь.

Пример .ctags файла:

--regex-C=/$x/x/x/e/ The ctags parser currently doesn't support comments
--regex-C=/$x/x/x/e/ This is a work-around which works with '/' characters
--regex-C=/$x/x/x/e/ http://stackoverflow.com/questions/10973224/how-to-add-comments-to-an-exuberant-ctags-config-file
--regex-C=/$x/x/x/e/ 
--regex-C=/$x/x/x/e/ You can add whatever comment text you want here.
person Tom Hale    schedule 12.08.2016

Вы не можете! Я просмотрел исходный код (спасибо apt-get source). Нет никаких проверок для игнорирования строк. Соответствующий код находится в parseFileOptions() в файле options.c.

Но иногда комментарии необходимы, поэтому в качестве обходного пути я помещаю комментарий в виде регулярного выражения таким образом, чтобы он вряд ли когда-либо соответствовал чему-либо.

--regex-coffee=/^(COMMENT: Disable next line when using prop tag)/\1/X,XXX/

^ способствует быстрому сбою совпадения, в то время как ( ) используется исключительно для визуального эффекта.

Ваш комментарий должен быть допустимым регулярным выражением, чтобы избежать предупреждений на stderr. (Это означает, что следует избегать неэкранированных /, и если вы используете какие-либо [ ] ( или ), они должны быть соединены в пары.) См. решение Тома, чтобы избежать этих ограничений.

person joeytwiddle    schedule 18.06.2012
comment
+1 за просмотр исходного кода. Однако хакерское решение довольно уродливо, я бы предпочел жить с предупреждениями. - person Niels Bom; 12.03.2013
comment
Можем ли мы предложить поддержку для комментариев в команде разработчиков? - person nowox; 22.04.2015
comment
Обратите внимание, это решение не работает, если между ( и ) есть /. Смотрите мой ответ для чего-то, что работает с этим и выглядит визуально аккуратнее. - person Tom Hale; 12.08.2016

Вы можете использовать '#' в начале комментария, если вы используете Universal-ctag(https://ctags.io ).

person Masatake YAMATO    schedule 01.07.2017

Учитывая, что комментарии не работают, как насчет файла .ctags.readme...

Для большинства вещей вам на самом деле не нужен комментарий, например. вам не нужен комментарий ниже.

# Define tags for the Coffeescript language
--langdef=coffee
--langmap=coffee:.coffee

Однако я вижу, что вы, возможно, захотите добавить комментарии, объясняющие некоторые умопомрачительные регулярные выражения, поэтому для каждой строки, которая абсолютно необходима, вы можете скопировать и вставить ее в файл .ctags.readme как файл уценки:

Forgive me father for I have regexed
It was purely because I wanted some lovely coffee properties
```
--regex-coffee=/^[ \t]*@?([a-zA-Z_$][0-9a-zA-Z_$]*):.*$/\1/p,property/
```

Синхронизация .ctags.readme и .ctags

У вас может быть блок в нижней части файла ctags, разделенный разрывом строки, а затем удалить этот последний блок.

Если в вашем файле .ctags есть только один разрыв строки, этот sed удалит все строки после разрыва строки.

Затем выполните поиск --regex строк, чтобы добавить строки из .ctags.readme в .ctags.

sed -i '/^\s*$/,$d' .ctags
grep "^--regex" .ctags.readme >> .ctags
person icc97    schedule 15.06.2017