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

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

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

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

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

Цитата:
Я так понимаю LFSearch предоставляет своё API и для создания пользовательских диалогов хитрого поиска, например челночного. Правда пока не вкурил как их строить - как мне показалось, они нетрадиционны  

Вот я уж точно не вкурил, о чём это. Любопытно было бы узнать.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 22:08 22-09-2019
Alexyz21



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

Цитата:
Любопытно было бы узнать

О чём? - О челночном поиске? - Например есть текстовой файл, нужно найти данные, лежащие рядом с аморфным Нечто:
1. Это Нечто встречается ОЧЕНЬ много раз и подавляющее большинство из них нам не нужно.
2. Это Нечто не описать разумным регэкспом, а безумный сожрёт все ресурсы, вынесет весь мозг и всё равно не найдёт все вхождения, либо найдёт много ложных.
3. Но всегда за этим Нечто далее по тексту на произвольной дистанции есть кнехты, которые уже могут быть описаны регэкспом. Рядом с кнехтом инфа, обработав которую можно получить регэксп-ориентировку для обратного поиска этого Нечто. Найдя Нечто, найдём рядом нужные нам данные.
 
Если предполагается искать данные не единожды, и не в одном подобном файле, то можно сделать подобающий диалог, использующий LFS в качестве движка.

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 08:37 23-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
В сегодняшней ночной сборке Вами помещены дополнения в LuaMacro:

Код:
shmuel 22.09.2019 10:55:23 +0200 - build 706
 
1. Add functions mf.serialize, mf.deserialize

и в "%FarHome%\Encyclopedia\macroapi_manual.ru.chm дана лаконичная справка по добавленным функциям.
 
А не могли бы Вы, если можно, привести пару тестовых макросов с шаблонами практического применения этих функций?

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 09:53 23-09-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
citPiks
На пару тестовых макросов нет времени.
Как пример, в последних опубликованных макросах Alexyz21 присутствуют таблицы наподобие

Код:
local Data={
  sSearchPat="<(/?".._G.LFSTag.Tag..")[ >]",
  sReplacePat="if T[1]==_G.LFSTag.Txt then _G.LFSTag.Num=_G.LFSTag.Num+1 elseif T[1]:match('%w+$')==_G.LFSTag.Tag then _G.LFSTag.Num=LFSTag.Num-1 end if _G.LFSTag.Num==0 then return true,true end",
  sRegexLib="pcre",
  bRegExpr=true,
  bSearchBack=_G.LFSTag.Txt~=_G.LFSTag.Tag,
  bRepIsFunc=true,
  bConfirmReplace=true,
  fUserChoiceFunc=function() return "cancel" end
}
 
Эти таблицы создаются в коде скрипта LF Search, а (как мне показалось) автор хотел их создавать в коде скрипта LuaMacro и передавать оттуда коду LF Search. Ф-ция Plugin.(Sync)Call аргументы-таблицы не разрешает, поэтому таблицу Data можно преобразовать в string  и передать одним из аргументов Plugin.Call:

Код:
-- LuaMacro
local strData = mf.serialize(Data)
Plugin.SyncCall(LFS_Guid,"code",Code,strData)
 
-- LF Search
local strData = select(1, ...)
local Data = loadstring(strData)()
lfsearch.EditorAction("test:replace",Data)  

 
Добавлено:
И тут есть подводный камень - функции не сериализуются, поэтому

Цитата:
fUserChoiceFunc=function() return "cancel" end  

придётся создавать в коде LF.Search.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 10:19 23-09-2019 | Исправлено: shmuz, 10:22 23-09-2019
Alexyz21



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

Цитата:
функции не сериализуются

Пока? - В гугле смотрел - есть сериализация разных входных структур

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 10:33 23-09-2019
shmuz

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

Цитата:
Пока? - В гугле смотрел - есть сериализация разных входных структур

Пока вы не сделаете, и гугл вам в помошь.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 10:35 23-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
test: - forever or temporary?

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 10:41 23-09-2019
shmuz

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

Цитата:
test: - forever or temporary?

Чрезмерная лаконичность приводит к ненужному пинг-понгу лишних сообщений. Постарайтесь без этого. Я не хочу отвечать, угадывая. что вы имели в виду.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 10:48 23-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В мане Operation="replace", ...
Мы сейчас используем "test:replace"

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 10:52 23-09-2019
shmuz

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

Цитата:
В мане Operation="replace", ...  

Десятком строчек ниже на той же странице есть test:replace.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 10:56 23-09-2019
Alexyz21



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

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 11:06 23-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
 
Благодарю Вас за пояснения функции сериализации mf.serialize(value)! Умозрительно данные пояснения вроде бы понятны. Но мне желательно было бы увидеть и практический рабочий пример действия функции. И поэтому я дождусь очередной версии макроса Alexyz21, в надежде подсмотреть пример там.

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 11:36 23-09-2019
shmuz

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

