Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 4)

Модерирует : gyra, Maz

Maz (23-11-2017 18:57): FAR Manager (часть 5)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

AlViS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Предыдущие топики:  1 2 3
 
Где взять последнюю версию?
На странице загрузки скачайте MSI-инсталлятор стабильной сборки нужной вам разрядности (32 или 64 бита) или дистрибутив в виде 7z-архива и установите/распакуйте в любую папку (FAR портабелен и может работать без установки).
Там же на свой страх и риск можно взять наиболее свежую "ночную" сборку (в ночных сборках устраняются выявленные недоработки, добавляются новые функции, но могут содержаться и серьёзные ошибки).
 
Общие сведения о совместимости FAR и плагинов
 
Можно воспользоваться одной из пользовательских сборок FAR Manager
Вопросы, касающиеся сборок, следует задавать непосредственно их авторам, а не на официальном форуме.
 
Где взять дополнительные плагины, скрипты и макросы?
Плагринг. В настоящее время большинство авторов (возможно, уже и все) выкладывают плагины здесь. Кроме плагинов здесь появляется всё относящиеся к FAR: дополнения, консольные шрифты, скрипты и пр.
Анонсы плагинов на официальном форуме. Даже если автор не выкладывает по каким-либо причинам плагин на плагринге, он может дать анонс в этой теме.
Полезные скрипты и макросы.
 
Инструкции по сборке ФАРа из исходников
Набор для самостоятельной сборки ФАРа
Как собрать FAR самостоятельно (старая инструкция)  
 
Ссылки на устаревшие версии
Выдержка из Far Manager Site and Forum ‹ FAQ :
Отличия FAR 3 от FAR 2
Отличия FAR 2 от FAR 1.7
 
Примечания
 
* 13 декабря 2008 г. произошло переименование веток: ANSI-ветка 1.71 превратилась в 1.75, а Unicode-ветка получила номер версии 2.0 (вместо 1.80). Т.е. версии 1.хх это ANSI ("старый" FAR), а версии 2.хх – Unicode ("новый" FAR). Эти ветки сильно различаются по способу взаимодействия с плагинами и системой!
* При обновлении ANSI-ветки 1.хх более старые версии плагинов могут работать в более новом FAR, но более новые плагины в большинстве случаев требуют обновления FAR (см. документацию).
* Unicode-плагины в ANSI-версии FAR не работают – у них иной способ взаимодействия (API) с Far.exe, поэтому даже не пытайтесь их использовать в FAR версии ниже 1.80.
* При обновлении Unicode-версии FAR 1.80/2.0/3.0 обращайте внимание на номер сборки: следует обязательно обновить все плагины для сборок 677/680/684, иначе они не будут работать. ANSI-плагины (кроме тех, которые работают в редакторе) можно применять в Unicode-версии FAR, в меню плагинов (вызываемом по F11) они будут помечены значком [A] справа от их имени. Unicode-плагины в FAR 1.80/2.x/3.х никаким значком после имени не помечаются.
* Unicode-версия FAR 1.80/2.x/3.х требует как минимум Windows 2000, т.е. она работает только в Windows 2000/XP/2003/Vista/2008/7/8/10.
* Плагины от FAR 2 несовместимы с FAR 3 и не запустятся.
* В FAR 3 выборочно могут работать плагины от FAR 1, однако не стоит брать от FAR 1 плагины для редактора или работающие с дисками: первые портят текст в Юникоде, вторые – файловую систему.
* В любом случае разрядность плагинов должна совпадать с разрядностью FAR, иначе плагин не будет загружен.

 
Принципиальные различия между hard link, symlink и junction
Как устранить взаимное влияние запущенных копий FAR в памяти
Как запустить Lua/MoonScript из FAR
Как правильно добавить в программу нужную DLL (или иную зависимость), чтобы при обновлении ОС или иных программ она не перестала работать
 
Общие правила обращения за помощью
  1. Решаете задачу самостоятельно, при необходимости ищете ответы в теме и других источниках. Предварительное изучение документации обязательно!
  2. Если ваших знаний не хватает, то задаёте вопрос в форуме и строго следуете инструкциям тех людей, которые вам помогают.
  3. Если решить задачу, следуя пунктам 1 и 2, не удалось, то задаёте вопрос разработчикам.

Невыполнение этих правил ведёт к тому, что никто не станет помогать решать вашу задачу.

Всего записей: 2402 | Зарегистр. 03-01-2002 | Отправлено: 11:10 07-11-2015 | Исправлено: Victor_VG, 04:33 26-09-2017
VictorVG2

Редактировать | Цитировать | Сообщить модератору
Тип такого хулюганству вышло Plugin_AdvCmp2.lua:
 

