Latest post of the previous page:
Правильно ли я понимаю: чтобы перейти на закладку созданную последней, т.е. "текущую", Next/Prev не помогут, надо будет использовать либо Back, либо Goto(Stat(1))?Tim Sobolev wrote:Значится так.
Latest post of the previous page:
Правильно ли я понимаю: чтобы перейти на закладку созданную последней, т.е. "текущую", Next/Prev не помогут, надо будет использовать либо Back, либо Goto(Stat(1))?Tim Sobolev wrote:Значится так.
даKildor wrote:А BM.push BM.next — выдаст последнюю закладку, не удаляя её, так?
да, но можно и без BM.nextKildor wrote:BM.push BM.next BM.pop — всё согласно исходному порядку?
даKildor wrote:«BM.push BM.push» — даст две закладки в одной позиции, так?
На позицию редактора из последней закладки (если она текущая) можно перейти через BM.next, BM.Goto(BM.Stat(0)) и BM.Goto(BM.Stat(1))John Doe wrote:Правильно ли я понимаю: чтобы перейти на закладку созданную последней, т.е. "текущую", Next/Prev не помогут, надо будет использовать либо Back, либо Goto(Stat(1))?
А если она текущая, но не последняя?Tim Sobolev wrote:На позицию редактора из последней закладки (если она текущая) можно перейти через BM.next, BM.Goto(BM.Stat(0)) и BM.Goto(BM.Stat(1))John Doe wrote:Правильно ли я понимаю: чтобы перейти на закладку созданную последней, т.е. "текущую", Next/Prev не помогут, надо будет использовать либо Back, либо Goto(Stat(1))?
Если она не текущая, то только BM.next (повторяя до упора) и BM.Goto(BM.Stat(0)) (непосредственно).
Имхо лучше не становится: back/next/prev это жутковато.Tim Sobolev wrote:PS. Если всё понятно, буду крутить.
По сути при bm.add вначале обрезается хвост, а потом делается bm.push.SUSim wrote:... хотя я не понимаю зачем пользоваться bm.push если есть bm.add
Не надо несколько подходов там, где можно обойтись одним. Уже и закладки переименовали из стековых в динамические, зачем этот pop/push...SUSim wrote:если модель поддерживает несколько подходов это не требует от неё(модели) поддерживать смешанный подход! зачем мешать все в кучу???
А также BM.goto(BM.stat(1)) или BM.Goto(0) или BM.Goto -- танцы вокруг текущей. Т.e. по BM.push сохранили, что-то делаем в редакторе, прыгаем на текущую по BM.next или BM.Goto (более ресурсоёмко, но более очевидно), опять что-то делаем и т.д., и т.д., потом по BM.pop переходим в позицию закладки и удаляем её. Следует только помнить, что при удалении текста, на который поставлена закладка, сама закладка удалится (если ничего не путаю).Tim Sobolev wrote:Да, понял, если прыгать в редакторе вокруг последней закладки, то BM.next или BM.goto(BM.stat(0)), второй вариант более ресурсоёмкийKildor wrote:>> BM.push BM.next BM.pop — всё согласно исходному порядку?
> да, но можно и без BM.next
Тут ещё имелось в виду, что через next можно получить запушенную закладку, не удаляя её, так? Иногда требуются приседания вокруг одной закладки, а постоянно писать pop push не сильно красиво.
Если перейти к текущей, то только BM.Goto(BM.Stat(1)) или BM.Goto(0) или BM.Goto.John Doe wrote:А если она текущая, но не последняя?
Если нужно перейти с текущей на последнюю, то так жеTim Sobolev wrote:BM.next (повторяя до упора) и BM.Goto(BM.Stat(0)) (непосредственно).
Именно чтобы не нарушая состояние редактора и закладк сохранять и восстанавливать нужную позицию в редакторе. По другому это не получится никак.John Doe wrote:Не надо несколько подходов там, где можно обойтись одним. Уже и закладки переименовали из стековых в динамические, зачем этот pop/push...SUSim wrote:если модель поддерживает несколько подходов это не требует от неё(модели) поддерживать смешанный подход! зачем мешать все в кучу???
Т.е?Tim Sobolev wrote:Именно чтобы не нарушая состояние редактора и закладк сохранять и восстанавливать нужную позицию в редакторе. По другому это не получится никак.
Нет. Goto(Stat(0)) произведёт изменение текущей позиции в редакторе на позицию из последней закладки, а нам надо сохранить текущую позицию редактора.John Doe wrote:Т.е?Tim Sobolev wrote:Именно чтобы не нарушая состояние редактора и закладок сохранять и восстанавливать нужную позицию в редакторе. По другому это не получится никак.
Push прекрасно можно заменить на Goto(Stat(0)) + Add, а Pop на Goto(Stat(0)) + Del.
(И громоздкость конструкции можно ещё сильно уменьшить.)
а) ещё не знаю, мне кажется излишеством б) если общественность поддержит, обращайтесь к Валентину .John Doe wrote:И что по поводу прозвучавших выше предложений а) по возвращаемым значениям б) bm.curpos/bm.itemcount?
Верно...Tim Sobolev wrote:Нет. Goto(Stat(0)) произведёт изменение текущей позиции в редакторе на позицию из последней закладки, а нам надо сохранить текущую позицию редактора
Code: Select all
$rep(bm.stat(0)-bm.stat(1)) bm.del(bm.stat(0)) $end
$bm.add()
Меня интересуют практические, а не теоретические примеры. Текущее поведение BM.add обусловленно непосредственно практическим его применением для навигации. Практического применения вышеуказанных примеров я не вижу.John Doe wrote:Например, я лично хотел бы чтобы нумерация закладок (и соответственно последовательность перехода по ним) соответствовала реальному положению закладок в тексте.
Для макроса эта задача проста, однако без возможности вставки ничего не выйдет.
Другой пример: я хочу изменить сохранённую позицию (в уже существующей закладке).
Это можно было бы сделать удалив и заново создав, но к сожалению нумерация собьётся, а вот если бы была возможность вставки...
Задания индекса обусловлено необходимостью иметь возможность удалять начальные и конечные закладки.John Doe wrote:Да и вообще сама возможность удалять из середины (bm.del(Idx)) вполне логично предполагает возможность вставлять.
John Doe wrote:Вообще a и b это независимые предложения, и ни в одном из них я не предполагаю никаких вставок.
Поэтому речь как раз об упрощении, которое позволит убрать излишние функции.