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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

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, не удалось, то задаёте вопрос разработчикам.

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

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



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ndch
 
Это микс релиз для Far3 и Far2 одновременно. Из веток master (Far2) и Far3. А в дистрибутиве, как и у меня код из Far3, а там есть отличия на уровне Plugin SDK, ну и коли исхитрится, можно ещё кое что прикрутить.
 
А по поводу аккаунта - на ЯД надо логонится, и нетбокс это делает сам, а не через браузер. Без логона ЯД просто рвёт соединение этим всё кончается.

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

Всего записей: 24479 | Зарегистр. 31-07-2002 | Отправлено: 12:25 17-10-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Продолжая экспериментировать с макросами навигации по панели вслепую, я нашёл удобный для себя способ делать перемещения одной рукой (располагая пальцы не от клавиши j/О, а от f/А). И составил подходящие этому способу макросы, заодно попробовав применить таблицу.  
 
При этом, сколько я не возился, но так и не нашёл способа расположить в таблице 4 переменные (и, соответственно, извлекать их) и поэтому пока что получились-таки мои макросы всё же несколько экзотичными, с определёнными недостатками в оформлении. А именно: во-первых, позиции исполняемых команд и description-описания данных макросов сгруппированы в одно целое (переменная kmd), а хотелось бы указывать их раздельно (kmd и des). И, во-вторых, получается, что у этих макросов нет идентификаторов-гуидов. Или можно так трактовать, что все 15 макросов идут под одним и тем же идентификатором? Но это, кажется, было бы ещё хуже, чем не иметь гуидов вовсе.  
 
По возможности, подскажите, пожалуйста, как можно составить таблицу, чтобы можно было бы извлекать из неё 4 сопряжённые переменные, соответствующие: ключу — key, команде, исполняемой по этому ключу — kmd, описанию данного конкретного макроса — des и его гуиду — uid?  

Код:
local couples = {
  ["LAltE"] = "Home прыгатьВпанелиПравымУКАЗАТЕЛЬНЫМпо'&E'",
  ["LAltC"] = "End прыгатьВпанелиПравымУКАЗАТЕЛЬНЫМпо'&C'",
  ["LAltD"] = "Left перейтиНа1позициюЛевееПравымУКАЗАТЕЛЬНЫМпо'&D'",
  ["LAltF"] = "Right перейтиНа1позициюЛевееПравымУКАЗАТЕЛЬНЫМпо'&F'",
  ["LAltR"] = "Up перейтиНа1позициюВышеПравымУКАЗАТЕЛЬНЫМпо'&R'",
  ["LAltV"] = "Down перейтиНа1позициюВышеПравымУКАЗАТЕЛЬНЫМпо'&V'",
  ["LAltT"] = "Ins пометитьСнятьПометкуСобъектаПравымСРЕДНИМпо'&T'",
  ["LAltG"] = "Multiply инвертироватьПометкуВпанелиПравымСРЕДНИМпо'&G'",
  ["LAltB"] = "Up Ins Up пометитьСнятьПометкуСобъектаВобратнуюСторонуПравымСРЕДНИМпо'&B'",
  ["LAltY"] = "Add пометитьЭлементыГруппыПравымБЕЗЫМЯННЫМпо'&Y'",
  ["LAltN"] = "Subtract снятьПометкуСгруппыПравымБЕЗЫМЯННЫМпо'&N'",
  ["LAltU"] = "MsWheelDown Up прокруткаТекущейПозицииВверхПравымМИЗИНЦЕМпо'&U'",
  ["LAltM"] = "MsWheelUp Down прокруткаТекущейПозицииВнизПравымМИЗИНЦЕМпо'&M'",
  ["LAltK"] = "PgUp листатьВпанелиПравымМИЗИНЦЕМпо'&K'",
  ["LAltL"] = "PgDn листатьВпанелиПравымМИЗИНЦЕМпо'&L'",
} for key,kmd in pairs(couples) do
Macro {
  description=kmd; area="Shell"; key=key; id="57E1963D-4FE8-4B9A-89AD-19E9229DCE6B";
  condition=function() return APanel.Visible end;
  action=function() Keys(kmd) end;
} end

Всего записей: 325 | Зарегистр. 26-06-2016 | Отправлено: 11:46 18-10-2019 | Исправлено: citPiks, 11:48 18-10-2019
shmuz

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

Код:
local list = {
  {key="...", kmd="...", des="...", uid="..."},
  ....
  {key="...", kmd="...", des="...", uid="..."},
}
 
for _,m in ipairs(list) do
Macro {
  description=m.des; area="Shell"; key=m.key; id=m.uid;
  action=function() Keys(m.kmd) end;  
}
end

Как-то так.
Можно для укорочения использовать не именованные поля таблиц, а позиционные, хотя будет не так наглядно:

Код:
local list = {
  {"...", "...", "...", "..."},
  ....
  {"...", "...", "...", "..."},
}
 
for _,m in ipairs(list) do
Macro {
  description=m[3]; area="Shell"; key=m[1]; id=m[4];
  action=function() Keys(m[2]) end;  
}
end


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



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

Всего записей: 325 | Зарегистр. 26-06-2016 | Отправлено: 13:43 18-10-2019
shmuz

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

Цитата:
я понял в чём была моя оплошность при попытках самостоятельно составить подобные таблицы. Теперь я вижу, что не различал именованный и позиционный варианты таблиц

Основная причина, почему у вас не получалось, это то, что вы не использовали вложенные таблицы (то есть таблицы внутри главной таблицы).

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



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

Цитата:
вы не использовали вложенные таблицы (то есть таблицы внутри главной таблицы)

Точно. Спасибо!

Всего записей: 325 | Зарегистр. 26-06-2016 | Отправлено: 14:09 18-10-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Неожиданный подводный камень:
 

