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

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

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

Maz (15-01-2020 17:38): FAR Manager (часть 6)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 200

   

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Предыдущие топики:  1 2 3 4
 
Где взять последнюю версию?
На странице загрузки скачайте MSI-инсталлятор стабильной сборки нужной вам разрядности (32 или 64 бита) или дистрибутив в виде 7z-архива и установите/распакуйте в любую папку (FAR портабелен и может работать без установки).
Там же на свой страх и риск можно взять наиболее свежую "ночную" сборку (в ночных сборках устраняются выявленные недоработки, добавляются новые функции, но могут содержаться и серьёзные ошибки).
Архив всех предыдущих ночных сборок FAR
Last release на github - собирается практически сразу (в течение получаса) после каждого коммита.
 
Общие сведения о совместимости 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, иначе плагин не будет загружен.
* Блондинку на скриншоте зовут Tommie Jo.

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

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

Всего записей: 36387 | Зарегистр. 26-02-2002 | Отправлено: 18:55 23-11-2017 | Исправлено: Victor_VG, 10:00 09-09-2019
Victor_VG



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

Цитата:
А нельзя ли сделать так, чтобы меню, формируемое в макросе командой Menu.Show(), имело бы тот же гуид, что и макрос?

Не имеет смысла - GUID это уникальный идентификатор конкретного объекта, и если у двух и более объектов они совпадут, а при реализации этой идеи будет куча близнецов, то как их различить?

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 12:04 30-10-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks
Сделать возможно. Например, в функции far.InputBox, если вместо GUID передать nil, то будет подставлен GUID плагина.
 
Victor_VG
Различать возможно: гуиды одинаковые, но типы объектов разные.

Всего записей: 1234 | Зарегистр. 09-03-2012 | Отправлено: 12:25 30-10-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
 
Хорошо. Проиллюстрирую на практике. Сделал я себе 2 примитивных макроса для упрощения обращения с диалоговым режимом макроса ClickToTitleDir — переход к папкам по щелчку на заголовке панели:

Код:
local uid="00000000-0000-0000-0000-000000000000"
 
Macro {
  description="переходы влево в меню правого клика";
  area="Menu"; key="CtrlLeft";
  id="087FAE66-9D25-4BFF-9950-DC65152DD5D4";
  condition=function() return Menu.Id==uid end;
  action=function()
    Keys("Home Enter")
  end;
}
 
Macro {
  description="переход вправо в меню правого клика";
  area="Menu"; key="CtrlRight";
  id="D1AA3BCB-B69D-4A17-8808-73379E23DCA0";
  condition=function() return Menu.Id==uid end;
  action=function()
    Keys("Enter")
  end;
}

И мне хотелось бы, чтобы эти макросы работали бы только в целевых меню. Но у этих меню практически отсутствует идентификатор.

Всего записей: 360 | Зарегистр. 26-06-2016 | Отправлено: 12:26 30-10-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks
Напишите в теме ClickToTitleDir пожелание, чтобы вместо Menu.Show использовали far.Menu и задавали уникальный GUID для каждого меню.

Всего записей: 1234 | Зарегистр. 09-03-2012 | Отправлено: 12:48 30-10-2019
Victor_VG



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

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 13:08 30-10-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Если в макросе более одного меню/диалога, то да, вы правы. Если же только одно, и оно имеет тот же GUID, что и макрос, то нет проблем.

Всего записей: 1234 | Зарегистр. 09-03-2012 | Отправлено: 13:13 30-10-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Вот в том-то и дело, что даже предельно упрощенная ситуация "один макрос - одно меню" это частный случай, а в общем макрос может выводить несколько меню и мы получаем проблему близнецов.
 
В принципе, мы можем дополнить идею "GUID меню - совпадает с GUID выводящего его макроса/скрипта" так "Для однозначности идентификации меню и их сопоставления с источником каждое из них идентифицируется GUID источника и текущим значением счётчика числа выведенных источником меню", а текущее значение счётчика может возвращать menu.Show(). Так мы гарантировано решим проблему близнецов и получим способ однозначного сопоставления пары "меню - источник".

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 13:27 30-10-2019 | Исправлено: Victor_VG, 13:36 30-10-2019
shmuz

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

Цитата:
даже предельно упрощенная ситуация "один макрос - одно меню" это частный случай

Согласен, частный случай. Однако это самый типичный случай, гораздо более распространённый, чем макросы, в которых несколько диалогов/меню.

Всего записей: 1234 | Зарегистр. 09-03-2012 | Отправлено: 13:36 30-10-2019
citPiks



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

