2

Например, если я хочу найти \<data\> но хочу пропустить все записи, появляющиеся в многострочных блочных комментариях, например так:

/*
 * Don't match comments containing the term 'data'
 */

Я не могу просто использовать отрицательную внешность нулевой ширины \(\*.*\)\@<!\<data\> потому что комментарии к блоку не всегда начинаются с * в каждой строке.

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

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

output = "Sample data: '"+data+"' ...";

И только данные в середине там вне кавычек будут сопоставлены.

Кто-нибудь знает, возможно ли это?

РЕДАКТИРОВАТЬ: Поиск без комментариев, безусловно, возможно, по крайней мере. Я мог бы определить функцию search() и проверить выделенную группу изнутри, как указано кем-то в этой теме. Соответствующая часть:

используйте search() и затем проверьте, является ли группа подсветки синтаксиса комментарием. Если synIDattr(synIDtrans(synID(line("."), Col ("."), 1)), "name") равен Comment, вызовите search() еще раз.

Но я не думаю, что это оставит hlsearch выделением правильных терминов.

0