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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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, не удалось, то задаёте вопрос разработчикам.

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

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

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

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

Попробую.  Скрипт:
Вариант 1.

Код:
----
Panel.LoadCustomSortMode (....)
 
Macro {
  description = Desc; area="Shell"; key=Key;
  action=function() Panel.SetCustomSortMode(....) end;
}
----

Из меню CtrlF12 по нажатию Enter и LMB запускается.
 
Вариант 2.

Код:
----
local Items={....}
 
local function DlgProc(hDlg,Msg,Param1,Param2)
....
end
 
local function Compare(p1,p2)
.... здесь юзаем BRS
end
 
Panel.LoadCustomSortMode(....)
 
Macro {
  description = Desc; area = "Shell"; key = Key;
  action=function()
    if Area.Menu then Keys("Esc") end
    if far.Dialog(guid,-1,-1,69,9,nil,Items,nil,DlgProc)==7 then
      ....
      BRS = ....
      Panel.LoadCustomSortMode(111,{Description = Desc; Indicator = Indicator; Compare = Compare})
      Panel.SetCustomSortMode(111,0)
    end
  end
}
----

Из меню CtrlF12 по Enter и LMB макрос (action()) не выполняется, только по Key.
 
Второй момент - если BRS объявить локальной (вместо BRS, local BRS) и она используется в Compare(), объявленной вне тела макроса (выше него), то она невидна, хотя Compare() вызывается в макросе ниже - в Panel.LoadCustomSortMode(....) - это тоже правильно и не излечимо?

Всего записей: 1364 | Зарегистр. 16-06-2007 | Отправлено: 17:26 07-03-2016 | Исправлено: Alexyz21, 17:30 07-03-2016
Angel_Ka



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

Цитата:
Для начала освойте Lua Manual, также есть в сети отличная книга "Programming in Lua".
Кажется понял. Спасибо! Так и сделаю.

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

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

Цитата:
Вариант 1.
Из меню CtrlF12 по нажатию Enter и LMB запускается.
 
Вариант 2.
Из меню CtrlF12 по Enter и LMB макрос (action()) не выполняется, только по Key.

Интересно, в какой документации написано, что из меню CtrlF12 должны запускаться макросы? Если вы их специально повесите туда, они запустятся (как нам уже продемонстрировал Angel_Ka).

Цитата:
Второй момент - если BRS объявить локальной (вместо BRS, local BRS) и она используется в Compare(), объявленной вне тела макроса (выше него), то она невидна, хотя Compare() вызывается в макросе ниже - в Panel.LoadCustomSortMode(....) - это тоже правильно и не излечимо?

Здесь вы демонстрируете пробел в вашем знании Lua.
 
Я уже кажется вчера говорил, что при наличии времени возможно кое-что усовершенствую. Несмотря на то, что на данный момент всё достижимо уже имеющимися средствами, только не совсем элегантно.

Всего записей: 862 | Зарегистр. 09-03-2012 | Отправлено: 18:09 07-03-2016 | Исправлено: shmuz, 18:11 07-03-2016
Alexyz21

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

Цитата:
Если вы их специально повесите туда, они запустятся (как нам уже продемонстрировал Angel_Ka)

В приведённом мною примере специально и показано их "вывешивание" - Panel.LoadCustomSortMode() до тела Macro{}. Для запуска по Enter и MsLClick приходится использовать
Код:
condition = function(key) return Area.Shell and key==Key or Area.Menu and Menu.Id==MenuGuid and Menu.Value:match(Desc2) and (key=="Enter" or key=="MsLClick") end;

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

Всего записей: 1364 | Зарегистр. 16-06-2007 | Отправлено: 18:40 07-03-2016 | Исправлено: Alexyz21, 18:43 07-03-2016
shmuz

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

Цитата:
В приведённом мною примере специально и показано их "вывешивание" - Panel.LoadCustomSortMode() до тела Macro{}.

"До тела" или "после тела" никакого значения в вашем примере не имеет.

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

Эти пункты меню ведут себя полностью аналогично другим (не кастомным) пунктам меню и вообще любым пунктам меню. Ведут себя абсолютно штатно. Что там надо излечивать - ума не приложу.

Всего записей: 862 | Зарегистр. 09-03-2012 | Отправлено: 19:36 07-03-2016
Alexyz21

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

Цитата:
"До тела" или "после тела" никакого значения в вашем примере не имеет.

совершенно верно - главное вне тела макроса, в теле самого скрипта, тогда Panel.LoadCustomSortMode() инициализируется при загрузке.  
 

Цитата:
Эти пункты меню ведут себя полностью аналогично другим (не кастомным) пунктам меню и вообще любым пунктам меню.

Аналогично, это если не учитывать, что:
custom диалог по Enter и LMB не появится (т.е. action() не выполнится), если:
1. В Macro.area к области Shell не добавить Menu
2. В Macro.key к шоркату не добавить Enter и MsLClick
3. Не прописать соответствующий condition() со ссылкой на guid Menu
+ В теле action() нужно закрывать меню.

Всего записей: 1364 | Зарегистр. 16-06-2007 | Отправлено: 22:01 07-03-2016 | Исправлено: Alexyz21, 22:04 07-03-2016
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
Может я туплю, но: чем этот список отличается, например, при навеске макросов на прочие (не кастомные) пункты меню?

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

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

Цитата:
чем этот список отличается, например, при навеске макросов на прочие (не кастомные) пункты меню?

Вот это меня и заинтересовало - реакция на Enter и LMB разная, вместе с тем, явно в коде макроса не указано, что обработка Enter и LMB должна быть иной, потому неявное изменение обработки не есть правильно.

Всего записей: 1364 | Зарегистр. 16-06-2007 | Отправлено: 22:37 07-03-2016
shmuz

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

Цитата:
реакция на Enter и LMB разная

Как это разная? Если нажатие Enter или LMB вызывают макрос, то реакция определяется макросом.
(Давайте покороче, ибо мне это уже порядком надоело).

Всего записей: 862 | Зарегистр. 09-03-2012 | Отправлено: 22:45 07-03-2016
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Enter и LMB: Вариант №1 вызывают. Вариант №2 - НЕ вызывают из списка, вызываемого по CtrlF12. Вызывают только с бубном:
1. В Macro.area к области Shell добавить Menu  
 2. В Macro.key к шоркату добавить Enter и MsLClick  
 3. прописать соответствующий condition() со ссылкой на guid Menu  
 + В теле action() нужно закрывать меню.

Всего записей: 1364 | Зарегистр. 16-06-2007 | Отправлено: 22:51 07-03-2016 | Исправлено: Alexyz21, 22:53 07-03-2016
shmuz

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

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

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

Цитата:
и работают строго в соответствии с документацией

я рад за вас

Всего записей: 1364 | Зарегистр. 16-06-2007 | Отправлено: 23:04 07-03-2016
VictorVG2

Редактировать | Цитировать | Сообщить модератору
shmuz
 
Вопрос по реализации win.DeleteRegKey() в LuaMacro b563 если я правильно понял, то в данный момент функция win.DeleteRegKey() не поддерживает рекурсивное удаление ключей, например:
 
создаём [HKCU\Test\1\1\2] и выполняем lua:win.DeleteRegKey("HKLM","Test") результатом будет "0", но коли выполнить например: lua:win.DeleteRegKey("HKLM","Test\\1\\1\\2") результатом будет "1".  
 
С одной стороны вроде и разумно, а с другой при  чистке мусора можно не добраться до самого нижнего уровня рекурсии, особенно коли это кто специально сделал. Уже видел пару раз подобные художества с эффектом стремящимся к локальной реализации DOS-атаки. Чистится правда просто, хотя и долго - удаляется вся вложенная ветка, но это ещё надо отыскать куда сию пакость вписали и всё одно с одной я пару часов провозился только удаляя подветки.  
 
Я глянул по MSDN - есть вариант с вызовом RegEnumKeyEx() вроде разумный, но если встретится случай типа моих, то работы будет много...
 
По идее может добавить в функцию дополнительный ключ режима отвечающий за переключение режима удаления Recursive=On|Off или пока не стоит это делать?
 
 

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VictorVG2
Эта функция - простая обёртка над функцией Windows RegDeleteKeyExW. Та не делает рекурсии - значит и эта тоже. Но рекурсию можно устроить, написав обёртку уже на Lua (должно быть несложно).
 