Цитата:
Напишите в теме ClickToTitleDir пожелание

Сделал.

Всего записей: 360 | Зарегистр. 26-06-2016 | Отправлено: 13:51 30-10-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Скорее типичный для нереентерабельных ("одновходовых", новая задача - новая копия ) кодов. В случае реентерабельного ("параллельно-входовой", одна копия - множество параллельно использующих её задач) кода вероятность возникновения парадокса близнецов по мере роста параллелизма использования асимптотически стремится к единице, и даже в реенфлешном (повторно-входовом, одна копия - очередь задач) коде, вероятность получения проблемы близнецов хотя и не стремится к единице, но значительно выше нуля.
 
Просто я с такой задачей ещё в 84-м разбирался для системы виртуализации майнфрейма и тогда решение в виде "ИД задачи, счётчик" влезло в сотню строк на ассемблере вместо почти двухсот строк на PL/1 или четырёхсот строк C требовавшихся для различения объектов по их свойствам. А на Algol-е так и вовсе простыня на несколько тысяч строк выходила.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 14:07 30-10-2019
destiny_child



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
насчет стнд. вроде плагина "Просмотр Сети".
 
Когда я его открываю - идет доооолгий анализ сети и не показывается ни один из 10 компов рядом.
Все они в одной сети, в одной раб.группе. Видят друг друга в своих сетевых проводниках. Заходят друг на друга. Вопроса с доступом нет короче - всё гуд. причем это виндовз машины с солянкой из версий винды. И XP и 7 и 10 и 2008....
Но этот плаг не видит НИ название рабочей группы, НИ сами компы.
Если я потом сделаю выход на уровень выше - то получаю 4 записи: Microsoft Terminal Services, Microsoft Windows Network, Web Client Network, Избранное.
В первое могу войти и увидеть пустоту. Во второе не могу зайти - "не найдено сетевое имя." - после ооочень долгой паузы, в третье не могу зайти - "не найдено сетевое имя." - но очень быстро, за пару секунд. В четвертое могу войти и увидеть пустоту.
 
кто виноват и что делать?

Всего записей: 1172 | Зарегистр. 01-04-2006 | Отправлено: 17:59 30-10-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child
 
Вчера эту петрушку прибил. Была. Не знаю почему (мы с KLASS не поняли), но у меня почему-то переименовался сетевой принтер. И это ставило на уши всю сеть. Устранил сбросом параметров стека командой (от админа с последующим ребутом оси) netsh int ip reset и переименованием принтера на роутере.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 19:54 30-10-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В процессе работы над новой версией IntChecker.Run.lua у меня вылез затык. Что-то не получается получить факт нажатия клавиши на KBD через win.ExtractKey()/win.ExtractKeyEx()/mf.akey(1) например такой тест возвращает nil,nil  на экран:

Код:
local kb,k ="";
kb = win.ExtractKey()
for j=1,40000 do
 k = win.ExtractKey()
  if k == "Esc" then break end
end
far.Show(k,kb)

- skipik справедливо озадачил в ходе бета тестирования chex() вопросом - "А как прервать счёт если в каталоге куча файлов и операция становится слишком длительной?".  
 
Я пытался вставить в цикл вызов win.ExtractKey() с целью поймать факт нажатия Esc/Break/Pause и выдать break в теле цикла, но как я понимаю ни win.ExtractKey()/win.ExtractKeyEx()/mf.akey(1) в этом случае KBD не опрашивают (?) и мне придётся искать иное решение, например выносить за цикл таймер, в цикле опрашивать его "сработал?" и если он сработает выводить мессадж бокс с кнопками по которым и принимать решение.  
 
Пока иных идей сколько не возился придумать не смог. Саму функцию сделал, и она стала универсальной позволяя решить те задачи которые chashex() в принципе не могла решить, и сделал чтобы она работала в ситуациях типа "на панели есть выделенные файлы и каталоги, посчитать только их, остальные игнорировать", "на панели есть подкаталоги, обработать только файлы, каталоги игнорировать" что позволит избежать раздутия кода и зоопарка функций, но вот как прервать длинный по времени счёт пока не придумал.  
 
Проблема в том, что время счёта хэша для произвольного файла в общем случае величина случайная, а потому прерывание счёта по тайм-ауту чревато ошибкой, а в худшем случае можно и не завершить счёт. Это как карты лягут...

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 17:42 03-11-2019
shmuz

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

Цитата:
if k == "Esc"

Правильно if k == "ESCAPE"

