Константы в макроязыке

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

Re: Константы в макроязыке

Post by John Doe »

Latest post of the previous page:

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

Re: Константы в макроязыке

Post by zg »

John Doe wrote:Внимательнее читайте.
Разделитель непринципиален абсолютно, учитывая что использоваться это будет без префикса.
Но точка не очень подходит, поскольку содержится в имени функции.
zg wrote:и эти люди кричат про сложность гуидов.
Виш изначально был о простом разделении по разделам. В реестре это было всё красиво. А в базе извините через ::
не вижу разницы жать f4 в одном плагине, или f4 в другом. так же не понятно, если используется без префикса, зачем префикс?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Константы в макроязыке

Post by John Doe »

Я не понял где вы сейчас жмёте F4.
А при реестре всё было на панели RegEdit: разделы как папки, а константы - файлы:

Префикс нужен чтобы задать область действия константы. Что можно было использовать например так: Menu.Select("xxx", MatchSubstr).
Префикс в определении константы означает что константа MatchSubstr имеет исключительно локальное значение (внутри Menu.Select), и попытка её использования в любой другой функции должна породить ошибку.

(Я не знаю сложно ли это в реализации)
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Константы в макроязыке

Post by zg »

John Doe wrote:Я не понял где вы сейчасс жмёте F4.
SQLite DB Browser
(Я не знаю сложно ли это в реализации)
всегда можно прислать патч.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Константы в макроязыке

Post by John Doe »

Вопрос в том, принимается ли такая идея командой в принципе. Если да то на мантис. А кто силён - то когда-нибудь сделает.
всегда можно прислать патч.
Это следует понимать "раз ты не программер то сиди и помалкивай"?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Константы в макроязыке

Post by zg »

John Doe wrote:
всегда можно прислать патч.
Это следует понимать "раз ты не программер то сиди и помалкивай"?
нет. это к тому, что сейчас выражения в фар вычисляются без контекста. т.е. в 2+3 и f(2+3), 2+3 вычисляются одинаково. вы предлагаете ввести контекст. что во-первых усложняет сам макроязык. во-вторых усложняет код поддержки макросов. нужно ли это?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Константы в макроязыке

Post by Skirda »

John Doe wrote:Это длинно, но ведь макропарсеру прекрасно известен контекст, поэтому внутри макрофункций использовать такие константы можно было бы в сокращённом виде:

Code: Select all

MatchEntire
MatchHead
MatchTail
MatchSubstr
Вопрос Валентину: реально ли это?
При наличии времени реально все.
Вопрос в другом - сам то не запутаешься? Это я к тому, что в "контексте" тебе, как макрописателю, придется фактически по тексту помнить "где я". Поэтому не вижу смысла так делать.
С другой стороны - в имени допускается... точка, а это значит... кому как удобно, тот так и называет константы.
Вводить стандарт на именование констант - можно и, более того, реально, но кто его (стандарта) будет придерживаться?
We are the Borg. You will be assimilated.
So Say We All!
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Константы в макроязыке

Post by Max Rusov »

John Doe wrote:мало кто их использует...
[*]перед использованием их необходимо как-то импортировать
IMHO - это ключевой момент. Может системные константы стоит сделать предопределенными в макроязыке?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Константы в макроязыке

Post by John Doe »

во-вторых усложняет код поддержки макросов
"Контекст" это всего лишь имя функции, =префикс.
Сейчас макропарсер встретив некий неизвестный идентификатор ищет его среди констант. Предлагаемое "усложнение" невелико: будет искать "префикс+идентификатор".
нужно ли это?
Это позволит константам иметь короткие и понятные имена И при этом исключает случайное совпадение/пересечение.
Для пользователя однозначно удобно.

Возможно это усложняет макроязык, внутри.
Ну а "снаружи" хочется достичь всё-таки упрощения: чтобы "внутренние" константы работали из коробки, и были указаны в Энциклопедии.
При желании из Энциклопедии можно будет вообще убрать голые значения.
И "снаружи", для пользователя, это будет упрощением, поскольку ему ничего не понадобится знать о константах.

P.S.
Пример из другой оперы:
Названия кнопкосочетаний почти те же константы. Их можно использовать в выражениях.
Обязательно ли пользователю это знать?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Константы в макроязыке

Post by John Doe »

Max Rusov wrote:Может системные константы стоит сделать предопределенными в макроязыке?
В одной закрытой ныне теме Валентин сам это предложил, поэтому тут мало чего есть что обсуждать.

Но перед этим константы надо сильно причесать (а многих просто ещё даже и нет!)
User avatar
SUSim
Posts: 1636
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Константы в макроязыке

Post by SUSim »

Нда, опять 2 страницы обсуждений мимо цели...
для примера у меня в константах к макросам только то что я хочу там видеть типа:

а если туда вписать и всё стандартное, то :( фик чего потом найдешь...
SimSU ··· ·· -- ··· ··-
User avatar
SUSim
Posts: 1636
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Константы в макроязыке

Post by SUSim »

а константы можно поставлять и прямо с макросом - вот макрофайл для Визуального Сравнения:

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
<farconfig>
    <macros>
        <constants>
            <constant name="GUIDviscomp" type="text">
                <text>AF4DAB38-C00A-4653-900E-7A8230308010</text>
            </constant>
        </constants>
        <keymacros>
            <macro area="Shell" key="AltC" flags="DisableOutput" description="Визуальное сравнение файлов (плагин VisualCompare © Максим Русов) © SimSU">
                <text>
                    <![CDATA[
%comment="Визуальное сравнение двух файлов. © SimSU";
%comment="Используется плагин Visual Compare Максима Русова.";
%comment="Назначается, например, на AltC в панелях.";
  $IF (APanel.SelCount==2)
    %CS=clip(5,2); %CV=clip(0); CtrlShiftIns %fn=clip(0); clip(1,%CV) clip(5,%CS) %fn=replace(%fn,"\r\n"," ");
    Plugin.Prefix(GUIDviscomp,%fn)
  $ELSE
    $IF (APanel.Left)
      Plugin.Prefix(GUIDviscomp,APanel.Path+"\\"+APanel.Current+" "+PPanel.Path+"\\"+PPanel.Current)
    $ELSE
      Plugin.Prefix(GUIDviscomp,PPanel.Path+"\\"+PPanel.Current+" "+APanel.Path+"\\"+APanel.Current)
    $END
  $END
]]>
</text>
            </macro>
        </keymacros>
    </macros>
</farconfig>
в нём всё что необходимо для работ и константы тоже!
SimSU ··· ·· -- ··· ··-
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Константы в макроязыке

Post by HaRT »

Не пора ли стандартизировать легко воспринимаемые идентификаторы для констант FAR3 MacroAPI?
Их можно было бы распространять в виде Lua-модуля…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Константы в макроязыке

Post by John Doe »

Готовы взяться?
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Константы в макроязыке

Post by HaRT »

John Doe wrote: Готовы взяться?
От и до — нет.
Но я готов сконвертировать старый набор констант в требуемый формат, чтобы его можно было коллективно вычистить от удалённых значений.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Константы в макроязыке

Post by John Doe »

HaRT wrote: сконвертировать старый набор констант в требуемый формат
Ок, это 1%.
Но уже можно будет пользоваться вашим модулем.
HaRT wrote: вычистить от удалённых значений.
Скорее добавить отсутствующие, в процессе внимательной сверки с энциклопедией. Одновременно с этим можно было бы внести константы и в Энциклопедию.
Post Reply

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