перемещение строк вверх-вниз с учетом синтаксиса
Posted: 22.11.2025 14:04
Добрый день,
давно не был на этом форуме. Приятно, что продукт развивается!
Возник такой вопрос:
как сделать перемещение строк вверх-вниз (по умолчанию это делают клавиши Alt-Up, Alt-Down) с учетом синтаксиса языка (вообще или Python / или любой другой основанной на отступах разметки).
Примерно, как это делают продукты IntelliJ.
В каком направлении копать? Подозреваю, что TreeHelper и плагины подсветки синтаксиса здесь вряд ли помогут.
Нужен отдельный плагин? Для тех, кто хорошо знает кодовую базу - насколько трудозатратно и фантастичеси это выглядит, если сам возьмусь такое написать?
Во вложении сделал анимированный gif-файл демонстрирующий желаемое поведение. Каждый кадр - это нажатие Alt-Up. Кнопка табуляции не должна быть задействована.
Первая поверхностная идея - при вызове команды перемещения вызывается какой-то пост-процессор, который, знает номер нового положения строки. На основе этого номера вычисляет глубину блока, и соответствующим образом обрезает или добавляет отступ в начало вставляемой строки.
давно не был на этом форуме. Приятно, что продукт развивается!
Возник такой вопрос:
как сделать перемещение строк вверх-вниз (по умолчанию это делают клавиши Alt-Up, Alt-Down) с учетом синтаксиса языка (вообще или Python / или любой другой основанной на отступах разметки).
Примерно, как это делают продукты IntelliJ.
В каком направлении копать? Подозреваю, что TreeHelper и плагины подсветки синтаксиса здесь вряд ли помогут.
Нужен отдельный плагин? Для тех, кто хорошо знает кодовую базу - насколько трудозатратно и фантастичеси это выглядит, если сам возьмусь такое написать?
Во вложении сделал анимированный gif-файл демонстрирующий желаемое поведение. Каждый кадр - это нажатие Alt-Up. Кнопка табуляции не должна быть задействована.
Первая поверхностная идея - при вызове команды перемещения вызывается какой-то пост-процессор, который, знает номер нового положения строки. На основе этого номера вычисляет глубину блока, и соответствующим образом обрезает или добавляет отступ в начало вставляемой строки.