Всего записей: 1234 | Зарегистр. 09-03-2012 | Отправлено: 18:26 03-11-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Понял. Сейчас прибор дочиню (от времени пайки сгнили, паяльник греется) и использую. А то я по привычке "Esc" в код вставлял, а этот вариант мне и в голову не приходил. В итоге вылетал диалог прерывания, жмёшь ОК, а счёт идёт дальше - цикл-то не досчитался до конца.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 19:10 03-11-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В chex() прервать цикл не получается. Буду думать дальше.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 21:54 03-11-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Если цикл перебирает множество файлов, и после вычисления хэша файла стоит if win.ExtractKey()=="ESCAPE" then break end, то должен нормально прерываться (но не в процессе вычисления хэша текущего файла, а перед началом вычисления следующего).

Всего записей: 1234 | Зарегистр. 09-03-2012 | Отправлено: 22:14 03-11-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Уже думал, но ещё и сам плагин перехватывает нажатие ESC и выводит свой запрос на прерывание счёта, и что бы там оператор не нажал, ESC уже обработан, сам плагин в ОЗУ, вот я и думаю что стоит повесить прерывание цикла на BS - по ней то же сложно промахнутся, а плагин её игнорирует - чем не вариант?

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 22:44 03-11-2019 | Исправлено: Victor_VG, 22:58 03-11-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Похоже тут первопричина - при своём первом вызове IntChecker2 перехватывает очередь ввода консоли и остаётся резидентом в ОЗУ до выгрузки или завершения сессии фар-а, а выгружать и снова запускать его его каждый раз накладно выйдет. Вот функция CheckEsc() которую он использует:
./source/Utils.cpp

Код:
bool CheckEsc()
{
    DWORD dwNumEvents;
    _INPUT_RECORD inRec;
 
    HANDLE hConsole = GetStdHandle(STD_INPUT_HANDLE);
    if (GetNumberOfConsoleInputEvents(hConsole, &dwNumEvents))
        while (PeekConsoleInput(hConsole, &inRec, 1, &dwNumEvents) && (dwNumEvents > 0))
        {
            ReadConsoleInput(hConsole, &inRec, 1, &dwNumEvents);
            if ((inRec.EventType == KEY_EVENT) && (inRec.Event.KeyEvent.bKeyDown) && (inRec.Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE))
                return true;
        } //while
 
        return false;
}

потому у меня и не проходит прерывание цикла - клавиатурный ввод не доходит до win.ExtractKey() или её аналогов. Прямо хоть мастери прерывание мышкой. Можно, но выйдет забавно. Думаю, что разумнее было бы если б плагин когда он вызван из макроса командой gethash проверял очередь только в процессе счёта, а после отключался от неё. Похоже стоит вишь написать, но я пока не совсем уверен в правильности этого решения...
 
Добавлено:
Или добавить в CheckEsc() проверку команды типа Break? Чтобы плагин получив её считал что ему Esc нажали? Пока не понятно как, но прерывать плагин надо...
 
Добавлено:
Описал проблему на баг-трекере плагина - Проблема с прерыванием плагина при вызове из цикла. Причина в CheckEsc() Issues #23, у себя конечно возможность прерывания оставлю, но в данный момент это "штаны на вырост"...

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 25487 | Зарегистр. 31-07-2002 | Отправлено: 09:52 04-11-2019 | Исправлено: Victor_VG, 10:42 04-11-2019
reversecode



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
разработчики а зачем фар при удалении файла берет под себя столько памяти ?
 
вот есть у меня одна директория с вложенными папками и файлами
гига на 2
я запускаю поиск файлов  с определенным расширением по это директории
он находит около 12 тыс файлов
жму показать в панеле
и дальше их помечаю все через INS
и жму удалить
фар удаляет ок
но жрет около 70% CPU
и держит 1.4 Гига памяти
 
чем ближе к финалу память он наоборот не уменьшает а набирает
уже 1.7 Гига
хорошо что не експотенциально набирает а оочень медленно
 
закончит отпишу освободил память
или продолжит держать
 
Добавлено:
рост памяти остановился на 2 гигах когда закончилось удаление
но она не освобождалась и использование CPU тоже держалось до 65%
пока не перешел из temporary панели, в которую перешел перед удалением  
в обычную панель папки диска

Всего записей: 1717 | Зарегистр. 06-03-2008 | Отправлено: 00:06 05-11-2019
   

Страницы: 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 200

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)
Maz (15-01-2020 17:38): FAR Manager (часть 6)


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru