[ID CC-CC2021] Как выделить текст?

rezunoff

Участник
Топикстартер
Сообщения
69
Реакции
13
Как выделить текст, начиная со стиля параграфа где стоит курсор и до момента, когда опять начинается этот стиль?
2021-02-23_20-07-23.png
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
выделять все абзацы пока не дойдете до того же стиля что в первом. что именно вызывает затруднения?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
я вижу раздел, спасибо. что вызывает затруднения при написании скрипта?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

rezunoff

Участник
Топикстартер
Сообщения
69
Реакции
13
Вот готовая "рыба", но плавает медленно (касается большого, длинного текста). Как подкрутить хвост "рыбе", чтоб плавала быстрее???
Код:
currentParagraph = app.selection[0].paragraphs[0];
selectedParagraphStyle = currentParagraph.appliedParagraphStyle;
while (1){
app.select(currentParagraph, SelectionOptions.ADD_TO);
nextParagraph = currentParagraph.characters.nextItem(currentParagraph.characters.item(-1));
if (!nextParagraph.isValid || nextParagraph.appliedParagraphStyle == selectedParagraphStyle)
break;
currentParagraph = nextParagraph.paragraphs[0];
}
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Сначала все найти, потом одним махом выбрать
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Я так понимаю, предлагается для оптимизации вместо посимвольного выделения в цикле
app.select(currentParagraph, SelectionOptions.ADD_TO);
заменить на добавление currentParagraph в коллекцию, которую в конце цикла разом выделять
Вообще, не факт, что сильно ускорится, пробовать надо
 

afalbert

10 лет на форуме
Сообщения
120
Реакции
88
может быть можно поиском находить следующий параграф с нужным стилем, а потом уже выделять все что между. Но тоже не факт что ускорится
 
Последнее редактирование:

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
И коллекцию абзацев загнать в массив через everyItem().getElements().slice(0)
Тоже ускорит обход
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Я бы сформулировал вопрос по другому - а зачем 0 ?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
0 не обязателен, да. но на суть не влияет
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Скажите пожалуйста , зачем там slice в конце?
это интересный и неочевидный момент ) но как раз он все и ускоряет. после slice что-то рвется в объектной модели, и динамически обновляемые ссылки на объекты становятся статичными, индизайн не лезет при каждом обращении их обновлять.
 
  • Спасибо
Реакции: afalbert