Работа со стековыми закладками в редакторе (BM.Add и др.)

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by John Doe »

Latest post of the previous page:

Ну зачем же так грубо. Макроязык он вроде как для людей придуман.
Давайте обсудим конструктивно.
Я недавно довольно скрупулёзно поработал над разделом макросов, пытаясь максимально упростить описания и устранить неоднозначности.
Раздел закладок это как раз то место где из описания никому ни черта не ясно. Слова знакомые, но поведение (по меньшей мере) непривычное.

Да, из четырёх страниц обсуждения уже примерно понятно как можно работать с закладками, и я даже прикинул как это описать в Энциклопедии. Получается довольно монструозно.

Моя гипотеза заключается в том, что не в описании проблема, а в том, что логика закладок слишком заточена под очень частный случай применения. (И даже на примере ваших макросов, с трудом укладывается в голове).
У меня есть вполне конструктивные идеи, как можно улучшить систему закладок, не потеряв в функциональности, и сделав при этом легче в понимании.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by zg »

John Doe wrote:Да, из четырёх страниц обсуждения уже примерно понятно как можно работать с закладками
что, правда :?
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by Tim Sobolev »

Объясню по-простому: об особом поведении BM.prev вообще можно не упоминать, ибо в общем случае всё работает вполне ожидаемо... Т.к. BM.add всё равно откидывает все более поздние закладки, так что в большинстве случаев такое поведение абсолютно не играет роли. Насчёт возможной грубости прошу прощения, но просто уже надоело писать одно и то же.

Вставка же закладки между существующими не имеет смысла, а если такое кому-то всё-таки понадобилось, то можно просто использовать классические закладки.

И где вообще остальная общественность? Или ей на это фиолетово? :)
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by Kildor »

Нет, мне не фиолетово, но внезапно кончилось всяческое время. До конца недели я разгребусь с делами в реальном мире, и засяду за эти закладки — после этого будет и впечатление, и идеи.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by John Doe »

Tim Sobolev wrote:...Т.к. BM.add всё равно откидывает все более поздние закладки...
Кстати тоже фича сомнительная в плане универсальности.
Tim Sobolev wrote:Вставка же закладки между существующими не имеет смысла, а если такое кому-то всё-таки понадобилось, то можно просто использовать классические закладки.
Классические это эти чтоль?

Code: Select all

ПравыйCtrl-0..9    Установить закладку 0..9 в текущей позиции
И как тут вставить?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by Skirda »

Kildor wrote:после этого будет и впечатление, и идеи.
только учти вот :)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by John Doe »

Code: Select all

вместо BM.last  использовать BM.goto(BM.stat(1))
Видимо BM.stat(0).
Кстати в качестве возвращаемого значения add/del/push/pop так просится это же самое (текущее количество закладок).
А для next/prev - в самый раз возвращать текущую.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by SUSim »

А зачем убирать то что ввели? почему бы не убрать тогда и bm.next с bx.prev
чем вас не устраивает:

Code: Select all

BM.count([Cnt])
BM.curpos([Idx])
BM.append([Idx])
BM.goto([Idx])
BM.del([Idx])
Да настаиваю!!! команд меньше чем сейчас, а функционал полный (ВСЁ можно реализовать что есть вданный момент плюс еще много чего)!
И почему вы не хотите ввести BM.Count и BM.CurPos а вводите ненативный BM.State?
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by John Doe »

SUSim
Без паники.
Насчёт bm.Count и bm.CurPos я например с вами согласен, и против вроде бы никто не выступал.

А вот bm.next и bm.prev завязаны на текущей "полустековой" модели.
И в этой модели bm.prev не равно bm.goto(bm.stat(1)-1).
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by SUSim »

bm.next как раз нормальный в текущем состоянии он эквивалентен bm.goto(bm.current()+1) в моей постановке,
а вот BM.prev действительно замысловат, но я и не предлагаю его менять, я как раз предлагаю оставить (хотя непонятно зачем эта экономия одного BM.add(), я в своих макросах всегда вместо bm.add() использую bm.add() bm.nex(), чтобы не путаться создалась ли лишняя закладка или нет при bm.prev()).

можно же оставить текущие команды, да и до полнить их пресловутыми push и pop? хотя push() вырождается в BM.append(), а pop в BM.goto(BM.count()) BM.del(BM.Count())
bm.add() текущей модели будет эквивалентна bm.count(bm.current()) bm.append() в моей постановке, да, текста больше но логика понятней, да и bm.add не обязательно же удалять...
SimSU ··· ·· -- ··· ··-
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by Tim Sobolev »

Значится так.
1. Вместо "стековые закладки" пишем "динамические закладки", вместо "конец стека" пишем "конец списка".
2. Текущую BM.prev переименовываем в BM.back.
3. Создаём BM.prev, которая выполняет возврат на предыдущую (добавленную в список ранее текущей), или текущую (если текущая -- первая) закладку, аналог -- BM.goto(1).
4. BM.next оставляем без изменений: выполняет переход на следующую (добавленную в список после текущей), или текущую (если текущая -- последняя) закладку, аналог -- BM.goto(BM.stat(0)).
5. BM.push и BM.pop остаются без изменений, выполняют, соответственно, добавление закладки из текущей позиции редактора в конец списка закладок / переход на позицию редактора из последней в списке закладки и удаление этой закладки. После выполнения пары команд BM.push .. BM.pop состояние редактора и закладок не меняется.
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by Kildor »

Ага.
А BM.push BM.next — выдаст последнюю закладку, не удаляя её, так?
Соответственно BM.push BM.next BM.pop — всё согласно исходному порядку?
И «BM.push BM.push» — даст две закладки в одной позиции, так?
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by John Doe »

Tim Sobolev wrote:Значится так.
Правильно ли я понимаю: чтобы перейти на закладку созданную последней, т.е. "текущую", Next/Prev не помогут, надо будет использовать либо Back, либо Goto(Stat(1))?
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by Tim Sobolev »

Kildor wrote:А BM.push BM.next — выдаст последнюю закладку, не удаляя её, так?
да
Kildor wrote:BM.push BM.next BM.pop — всё согласно исходному порядку?
да, но можно и без BM.next
Kildor wrote:«BM.push BM.push» — даст две закладки в одной позиции, так?
да
John Doe wrote:Правильно ли я понимаю: чтобы перейти на закладку созданную последней, т.е. "текущую", Next/Prev не помогут, надо будет использовать либо Back, либо Goto(Stat(1))?
На позицию редактора из последней закладки (если она текущая) можно перейти через BM.next, BM.Goto(BM.Stat(0)) и BM.Goto(BM.Stat(1))
Если она не текущая, то только BM.next (повторяя до упора) и BM.Goto(BM.Stat(0)) (непосредственно).

PS. Если всё понятно, буду крутить.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by John Doe »

Tim Sobolev wrote:
John Doe wrote:Правильно ли я понимаю: чтобы перейти на закладку созданную последней, т.е. "текущую", Next/Prev не помогут, надо будет использовать либо Back, либо Goto(Stat(1))?
На позицию редактора из последней закладки (если она текущая) можно перейти через BM.next, BM.Goto(BM.Stat(0)) и BM.Goto(BM.Stat(1))
Если она не текущая, то только BM.next (повторяя до упора) и BM.Goto(BM.Stat(0)) (непосредственно).
А если она текущая, но не последняя?

И что по поводу прозвучавших выше предложений а) по возвращаемым значениям б) bm.curpos/bm.itemcount?
Tim Sobolev wrote:PS. Если всё понятно, буду крутить.
Имхо лучше не становится: back/next/prev это жутковато.
Может покрутить-таки в сторону упрощения?
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: Работа со стековыми закладками в редакторе (BM.Add и др.

Post by Kildor »

>> BM.push BM.next BM.pop — всё согласно исходному порядку?
> да, но можно и без BM.next
Тут ещё имелось в виду, что через next можно получить запушенную закладку, не удаляя её, так? Иногда требуются приседания вокруг одной закладки, а постоянно писать pop push не сильно красиво.

Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
Post Reply

Return to “Обсуждение макросов”