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