Цитата:
local ACID="ED0C4BD8-D2F0-4b6e-A19F-B0B0137C9B0C"
local fplgd,fprm,sdr=win.GetEnv("FARHOME").."\\".."plugins\\advcmp",win.GetEnv("FARPROFILE").."\\Macros\\scripts",win.GetEnv("SystemDrive").."\\";
 
Macro{
  uid="9C77415A-6A5A-4FE7-8984-93CA9C1FAF69";
  area="Common";
  description="Delete old plugin DLL";
  flags="RunAfterFARStart NoSendKeysToPlugins";
  priority=100;
  condition=function() return (Plugin.Exist(ACID)==1 and far.Fexist(fplgd)==1) end;
  action=function() if Plugin.Unload(fplgd.."AdvCmp.dll") ~= 0 then Plugin.Unload(fplgd.."AdvCmp.dll") end;  
   Panel.Setpath(0,fplgd) Keys("ShiftF8 Enter"); Panel.Setpath(0,fprm,"Plugin_AdvCmp2.lua") Keys("ShiftF8 Enter"); Panel.Setpach(0,sdr) end;
}

если плагин загружен из указанного места, то выгрузим его и удалим вместе с каталогом, а после сделаем себе харакири. Ну а будет харакири чудить - позвать CMD с аналогичным приказом не долго.

Отправлено: 17:48 06-03-2016
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Angel_Ka
Макрос обновил. Теперь ваш переходник не нужен.
Сборный Макрос тоже обновил. Теперь в меню они видны сразу.

Всего записей: 3471 | Зарегистр. 16-06-2007 | Отправлено: 17:57 06-03-2016 | Исправлено: Alexyz21, 20:38 06-03-2016
VictorVG2

Редактировать | Цитировать | Сообщить модератору
Гусей дразнить не будем:

Цитата:
local ACID="ED0C4BD8-D2F0-4b6e-A19F-B0B0137C9B0C"
local fplgd,fuscr,fdr,sdr=win.GetEnv("FARHOME").."\\".."plugins\\advcmp",win.GetEnv("FARPROFILE").."\\Macros\\scripts".."\\Plugin_AdvCmp2.lua",win.GetEnv("FARHOME"),win.GetEnv("SystemDrive").."\\";
local hcm=fdr.."\\".."hidcon-"..(win.GetEnv("PROCESSOR_ARCHITECTURE"):gsub("AMD64","x64")).."//detach del /s/f/q "
Macro{
  uid="9C77415A-6A5A-4FE7-8984-93CA9C1FAF69";
  area="Common";
  description="Delete old plugin DLL";
  flags="RunAfterFARStart NoSendKeysToPlugins";
  priority=100;
  condition=function() return (Plugin.Exist(ACID)==1 and far.Fexist(fplgd)==1) end;
  action=function() if Plugin.Unload(fplgd.."\\".."AdvCmp.dll") ~= 0 then Plugin.Unload(fplgd.."\\".."AdvCmp.dll") end;
   Panel.Setpath(0,fplgd) Keys("ShiftF8 Enter"); Keys(hcm..fuscr "Enter"); Panel.Setpach(0,sdr) end;
}

имя скрипта, каталога обновляемого плагина и его DLL правите по месту, hidecon-x86.exe/hidecon-x64.exe берём у Андрея Гречкина в исходниках (будет новая) на Git или бинарник hidcon-v1.1.4.7z или у меня она в сборках задействована. Харакири скрипту чтобы не путался под ногами ось сделает, а разок пусть почистит мусор.
 
P.S.
 
Данный вариант дан как пример решения таких задач. Развивать его не стану - пляски с синхронизацией задач отнимут больше времени чем написать и запустить конструкцию типа такой:
 
запускать через этот скрипт

Цитата:
@echo off&if exist update.cmd (far\hidcon-x32.exe update.cmd)
@cd Far&hidcon-x32.exe /detach rfar.cmd %1&exit

update.cmd:

Цитата:
@echo off
@if exist "Far\plugins\advcmp" (@rd /s/q "Far\plugins\advcmp" > nul)
@if exist "Far\Profile\Macros\scripts\Plugin_AdvCmp2.lua" (@del /s/f/q "Far\Profile\Macros\scripts\Plugin_AdvCmp2.lua" > nul)
@if exist update.cmd (@del /s/f/q update.cmd > nul)

Отправлено: 18:23 06-03-2016 | Исправлено: VictorVG2, 19:45 06-03-2016
Angel_Ka



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
За Ваши пост от 16:56 06-03-2016 с оптимизированным кодом и пост от 20:38 06-03-2016:
Цитата:
Макрос обновил. Теперь ваш переходник не нужен.
Сборный Макрос тоже обновил. Теперь в меню они видны сразу.
ОГРОМНЕЙШЕЕ СПАСИБО!  
 
Мне, правда, сразу столько умственной пищи быстро не то, что не переварить, а даже и не прожевать. Особенно в приведённых макросах бросаются в глаза кондишены, от которых я просто в восторге! В том числе мне любопытно то, что обычно в них указывается безымянная function(), а у Вас — function(key). Поясните, пожалуйста, этот момент.

Всего записей: 585 | Зарегистр. 20-05-2007 | Отправлено: 21:36 06-03-2016 | Исправлено: Angel_Ka, 21:39 06-03-2016
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Angel_Ka

Цитата:
Поясните, пожалуйста, этот момент.  

А почитать документацию?

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 21:55 06-03-2016
Angel_Ka



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz

Цитата:
А почитать документацию?
 

Благодарю Вас за то, что настояли вчитаться в документацию! Оказалось, что я давно заблуждаюсь и неправильно указываю function() в condition, явно путая её с action. И эту укоренившуюся уже ошибку до сих пор на практике не замечал.
 
А ведь в "Справке по системе макросов Far Manager" в позиции "Стационарные макросы" действительно сказано:
Цитата:
...
condition    = function(key) return Far.Height>30 end;    -- function (опциональное поле)
...
7. Опциональное поле condition – функция.
 
Вызывается с одним аргументом: имя нажатого ключа. Для автостартующих макросов – вызывается без аргументов.  
Если возвращает false/nil/ничего, то макрос не исполняется.  
Если возвращает число, то это число используется вместо priority.  
При других значениях возврата (например, true) используется priority.


Всего записей: 585 | Зарегистр. 20-05-2007 | Отправлено: 23:34 06-03-2016 | Исправлено: Angel_Ka, 23:37 06-03-2016
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Angel_Ka

Цитата:
заблуждаюсь и неправильно указываю function() в condition

Это не заблуждение, поскольку язык Lua не требует обязательного указания аргументов.
В большинстве случаев применения ф-ции condition, аргумент key не используется. В этих случаях допустимо его не указывать.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 23:43 06-03-2016
Angel_Ka



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz

Цитата:
В этих случаях допустимо его не указывать.

Благодарю Вас за существенное уточнение!  
Попробую пока самостоятельно найти ответ на вопрос: в каких случаях в condition аргумент key нужно указывать обязательно. Поскольку давно убедился в том, что такие поиски весьма полезны на будущее.

Всего записей: 585 | Зарегистр. 20-05-2007 | Отправлено: 00:02 07-03-2016
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Angel_Ka

Цитата:
 в каких случаях в condition аргумент key нужно указывать обязательно

Либо указывать всегда (хуже от этого не будет), либо только в тех случаях, когда он используется в функции.
Если он не используется, то можно указывать, можно не указывать - разницы нет.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 00:08 07-03-2016
VictorVG2

Редактировать | Цитировать | Сообщить модератору
Angel_Ka
 
Формальные правила тут простые:
 
  • Если в определении процедуры (функции) указана возможность передачи и/или возврата параметров и в определении для них заданы начальные значения, то те параметры вызова значения которых отличаются от заданных в определении процедуры должны быть указаны явно и определены до вызова процедуры (функции).
  • Если процедура (функция) использует позиционные параметры вызова, то запрещается опускать как предшествующие передаваемому, так и любые последующие параметры, но допускается обозначение символом-разделителем параметров использующих значения заданные в качестве начальных в определении процедуры (функции).

эти правила были сформулированы ещё в конце 50-х в формальной модели стандарта языка Algol - Algol-60 который потеряв своё первичное значение "алгоритмический язык программирования" до сих пор используется в качестве формального языка описания алгоритмов ибо для этого лучшего инструмента пока не создано.

Отправлено: 01:59 07-03-2016 | Исправлено: VictorVG2, 02:02 07-03-2016
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VictorVG2
Не сбивайте человека с толка, т.к. правила в Lua заметно отличаются от вышеприведенных.
Для Lua есть своя документация, и довольно неплохая.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 02:04 07-03-2016
Angel_Ka



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VictorVG2
 
Благодарю Вас за интересную информацию! Жаль, что уж больно она тяжеловесна. Хотя для развития кругозора наверно полезно.
 
shmuz
 
Большое спасибо за лаконичное и ясное растолковывание!
 
Мне как то больше по нраву вариант: "только в тех случаях, когда он используется в функции" — с первого взгляда можно судить задействован в кондишен ключ или нет.  

Цитата:
Для Lua есть своя документация, и довольно неплохая.

Похоже, что надо ещё как то научиться выуживать из документации нужную информацию. А то Вы ответили раньше, чем я набрёл на ответ в сети. И за это время в инете не только по запросу "Lua+function(key)" ни чего толком не нашёл, но и даже по "Lua+condition" тоже. То есть "на гора" то выдано много инфы было, но всё что то не та.

