Подтвердить что ты не робот

Как добавить комментарии в конфигурационный файл 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/
4b9b3361

Ответ 1

Как отмечает @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.

Ответ 2

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

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

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

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

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

Ответ 3

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

Ответ 4

Учитывая, что комментарии не работают, как насчет файла .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, разделенный разрыв строки, а затем удалить этот последний блок.

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

sed -i '/^\s*$/,$d' .ctags

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

grep --regex .ctags.readme >> .ctags