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

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

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

Post by John Doe »

Latest post of the previous page:

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: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

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

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: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 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: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

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

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

Post by John Doe »

Tim Sobolev wrote:Значится так.
1. Вместо "стековые закладки" пишем "динамические закладки"...
В Писании сейчас соответствующий раздел называется "Стековые закладки".
И соответствующие функции API тоже несут на себе отметку "стековости".
Может пора сейчас всё подряд переименовать в "динамические" (или "сессионные")?
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 »

John Doe wrote:В Писании сейчас соответствующий раздел называется "Стековые закладки".
И соответствующие функции API тоже несут на себе отметку "стековости".
Может пора сейчас всё подряд переименовать в "динамические" (или "сессионные")?
Да я как бы совсем не против, а очень даже за :)
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Tim Sobolev 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 »

John Doe wrote:Внесёте предложения по конкретным именам?
Тут даже не знаю. что ответить. "Сессионными" их назвать можно только для текущей их реализации, не факт что они не будут сохранятся в будущем. "Динамическими" их назвать можно, но мне как бы вариант "мульти" тоже нравится 8) .
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 »

Ну так как, переименовывать будем или так и оставим? Если будем, то во что? :D
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

внутри кода Far - как угодно
в писании - как правильно.
макро BM.XXX - не вижу смысла переименовывать.
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Речь об API, так ведь?
Надо заменить STACK на SESSION или DYNAMIC или MULTI или ЧТОНИБУДЬ.
Post Reply

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