в сад такую фичу, которая весь скрипт слепливает в одну строку, которую редактор фара редактировать не умеет, так как показывает только первые (условно) 80 символов из всей строки. EditWrap под lua-far не работает, хотя эту функцию редактор должен иметь изначально, иначе редактор должен называться редактором первых 80-и символов.
dt.dll 1.0.3 x86 26112B
MD5: 76FE192F9DA84BB4CEE28D641FCB6DFF
SHA1: D90FE117803C652A3D98C80A079DB5F735C770B0
SHA256: A5274E706F35188F65D18778EBCA963A1B4636881FCB169ED770DACF865AAED2
[url]http://evil-programmers.googlecode.com/files/DialogTools-1.0.3.0x86.7z[/url]
-------------------
Нужный эффект достигается инверсией в исходной dll всего лишь 1-го бита (второго в байте):
00004943: 48 4C
-- See http://forum.farmanager.com/viewtopic.php?p=130985#p130985
local DialogTools_MainGuid = "B2EC2264-0F55-4B86-87F7-F1392B8FC5DC"
local DialogTools_SrchGuid = "40E53FB1-6291-45a1-9DDF-B4A2048CA6BA"
local DialogTools_RplcGuid = "F4C58B97-BA69-4814-9FC9-DAB9307C0E88"
local DialogTools_UndoGuid = "1117C0E3-76BA-443D-90E3-89D20C45F364"
local DialogTools_EditGuid = "D0C5118D-E750-4E00-A4D4-0E0E0063571F"
local DialogTools_PwShGuid = "C8D4D4A4-943B-436F-8414-D36CBAF37C53"
local function inEditField()
return Dlg.ItemType == far.Flags.DI_EDIT or Dlg.ItemType == far.Flags.DI_FIXEDIT
end
local function callUndoRedo( stepKey )
Plugin.Menu( DialogTools_MainGuid, DialogTools_UndoGuid )
Keys( stepKey .. ' ' .. 'Enter' )
end
Macro {
description = "DialogTools: Search";
area = "Dialog"; key = "F7";
condition = inEditField;
action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_SrchGuid ) end
}
Macro {
description = "DialogTools: Replace";
area = "Dialog"; key = "CtrlF7";
condition = inEditField;
action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_RplcGuid ) end
}
Macro {
description = "DialogTools: Undo";
area = "Dialog"; key = "CtrlZ AltBS";
condition = inEditField;
action = function() callUndoRedo( '' ) end
}
Macro {
description = "DialogTools: Redo";
area = "Dialog"; key = "CtrlShiftZ AltShiftBS";
condition = inEditField;
action = function() callUndoRedo( 'Up' ) end
}
Macro {
description = "DialogTools: Edit";
area = "Dialog"; key = "F4";
condition = inEditField;
action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_EditGuid ) end
}
Macro {
description = "DialogTools: Show password";
area = "Dialog"; key = "F3";
condition = function() return Dlg.ItemType == far.Flags.DI_PSWEDIT end;
action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_PwShGuid ) end
}
Last edited by HaRT on Thu 15 Mar, 2018 21:23, edited 1 time in total.
Reason:Код упрощён посредством far.Flags; [codebox] заменён на [code] в [spoiler].
Появилось предложение в плагине реализовать кодирование и декодирование многострочного описания к файлу, записываемого в Descript.ion http://forum.farmanager.com/viewtopic.p ... 62#p133862
Есть какие-либо трудности в реализации данной идеи?
Лучше что-нибудь типа editor.Editor с возможностью вместо файла передать любой текст и с возвратом отредактированного текста.
Впрочем, через временный файл такое можно и сейчас реализовать.
HaRT wrote:Вы о чём? “DialogTools: Edit” уже как раз и работает через временный файл и позволяет редактировать содержимое поля ввода в полноценном редакторе.
функциональность «DialogTools: Edit» сейчас очень легко реализуется макросом, к которому так же легко прикрутить любое поведение при склейке/разбивке строк.