• Как разбить текст на строки в Python?

    Как-то при этом можно сохранить в строках символ возврата каретки?
  • Goto symbol in project в Sublime Text?

    Саша Черных, не подскажете, здесь:
    <string>s/^/ID: /</string>
    Символ ^ что означает? Никак не могу настроить этот goto symbol. Вообще вылетает при поиске по проекту. При поиске добавляет в список строки с << (видимо из другого определения tmPreferences подтягивает), а нужные мне не добавляет.
  • Нужна регулярка с альтернативой между началом строки и неким символом. Можно ли написать такую?

    AleksVersus
    @AleksVersus Автор вопроса
    vreitech, спасибо. Действительно регулярка работает. Моя ошибка была в другом.
  • Нужна регулярка с альтернативой между началом строки и неким символом. Можно ли написать такую?

    AleksVersus
    @AleksVersus Автор вопроса
    Видимо не стоит ничего писать, когда смертельно спать хочешь. Либо я очень туп.

    Примеры синтаксиса и контекста добавлю в шапку, но в принципе я нашёл выход из ситуации.

    Экранирую фигурные скобки всегда. Лучше проэкранировать лишний раз, чем забыть проэкранировать в нужном месте.
  • Как правильно реализовать рекурсивную подсветку синтаксиса в Sublime Text3?

    AleksVersus
    @AleksVersus Автор вопроса
    Чего я действительно не понимаю, это как работает подсветка со стеками.

    Вот например, написан у меня контекст main:
    ```yaml
    main:
  • Как правильно реализовать рекурсивную подсветку синтаксиса в Sublime Text3?

    AleksVersus
    @AleksVersus Автор вопроса
    Так, прояснилось ещё немного. Дело не в lookbehind и lookahead, так как некоторые match, содержащие их, прекрасно работают. Возможно дело в ключе \K, благодаря которому удалось реализовать lookbehind. Возможно часть регулярки до ключа захватывает основной код, и этот код уже не сопоставляется с таким же match, так как уже был им разобран. Поэтому встроенное подвыражение не разбирается рекурсивно теми же match. Но это мне кажется слишком сложным.
  • Как правильно реализовать рекурсивную подсветку синтаксиса в Sublime Text3?

    AleksVersus
    @AleksVersus Автор вопроса
    Кое-что начинает проясняться. Для рекурсивной подсветки работают только правила, которые не содержат конструкций с lookbehind и lookahead. Например, контекст operacion сейчас имеет вот такой вид:
    operacion:
        # ошибка записи операторов операций без правого операнда
        - match: ({{left_operand}}\s*?)\K(\!|\+|-|\/|\*)(?!\s*?{{right_operand}})
          scope: invalid.illegal.expected-mapping-key.qsp avs.error avs.wrongoperator1
        # ошибка записи операторов больше-равно и меньше-равно без правого операнда
        - match: ({{left_operand}}\s*?)\K(<=|>=)(?!\s*?{{right_operand}})
          scope: invalid.illegal.expected-mapping-key.qsp avs.error avs.wrongoperator2
        # ошибка записи операторов больше-равно и меньше-равно без левого операнда или отдельной строкой
        - match: (^\s*?|\&\s*?|\(\s*?|\{\s*?|\[\s*?)\K(<=|>=)(?=\s*?{{right_operand}}*)
          scope: invalid.illegal.expected-mapping-key.qsp avs.error avs.wrongoperator3
        # подсветка правильно записанных операторов больше-равно и меньше-равно
        - match: (<=|>=) # допустимые в QSP => и =< в данной подсветке не поддерживаются
          scope: support.function.qsp avs.operacion1
        # ошибка записи операторов > < =  без правого операнда
        - match: ({{left_operand}}\s*?)\K(<|>|=)(?!\s*?{{right_operand}})
          scope: invalid.illegal.expected-mapping-key.qsp avs.error avs.wrongoperator5
        # ошибка записи операторов больше-равно и меньше-равно без левого операнда или отдельной строкой
        - match: (^\s*?|\&\s*?|\(\s*?|\{\s*?|\[\s*?)\K(<|>|=)(?=\s*?{{right_operand}}*)
          scope: invalid.illegal.expected-mapping-key.qsp avs.error avs.wrongoperator6
        # подсветка правильно записанных операторов > < =
        - match: (<|>|=)
          scope: support.function.qsp avs.operacion5 
        # подсветка всех операторов для операций, в т.ч. скобок и прочего
        - match: '(?i:(!|\:|\;|\[|\]|\(|\)|\&|\+|\/|\*|=|-|(>|<)=?|=?(>|<)))'
          scope: support.function.qsp avs.operacion9

    Все match работают для подсветки основного кода, но когда дело касается рекурсивной подсветки, работают только match для которых определены scope: avs.operacion5 и avs.operacion9 (ещё avs.operacion1). Но почему так происходит, мне не понятно, ведь основной код тоже как бы не основной, а является внедряемой подсветкой по схеме push/include.