Цитата:
функции не сериализуются

Строго говоря, простые ф-ции без upvalues наподобие fUserChoiceFunc сериализуются штатными средствами (string.dump), и mf.serialize/deserialize можно модернизировать для поддержки этого. Подумаю на досуге.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 11:38 23-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Editor.TagsGotoBeginEnd.lua - добавлена поддержка закрывающего тега '/>', включение/отключение выделения переменной SelectFound в звголовке скрипта.
 
Если маэстро покритикует, буду рад. Не маэстро тоже может критиковать :)

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 12:30 23-09-2019 | Исправлено: Alexyz21, 14:18 23-09-2019
shmuz

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

Цитата:
Если маэстро покритикует, буду рад.

Спасибо за доверие, но я ни один из вашей последней серии скриптов (кроме самого первого) не читал и не брал себе на пробу. Причина - в банальной нехватке времени.
 
Добавлено:
Ну вот глянул:

Код:
local sReplacePat=mf.serialize([[
_G.LFSTag.Cnt=_G.LFSTag.Cnt+1
if not _G.LFSTag.Rev and T[2] and T[2]=='/>' and _G.LFSTag.Cnt==1 then _G.LFSTag.Num=0
elseif _G.LFSTag.Rev and T[1] and T[1]:sub(2,2)~='/' and _G.LFSTag.Cnt==1 then _G.LFSTag.Num=0
elseif T[1] and T[1]==_G.LFSTag.Txt then _G.LFSTag.Num=_G.LFSTag.Num+1
elseif T[1] and (T[1]:sub(2,2)=='/' and '<'..T[1]:sub(3,-1) or T[1])==_G.LFSTag.Tag then _G.LFSTag.Num=LFSTag.Num-1
end
if _G.LFSTag.Num==0 then return true,true end
]])  

Зачем сериализовать строку? В результате будет та же строка.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 12:47 23-09-2019 | Исправлено: shmuz, 12:51 23-09-2019
Alexyz21



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

Цитата:
Зачем сериализовать строку?

Она вкладывается в такую же [[...]] строку и если её не сериализовать, то работать не будет.

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 13:10 23-09-2019
shmuz

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

Цитата:
Она вкладывается в такую же [[...]] строку и если её не сериализовать, то работать не будет.


Код:
local Code=[==[
.... // сюда можно вкладывать литеральные строки типа [[...]]
]==]  

Разве вы не знаете про [=[, [==[ и т.д. ?

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



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

Цитата:
включение/отключение выделения переменной SelectFound в звголовке скрипта

Работает. Наверное, это полезно. Хотя снять выделение и элементарно, если это нужно, и по мне так само по себе выделение не мешает, а лишь помогает. Но наличие опции может кому то и понадобится ведь.

Цитата:
поддержка закрывающего тега '/>'

Когда курсор стоит на / (слеше) либо на > (закрывающей угловой скобке), то блок выделяется. Но если курсор стоит сразу за скобкой >_, то выделяются скобка и позиция курсора и всё. В этой ситуации, на мой взгляд, целесообразно было бы блок между тегами выделять. Поскольку ситуация, когда в строке нажимается End и курсор встаёт сразу за скобку, весьма обыденна.  
 
С началом строки перед скобкой это не так критично, поскольку по Home курсор устанавливается на саму открывающую скобку, а не перед ней.
 
И ещё, на мой взгляд, неплохо было бы выделять блок и из любой позиции когда курсор находится внутри, т.е. между открывающей и закрывающей скобками. Это собственно была бы полезная индикация блока.

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 13:46 23-09-2019 | Исправлено: citPiks, 13:52 23-09-2019
Alexyz21



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

Цитата:
Разве вы не знаете про [=[, [==[ и т.д. ?

иногда такое видел, но никогда не практиковал, теперь буду знать.
 
citPiks
поправил. И какой искать - тот, который слева, или тот, который справа? И как разобраться внутри мы тега, или между ними? - А если тег не на одну строку и загловок где-то выше? - Это целая эвристика нужна - не интересно. Хотя... )
 
Добавлено:
shmuz
глобальные переменные внутри плагинов, LFS например, живут ровно до отработки действия? Или они будут доступны при последующих запусках этого плагина из других скриптов вплоть до выгрузки плагина?

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 14:30 23-09-2019 | Исправлено: Alexyz21, 16:33 23-09-2019
shmuz

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

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

Настоящие глобальные (которые через _G) доступны вплоть до закрытия Фар.
Но есть "полуглобальные" - например в поле InitialCode диалога определено Cnt=0. Переменная Cnt будет жить до окончания текущей операции.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 16:36 23-09-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru