Я не знаю собственного способа сделать это, но вы могли бы легко обернуть его в функцию. Исходя из вашего комментария о том, что вы, возможно, захотите применить это к другим функциям, он будет масштабируемым, поскольку вы сможете сохранить шаблон - цикл внутри функции - на месте и изменить логику оценки в соответствии с вашими будущими потребностями. [112 ]
Он также применяется с коротким замыканием, в том случае, когда он находит положительное значение, он выходит без оценки всего остального без необходимости.
CREATE OR REPLACE FUNCTION any_position(search_text text, variadic text_values text[])
RETURNS integer AS
$BODY$
declare
element text;
pos integer;
begin
foreach element in array text_values
loop
pos := position (search_text in element);
if pos > 0 then
return pos;
end if;
end loop;
return 0;
end;
$BODY$
LANGUAGE plpgsql;
Пример вызова:
select any_position ('x', 'Five', 'Six', 'Seven')
Для Вашего XML с примером Python необходимо было бы сделать что-то вроде этого:
runtime! syntax/xml.vim
unlet b:current_syntax
syntax include @Python syntax/python.vim
syntax region pythonCode start=+<Python>+ keepend end=+/</Python>+ contains=@Python
Эти строки будут включать синтаксис XML и синтаксис Python и указывание региона Python, где VIM будет использовать синтаксис Python вместо синтаксиса XML...
, Конечно, все это хорошо документируется в VIM. См. : он: syn-включайте в то, как включать файлы синтаксиса.
Этот документ описывает, как записать Вашу собственную подсветку синтаксиса. Необходимо, вероятно, смочь выяснить, как подсветка синтаксиса HTML работает с JavaScript с этим как ссылка.