Вообще эти функции в LuaFAR - сугубо вспомогательные, просто для удобства. Основная роль LuaFAR - это использование из Lua FAR API, а не Windows API. Для биндингов Windows API на Lua есть ряд сторонних библиотек в Интернете, которые можно поставить и пользоваться.

Всего записей: 862 | Зарегистр. 09-03-2012 | Отправлено: 23:31 07-03-2016 | Исправлено: shmuz, 23:31 07-03-2016
VictorVG2

Редактировать | Цитировать | Сообщить модератору
shmuz
 
Понял. В принципе я так и думал, да и задача удаления поддерева ключей Реестра решается кучей инструментов, так что механизм её реализации выбирается по месту.
 
Добавлено:
Тут я больше для себя уточнял правильно ли я понимаю что данная функция выполняет одну операцию удаления нижнего ключа дерева за вызов.

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
Сделал простую скрипт-куклу в которой Enter и LMB из списка CtrlF12 не работают, работает только Key.

Код:
local Desc = "Custom: Test"
local Key = "CtrlShiftF3"
local function Compare(p1,p2) return 0 end
 
Panel.LoadCustomSortMode(115,{Description = Desc; Indicator = "!?"; Compare = Compare})
 
Macro {
  description = Desc; area = "Shell"; key = Key;
  action=function() msgbox("","Yes!") end;
}
 
Жмём Key - бокс с "Yes!" есть, жмём из списка Enter'ом или LMB - бокса нет.

Всего записей: 1364 | Зарегистр. 16-06-2007 | Отправлено: 00:14 08-03-2016
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
Простите, но вы демонстрируете удивительное непонимание системы.
Где, в какой доке сказано, что если вы вешаете макрос в области Shell на какой бы то ни было ключ, то при нажатии Enter в меню выбора сортировки должен запуститься этот макрос?
 
Добавлено:
VictorVG2
Вот функция, делающая рекурсивное удаление. Поместите это в какой-либо макрофайл (можно отдельный), рядом с другими макрофайлами и перезагрузите макросы. Это пример того, как можно легко получить нужную функциональность прямо на Lua, без изменений в LuaFAR.
 

Код:
ФУНКЦИЯ УДАЛЕНА

 
UPDATE: ЭТА ФУНКЦИЯ СОДЕРЖИТ ГРУБУЮ ЛОГИЧЕСКУЮ ОШИБКУ. НЕ ПОЛЬЗУЙТЕСЬ ЕЮ. ОНА МОЖЕТ ПОВРЕДИТЬ СОДЕРЖИМОЕ РЕЕСТРА WINDOWS.

Всего записей: 862 | Зарегистр. 09-03-2012 | Отправлено: 00:38 08-03-2016 | Исправлено: shmuz, 09:44 08-03-2016
VictorVG2

Редактировать | Цитировать | Сообщить модератору
Alexyz21
 
Вопросик на засыпку:
 
- есть две независимых плоскости событий А и Б;
- есть два события А1 и Б1 которые могут происходить независимо;
- есть находящийся вне этих плоскостей наблюдатель С который расположен так, что одновременно видит обе плоскости А, Б и происходящие там события А1, Б1;
- наблюдатель С видит что одновременно произошли события А1 и Б1.  
- наблюдатель Д не видит и ничего не знает о А и Б, но может видеть следы А1 и Б1
 
Вопрос Д - Каким образом событие А1 вызвало событие Б1?

 
P.S.
 
Кстати похожий вопрос о взаимодействии независимых на момент совершения событиях и их реконструкции по наблюдаемым следам рассматривается в рамках квантовой физики и теории струн.
 
Добавлено:
shmuz
 
Огромное спасибо! Наверняка пригодится!

Отправлено: 00:56 08-03-2016 | Исправлено: VictorVG2, 00:58 08-03-2016
Alexyz21

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
Ну раз не должен, значит не должен.

Всего записей: 1364 | Зарегистр. 16-06-2007 | Отправлено: 01:15 08-03-2016
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VictorVG2
Я дико извиняюсь, удалите эту "рекурсивную" функцию, она ошибочна и опасна! Не запускайте её!
(Я уже выключил комп и пошёл спать, когда понял это. Пришлось включить снова).

Всего записей: 862 | Зарегистр. 09-03-2012 | Отправлено: 01:21 08-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.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru