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

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

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

Post by John Doe »

Latest post of the previous page:



Но вообще-то основная мысль не в том, что вставка жизненно необходима, а в том, что Push/Pop избыточны, и всю их функциональность красивее решит Add даже без наделения его способностями вставки:
John Doe wrote:Вообще a и b это независимые предложения, и ни в одном из них я не предполагаю никаких вставок.
Поэтому речь как раз об упрощении, которое позволит убрать излишние функции.
User avatar
Tim Sobolev
Posts: 714
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

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

Post by Tim Sobolev »

Ещё раз: BM.push и BM.pop -- самодостаточные операции, обеспечивающие базовый функционал работы с закладками, достаточный для большинства пользователей. Убираться они не будут. Вставка в виде BM.Add(x) возможно и будет, но если будет затребовано некоторым количеством пользователей. Текущее поведение BM.Add обусловлено функциями, которые требовались от закладок при их введении.
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

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

Post by Kildor »

Убирать pop и push не нужно, потому что это позволяет работать с закладками удобно и быстро.
Alt= «BM.push();»
Alt- «BM.pop();»
ShiftBS «BM.prev();»
Зачем нужно вставлять закладки внутрь стека — лично я себе не представляю.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

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

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

Post by John Doe »

Tim Sobolev wrote:Ещё раз: BM.push и BM.pop -- самодостаточные операции, обеспечивающие базовый функционал работы с закладками, достаточный для большинства пользователей.
Мне тоже не трудно ещё раз: BM.add/next/prev -- вполне могут обеспечивать весь функционал работы с закладками, достаточный для всех задач.
Наличие похожих по назначению функций для пользователя плохо, а для начинающего пользователя в особенности.
И вчерашнее разделение prev/back усложняет всё ещё сильнее.
Tim Sobolev wrote:Убираться они не будут.
Со смешанными чуствами представляю себе подробное описание всего этого хозяйства в Энциклопедии...
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

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

Post by Kildor »

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

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

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

Post by John Doe »

Kildor wrote:А теперь покажи, как в макросе нужно реализовывать push и pop?
См. на предыдущей странице. Как минимум двумя альтернативными способами (a и b). Оба требуют некоторого изменения поведения Add.
Kildor wrote:И ты забыл видимо про del.
С чего бы?
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

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

Post by Kildor »

См. на предыдущей странице. Как минимум двумя альтернативными способами (a и b). Оба требуют некоторого изменения поведения Add.
Тогда предлагаю два других варианта
a. Параметр для Add: Add(Stat(0)).
b. Add без параметра мог бы добавлять закладку в конец
Отсюда вопрос: является ли необходимостью отсечение хвоста при использовании Add?
Реально ведь это принудительное отсечение только ограничивает возможности, и того же можно достичь иначе:
Код:
$rep(bm.stat(0)-bm.stat(1)) bm.del(bm.stat(0)) $end
$bm.add()
Ужас, если честно. Я понимаю, что макросы обычно пишутся один раз, но не настолько же.
Особенно вот этот вот код с $rep.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

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

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

Post by John Doe »

Этот "код" не относится ни к Pop ни к Push, а является примером того как отсечь "хвост".
Причём варианта "a" он вообще никак не касается, а в варианте "б" можно сделать иначе (не знаю реально востребовано ли отсечение "хвоста", кроме как для примера с колорером).
Ужас, если честно.
bm.add(bm.stаt(0)) это действительно ужас. Лучше bm.add(bm.itemcount).
Причём, если одновременно работать только с одной закладкой, то последняя=текущая, а значит bm.push() будет эквивалентно bm.add() без параметра (а в варианте "b" push=add просто всегда, параметры не предусмотрены).
User avatar
John Doe
Бюрократ
Posts: 12982
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 303 times

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

Post by John Doe »

Kildor wrote:А теперь покажи, как в макросе нужно реализовывать push и pop?
Только что сообразил, что мы тут слегка зациклились ;-)
Ведь ответ на вопрос можно найти 6 страниц назад, в первых сообщениях темы.
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

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

Post by Kildor »

Пожалуй.
В том и дело, что реализовать можно всё на изначальном наборе свойств (ну кроме двух закладок на одну позицию). Вопрос лишь в том, что эта реализация будет неудобна и с трудом читабельна. А если в макросах уже реализованы более комплексные функции (типа pop и push), то зачем их убирать? Немного не трогая закладки. К примеру, я бы не отказался от такой вещи как EOL, хотя это реализуется наподобии Editor.RealPos<=len(Editor.Value).
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

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

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

Post by John Doe »

Kildor wrote:Вопрос лишь в том, что эта реализация будет неудобна и с трудом читабельна.
Вот в этой точке наши мнения и расходятся.
Kildor wrote:Немного не трогая закладки...
Оффтопик?
User avatar
John Doe
Бюрократ
Posts: 12982
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 303 times

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

Post by John Doe »

Пример в Энциклопедии, иллюстрирующий работу с закладками, очень уж специфичный.
Предлагаю более простой:

Искать строку %SearchString с самого начала файла. Если не найдена - восстановить исходную позицию.

Code: Select all

BM.Push()
CtrlHome
F7 print(%SearchString) Enter
$If (Dialog)
	mmode(1,0)
	$while(Dialog) eval(waitkey()) $end
	BM.Pop()
$End
User avatar
SUSim
Posts: 1546
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 12 times

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

Post by SUSim »

Kildor wrote:Вот когда можно будет в макросах писать свои функции/процедуры, тогда пусть хоть всё через одну команду с разными параметрами. А пока, давайте всё-ж думать об удобстве макроса?
В Макросах как раз можно реализовать любую модель работы с закладками!!! Эта надстройка(BM.чтото) по сути только улучшает(сокращает текст макросов) удобство макросов!

А макросы можно и в качестве процедур использовать, правда текста больше писать придется:
вместо dm.add придется писать нечто вроде eval(%%SimSU_BM_Add)

Реализация списка, правда кругового, а не полного-двунаправленного (какой требуется в данном контексте), занимает у меня 40 строк МакроКода (данный стек я использую в макросах заменяющих такие плагины как SaveSelect, TrueRem, Aliases)
All wrote:...
что все вцепились в эти закладки? кому надо он и в ручную "самопальными макросами" все реализует!!! Предлагалось же 5 базовых команд, не меняющих, а дополняющих текущий функционал...
Все эти нововведения позволят только сократить текст макросов, а если они поступят в плагины как требуют некоторые то и немного текст плагинов...

Лучше бы ввели что нибудь новое, а не дубляж(ну пусть с улучшением) того что есть...
Поле для новшеств огромно - в макросы можно добавить: регекспы, настройки редактора (полностью, а не как ща половина из заявленного доступна половина нет), ну хоть это пока...
SimSU ··· ·· -- ··· ··-
User avatar
SUSim
Posts: 1546
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 12 times

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

Post by SUSim »

Вспомните теорию работы с последовательностью... и пример про ряд разноцветных камушков...
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 12982
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 303 times

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

Post by John Doe »

Tim Sobolev wrote:Значится так.
1. Вместо "стековые закладки" пишем "динамические закладки"...
В Писании сейчас соответствующий раздел называется "Стековые закладки".
И соответствующие функции API тоже несут на себе отметку "стековости".
Может пора сейчас всё подряд переименовать в "динамические" (или "сессионные")?
User avatar
Tim Sobolev
Posts: 714
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

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

Post by Tim Sobolev »

John Doe wrote:В Писании сейчас соответствующий раздел называется "Стековые закладки".
И соответствующие функции API тоже несут на себе отметку "стековости".
Может пора сейчас всё подряд переименовать в "динамические" (или "сессионные")?
Да я как бы совсем не против, а очень даже за :)
Post Reply

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