Код:
  local dc,dr,dl,f0,f1,p,s0 = 0,far.GetDirList(APanel.Path),{},0,0,APanel.Path,"";
     for j = 1,#dr do
     dl[j] = dr[j].FileName
      if not win.GetFileAttr(dl[j]):find("d") then
        s0 = s0..dl[j]:sub(#p + 2).."\n" -- write all file record
        f0 = f0 +1 -- increment files counter
       if Panel.Item(0,j,8) then
        s0 = s0..dl[j]:sub(#p + 2).." Selected: "..tostring(Panel.Item(0,j,8)).."\n"
        f1 = f1 +1 -- increment selected files counter
       else
        s0 = s0.." Selected: "..tostring(Panel.Item(0,j,8)).."\n" -- item not selected, then skip record
       end
      end;
     end;
     dc = #dr - f0
  far.Show("Dir count: "..dc.." / ".."File count (all/selected): "..f0.."/"..f1,s0.."\n")

И вот что мы видим на скриншотах:  
 

 

 
у нас на панели только два файла выделены, а в строке статистики их аж 18, а если в операторе if в блоке else убрать    
 

Код:
   .." Selected: "..tostring(Panel.Item(0,j,8))


Код:
       else
        s0 = s0.." Selected: "..tostring(Panel.Item(0,j,8)).."\n" -- item not selected, then skip record

то счётчик насчитает 19 выбранных файлов - добавится и файл под курсором!  
 
Выходит, что 16  - 17 файлов лишних.  
 
И кроме того вверху мы видим, что все файлы из подкаталогов ./1 и ./Far оказались перечислены вверху листинга без своих каталогов, а мы уверены что их там не будет так как они же не выбраны.
 
Писание в отношении Panel.Item() устарело, а мне придётся придумать способ обойти сей эффект иначе сбоит уже chex().
 
Добавлено:
Проблема локализуется в связке far.GetDirList() и Panel.Item(0,0,8):
 
Panel.Item(0,0,8) вызываемая в цикле при наличии for
 
  local dr,dl = far.GetDirList()(APanel.Path),{}
 
неожиданно вытаскивает на уровень текущего каталога все файлы из вложенных
 

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

Всего записей: 24479 | Зарегистр. 31-07-2002 | Отправлено: 16:31 18-10-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Ваш скрипт, уже при беглом взгляде, некорректен:
 
1. Вы проходите в цикле все найденные файлы/папки, включая вложенные (которые в подпапках). Это потому, что функция GetDirList() рекурсивно проходит по всем подпапкам.
2. Затем пользуетесь тем же индексом j при вызове функции Panel.Item(0,j,8). А эта функция нерекурсивная, работает только с указанной панелью без подпапок.
 
Например, функция GetDirList может вернуть таблицу с 1000 элементов, а в текущей папке элементов может быть, например, только 10.
 
Потом публикуете картинки, якобы доказывающие, что есть проблемы в функциях Фара.
Пожалуйста, публикуйте только те скрипты, которые у вас работают. Если каждый на форуме будет публиковать свои нерабочие скрипты с картинками, то это будет свалка мусора, а не форум.

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



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Ага, значит если я правильно понял идею, то нужно использовать отдельный индекс для выделенных элементов?

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

Всего записей: 24479 | Зарегистр. 31-07-2002 | Отправлено: 00:45 19-10-2019
shmuz

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

Цитата:
если я правильно понял идею, то нужно использовать отдельный индекс для выделенных элементов?

Я никаких идей не предлагаю, а просто показал вам, что скрипт некорректен. Я вообще не понимаю назначение этого скрипта.
 
Выделенные элементы могут быть только на панели, их не может быть во вложенных папках.
Вы используете far.GetDirList(), которая лезет во все вложенные папки.
Вы серьёзно считаете, что индекс элемента таблицы, возвращённой от far.GetDirList() можно передать в функцию Panel.Item(), и она по этому индексу вернёт информацию для того же элемента?
 
Короче, скрипт нерабочий, обсуждать пути его исправления на форуме неразумно.

Всего записей: 1105 | Зарегистр. 09-03-2012 | Отправлено: 01:41 19-10-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Вопросов нет. Понял где ошибся. Пойду дальше починять сломанное. Может на время и сгодится?

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

Всего записей: 24479 | Зарегистр. 31-07-2002 | Отправлено: 02:41 19-10-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Тем не менее, ваш скрипт инициировал билд 5490. Так что иногда "нет худа без добра".

Всего записей: 1105 | Зарегистр. 09-03-2012 | Отправлено: 18:41 19-10-2019
citPiks



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

Цитата:
Panel.Item(X,Idx,8) и Panel.Item(X,Idx,10) при невалидном Idx возвращали 0, теперь false

Если не сложно, поясните, пожалуйста, кратко, в чём практическое различие.

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks
Допустим в панели 10 элементов, а мы запросили некоторое свойство  для 125-го, то есть несуществующего. Раньше функция в этом случае всегда возвращала 0. Но свойства под номером 8 и 10 - логические (boolean), и при правильном индексе элемента возвращают false или true. Но в Lua значение 0 (как и любое другое число) при переводе в boolean даёт true. Поэтому

Код:
if Panel.Item(0,125,8) then

если функция возврашала 0 , было истинно. Теперь - ложно.

Всего записей: 1105 | Зарегистр. 09-03-2012 | Отправлено: 19:27 19-10-2019
citPiks



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

Цитата:
свойства под номером 8 и 10 - логические (boolean), и при правильном индексе элемента возвращают false или true. Но в Lua значение 0 (как и любое другое число) при переводе в boolean даёт true. Поэтому
 
Код:
if Panel.Item(0,125,8) then
 
если функция возврашала 0 , было истинно

Да. Так предельно ясно. Спасибо!

Всего записей: 325 | Зарегистр. 26-06-2016 | Отправлено: 19:44 19-10-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Отлично! Меньше неопределённость - меньше ошибок.
 


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

Всего записей: 24479 | Зарегистр. 31-07-2002 | Отправлено: 09:11 20-10-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
Victor_VG
 
Кстати, о цене простых математических ошибок.

Всего записей: 325 | Зарегистр. 26-06-2016 | Отправлено: 16:08 20-10-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
buniak_a_h
 
В ClickToTitleDir-1.2.11 при нажатии левой кнопкой на любом из слешей показывается меню с вложенными папками текущей папки. В 1.2.9 такого не было.

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



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks
 
Есть такое дело, встречался с подобным. Ладно, сейчас надо закоммитить наработанное, уточнить некоторые моменты в ТЗ и развивать IntChecker.Run.lua  строго в его рамках. Иначе впереди будет большой такой тупик и куча зряшных усилий на его преодоление.

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

Всего записей: 24479 | Зарегистр. 31-07-2002 | Отправлено: 13:05 21-10-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

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru