Расширение макро языка в редакторе (а может лучше FMScript)

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Расширение макро языка в редакторе (а может лучше FMScript)

Post by Tim Sobolev »

А что если добавить в существующий макроязык некоторые возможности:

1) доступ к указанной строке в редакторе (получение ее содержимого в переменную и обратно)
2) возможность создания меню выбора опции (возвращает номер строки)
3) вызов InputBox'a (диалог с однострочным редактором и кнопками "Да", "Нет")
4) возможность работы с буффером обмена как с переменной

Мне кажется, что этого будет вполне достаточно для реализации простых скриптов с наименьшими затратами..

PS. Не лучше ли в macro.chm пункт Состояния обозвать как Значения или Свойства ?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Post by Skirda »

1. Editor.CurStr и EditorSetStr(S) ?
2. что-то ума не дам в каком это виде будет выглядеть такое меню (всмысле в тексте макроса)
3. s=inputbox(Title,DefText) ?
4. тоже пока не представляю ЭТО

Отдал html-файлы на переработку, глядишь удобнее будет ;-)
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Post by Tim Sobolev »

EditorSetStr(S) и s=inputbox(Title,DefText) -- где сие чудо описано или это в планах?
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

=Tim Sobolev= wrote:EditorSetStr(S) и s=inputbox(Title,DefText) -- где сие чудо описано или это в планах?
Это тебя спрашивают если такая форма макроса подойдёт?
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

Но вообще если уж делать то чтение и запись любой строки и переход по ним. Начинаем перерастать в бэйсик.

А вообще с редактором очень хорошо работает farmail скрипт, и скрипты можно вешать на макросы. Так что лучше подумать а нужно ли оно вообще.

И меню там есть и infobox. Можно включить как отдельный плагин в дистриб, ведь у редактора есть api, зачем макросами там лазить.
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Post by Tim Sobolev »

Если к нему прикрутить возможность вызова макросов или ввести возможность доступа к тем обьектам, которые на данный момент поддерживаются в макроязыке -- буду за двумя руками и писать по этой теме перестану, разве что по мелочи...
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

А какие объекты тебе нужны в редакторе?
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Post by Tim Sobolev »

Ну, анализируя FARMail Script, в нем не хватает для полного счастья работы с редактором следующих функций:

-------------
позиция
-------------
- integer getcolpos() - получение номера текущей колонки.
- integer getrowpos() - получение номера текущей строки.

требуются, если предвидится необходимость сохранения начальных координат и использование setpos.
-------------
выделение
-------------
- integer blkend() - получение номера строки в которой оканчивается блок
- integer setsel(integer i_start,pos_start,i_end,pos_end) - установка выделения с позиции pos_start строки i_start до позиции pos_end строки i_end. Возвращает 0 если получилось, -1 если нет
- integer setblktype() - установка типа выделения: 0 - снять выделение, 1 - потоковое, 2 - вертикальное. Возвращает 0 если получилось, -1 если нет.
-------------
Состояние (частичное Editor.State)
-------------
- integer romode() - получить значение режима блокировки. Возвращает 0 если в режиме "полный доступ", 1 если в режиме "только чтение"
- integer chgmode() - производилась ли модификация файла после сохранения. Возвращает 0 если нет, 1 если да.
-------------
INI файлы
-------------
- integer setini(string section, string key, string/integer value) - запись ключа в ini файл, где section - название секции в ini файле, key - название ключа в ini файле, value - записываемое значение. Возвращает 0 если получилось, -1 если нет.
DkmS
Posts: 48
Joined: Sat 10 Jun, 2017 18:07

Post by DkmS »

Всё это хозяйство (кроме ini) в SHPCE года три уж реализовано.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

Значит внедрил всё это хозяйство в FMScript, скоро выложу. В ближайшем будущем можно ожидать RE и наверно масивы.
Post Reply

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