shmuz / spring Goto Github PK
View Code? Open in Web Editor NEWFar Manager macros in Lua
License: Other
Far Manager macros in Lua
License: Other
Или альтернативно - единственный стартовый макрос (файл). Это - лучше, так как позволяет управлять порядком выполнения действий.
[Reported by Aidar Rakhmatullin].
В случае ошибки в обычном (неавтостартующем) макросе при запуске FAR'а выдаётся ошибка:
Ошибка при разборе макроса [string "far.Keys("AltF7); far.Print("**.*"); far.Keys("Home Right CtrlV..."]:1: unexpected symbol near '*'
Естественно, функции far.Print ещё нет, но это тестовый макрос, повешенный на "клавишу" Ctrl+Alt+F8.
В FAR v3.0 build 2753 x86 такого не было.
Кроме того, не отобразилась часть 1: unexpected symbol near '*'
, хотя по Ctrl+C получил весь текст из окна ошибки.
Не работает такой макрос
<macro area="Dialog" key="CtrlShiftU" flags="EVSelection|DisableOutput" description="PSF: Selected text to upper case">
<text>
<![CDATA[Keys("F11") if Menu.Select("PowerShellFar", 3) > 0 then Keys("Enter u") else Keys("Esc") end]]>
</text>
Тот же макрос не работает в редакторе. А вот в Shell именно такой же макрос работает.
Неплохо было бы.
Панели при этом вообще исчезают, не говоря уже о самом меню.
В некоторых случаях собранные в MS Help Workshop 4.1 СHM маны выдают ошибку "Navigation Canceled...". Я её поучил скачав из ночнушек маны отдельно, и в то же время если взять всю. SVN копию. репозитария она у меня не воспроизвелась. Я сталкивался с таким его поведением когда в HTML файле он встречает ссылку на отсутствующую индексную страницу. Попробую покопаться и устранить эффект. Но выглядит он не слишком "приятно": http://s60.radikal.ru/i168/1210/6b/cc6d182119aa.png . Как сделаю рабочий вариант добавлю сюда - зачем два раза одну и ту же работу будем делать? Похоже придётся проверить файлы оглавления - обычно причина сидит в их структуре. Сделаю - скажу точно.
NightRoman:
http://forum.farmanager.com/viewtopic.php?f=5&t=7302&p=98314#p98308
После конвертации конвертером получил такой макрос для панелей
if Plugin.Menu("10435532-9BB3-487B-A045-B0E6ECAAB6BC", "58AD5E13-D2BA-4F4C-82CD-F53A66E9E8C0") then
Keys("1")
else
Keys("AKey")
end
Вместо выбора хоткея 1 в меню он печатает "1" в командной строке.
Raidar:
Plugin.Menu ожидает закрытия меню вместо возврата управления сразу после отображения меню.
Пока не реализована.
В билде 2757 (ревизия 8235) невинное с виду изменение в ctrlobj.cpp привело к тому, что при вызове Macro.LoadMacros()
- и конкретно внутри него CtrlObject->Plugins->CallPlugin(LuamacroGuid,Type,Data,&ptr)
- Фар падает.
Пока не реализована.
Остаётся "уголок" в верхнем левом углу экрана.
Вот что я вижу - в конце любой строки диалога выводимого плагинами визуализируются пробелы-заполнители. Увидел на двух плагинах FarVersion и Visual Rename адаптированных под Lua. Андрею вопрос задал http://code.google.com/p/andrew-grechkin/issues/detail?id=22&thanks=22&ts=1350730127, с Лёшей обратной связи увы нет. Я надеюсь что это явление мы уберём на уровне изменения забытой мной настройки - здорово путает, особенно когда опрашиваешь версию бинарника. Визуально выглядит вот так:
http://s52.radikal.ru/i135/1210/3f/799779dbfa08.png
пока понять с чем встретился не смог и прошу если возможно подсказать в каком направлении искать решение.
Проблема с получением позиции текущего элемента списка:
возвращается значение типа usedata вместо number, хотя значение правильно.
Воспроизведение:
local m=msgbox("Warning!", "Save this file as UTF-8?", 0x00020001)
if m~=1 then exit() end
local r=Editor.CurLine;
local c=Editor.CurPos;
Keys("ShiftF2 Tab")
local id=Dlg.GetValue(0,6)
Keys("CtrlDown")
local s=Dlg.GetValue(id,0)
--far.Message(s, type(s))
local k=4;
while (mf.index(s, "65001")~=0) and (k>3) do
Keys("Down")
s=Dlg.GetValue(id,0)
--far.Message(s, type(s))
k=Dlg.GetValue(id,7) -- Здесь получается тип userdata вместо number !!!
far.Message(k, type(k)) -- Выводится тип = userdata и значение = 6 !!!
end
--[[
-- Закомментировал, чтобы случайно не изменить кодировку файла
if mf.index(s, "65001")==0 then
Keys("Enter Tab Subtract Enter")
for k = 1, 2 do
if Area.Dialog then Keys("Enter") end
end
Keys("AltF8")
print(r)
print(",")
print(c)
Keys("Enter")
else
Keys("Esc Esc")
end
--]]
Вызов far.Menu()
из макроса выводит меню, и оно работает, но через секунду бездействия пользователя Фар перерисовывает экран, затирая меню. Если нажать, например, Up, меню снова нарисуется, но без рамок, а через секунду снова затрётся.
Подозреваю, что эта проблема решается в menushowFunc()
вызовами frame.Lock()
/frame.Unlock()
, но плагинам-то это вроде недоступно...
Желательно добавить приватный (или общедоступный) API для реализации данной функции.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.