Всего записей: 585 | Зарегистр. 20-05-2007 | Отправлено: 02:45 07-03-2016 | Исправлено: Angel_Ka, 02:51 07-03-2016
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Angel_Ka
Энциклопопию читать надо, а не в сети удить

Всего записей: 3471 | Зарегистр. 16-06-2007 | Отправлено: 10:41 07-03-2016
Angel_Ka



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
Вот именно потому, что я не нашёл ответа на свой вопрос
Цитата:
в каких случаях в condition аргумент key нужно указывать обязательно
ни в Encyclopedia for Developers, ни в Справке по системе макросов Far Manager, я и побрёл в инет. Но и там всё ещё пока не нашёл. И если бы не любезная консультация shmuz`а, то так бы до сих пор наверное и бродил.  
 
Но и не исключено, что не умело искал. Тогда подскажите, пожалуйста, как надо грамотно искать.  
 

Всего записей: 585 | Зарегистр. 20-05-2007 | Отправлено: 10:54 07-03-2016 | Исправлено: Angel_Ka, 11:04 07-03-2016
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Angel_Ka
Открываем макроапи мануал, закладка поиск, ищем condition.
 
Обновил Panel.CustomSort.lua, убрал отдельный режим с игнорированием символов, перенеся его в виде чекбокса к двум другим. Исправил ошибки.

Всего записей: 3471 | Зарегистр. 16-06-2007 | Отправлено: 13:43 07-03-2016 | Исправлено: Alexyz21, 13:45 07-03-2016
VictorVG2

Редактировать | Цитировать | Сообщить модератору
Angel_Ka
 
Да там вроде всё просто, а главное рабочих примеров полно, и большая часть их подробно комментирована (я до сих пор комменты не ставлю, хотя и десятки лет сам после вспоминаю что написал), так что легко понять что и как работает.

Отправлено: 13:47 07-03-2016
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
При использовании custom сортировок с собственными диалогами и обработчиками, эти пункты меню не срабатывают по Enter и MsLClick - это так и должно быть и неизлечимо даже в перспективе? - Только собственными обработками?

Всего записей: 3471 | Зарегистр. 16-06-2007 | Отправлено: 14:15 07-03-2016
Angel_Ka



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
VictorVG2
И Encyclopedia for Developers, и Справку по системе макросов Far Manager открывал и искал и condition, и function(key), и function(), но ответа на свой вопрос: "в каких случаях в condition аргумент key нужно указывать обязательно?", однако, я там не нашёл. А если он всё же там есть, ткните меня в него, пожалуйста.  
 
А пока полагаю, что краткий и ясный ответ, который дал shmuz:
Цитата:
Либо указывать всегда (хуже от этого не будет), либо только в тех случаях, когда он используется в функции.
Если он не используется, то можно указывать, можно не указывать - разницы нет.
следовало бы в документацию поместить.  
 
 
Добавлено:
Alexyz21

Цитата:
Обновил Panel.CustomSort.lua

Вы так быстро и мощно делаете новые и более совершенные варианты Ваших замечательных макросов, что я не успеваю их с той же скоростью осваивать. И я очень рад, что Вы не теряете к ним интерес. И Я ОЧЕНЬ БЛАГОДАРЕН ВАМ ЗА ЭТО!

Всего записей: 585 | Зарегистр. 20-05-2007 | Отправлено: 14:53 07-03-2016 | Исправлено: Angel_Ka, 15:00 07-03-2016
VictorVG2

Редактировать | Цитировать | Сообщить модератору
Angel_Ka
 
А взять рабочие скрипты? У ребят всё расписано, про свои привычки я сказал. Чем не примеры?

Отправлено: 15:14 07-03-2016
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Angel_Ka
Ваши трудности (и не только ваши, это у многих) проистекают из того, что нарушается правильный порядок обучения. Это как бы школьника из 2-го класса перевести сразу в 8-й. Так не должно быть. После 2-го класса должен идти 3-й и так далее.
 
Многие вопросы, которые вы задаёте, ясно показывают, что ваше знание Lua на уровне 1-го - 2-го класса из 10-ти. Мой вам совет - не пытайтесь перепрыгивать классы, идите подряд. Для начала освойте Lua Manual, также есть в сети отличная книга "Programming in Lua". Если с английским туго, ищите материалы на русском.
 
А документ macroapi_manual.ru.chm предполагает, что читатель уже знает Lua.
 
Добавлено:
Alexyz21

Цитата:
При использовании custom сортировок с собственными диалогами и обработчиками, эти пункты меню не срабатывают по Enter и MsLClick - это так и должно быть и неизлечимо даже в перспективе? - Только собственными обработками?

Сформулируйте свой вопрос так, чтобы мне не ломать голову.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 15:29 07-03-2016
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 4)
Maz (23-11-2017 18:57): FAR Manager (часть 5)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru