artbear писал(а):
palytsh писал(а):
JohnyDeath
Честно говоря, хотелось бы сначала дождаться более удобного интерфейса к тексту модуля в снегопате. Пока у меня ощущение, что, используя лишь выделенный текст, это так просто не исправить.
ИМХО не должно быть сложно, существующий интерфейс это позволяет, особенно с учетом спец.класса от a13x
По сути проблемы - она решается просто, надо просто проверять, где находится курсор относительно комментария - левее или правее. Соответствующие исправления добавил, см. последние правки скрипта в репо.
По работе с текстом вообще. Возможность работать с текстом на изменение только через выделение неудобно только с одной стороны - со стороны программиста, но я постарался исправить это в библиотеке TextWindow.js. Предложенные там интерфейсы позволяют абстрагироваться в скрипте от того, как происходит изменение текста.
Единственное, что надо держать в голове, это то, что при массовых изменениях надо придерживаться следующего подхода:
1. Получить весь текст (или выделение), и сохранить его в переменной (например, используя "традиционный" на сегодня способ, сначала установив выделение, а затем вызвав TextWindow::GetSelectedText(), но рекомендую использовать объект Range(), он скрывает необходимость делать установку выделения вручную).
2. Выполнить все массовые изменения в этом тексте.
3. Установить измененный текст этой же области выделения (опять же либо вручную устанавливая выделение, либо используя TextWindow::Range().SetText()).
Т.е. не следует использовать работу с выделением в цикле. Вместо этого надо использовать описанный выше подход, и обрабатывать в цикле текст, сохраненный предварительно в переменную.
p.s.
Все это не в порядке рекламы TextWindow, а с целью убедить, что для имеющихся задач
текущих возможностей Снегопата по работе с текстом в пределах одного документа достаточно.