LuaFAR for Editor

Здесь можно обсудить ваш любимый плагин.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaFAR for Editor

Post by John Doe »

Здесь можно обсуждать плагин LuaFAR for Editor.

Анонс: http://forum.farmanager.com/viewtopic.p ... 412#p36412

Скрипты и пакеты:
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Большое спасибо.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

Исправлена неправильная сортировка вертикальных блоков. :(

http://luaforge.net/frs/download.php/38 ... _0.2.1.zip
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Shmuel, а есть ли возможность повесить вызов lua-функции на хоткей минуя вызов меню? Или это из области фантастики?
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

при попытке вызвать os.popen('dir') плагин вылетает.
Т.к. я запускаю фар из под wine, я не знаю чья это ошибка, а возможности проверить под виндой у меня нет. Так что извините, если ложная тревога (:
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote:Shmuel, а есть ли возможность повесить вызов lua-функции на хоткей минуя вызов меню? Или это из области фантастики?
Нет, это реально, просто я думал, что раз можно сделать макросами Фара, то не стоит делать в плагине. Подумаю. :)
maxdrfl wrote:при попытке вызвать os.popen('dir') плагин вылетает.
Т.к. я запускаю фар из под wine, я не знаю чья это ошибка, а возможности проверить под виндой у меня нет.
Во-первых, io.popen, а во-вторых красный мессидж об ошибке ещё не означает, что плагин вылетел. Что конкретно у тебя означает "плагин вылетает"?

Code: Select all

local f = io.popen("dir")
local s = f:read("*all")
f:close()
far.Message(s,nil,nil,"l")
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Shmuel wrote:
maxdrfl wrote:при попытке вызвать os.popen('dir') плагин вылетает.
Т.к. я запускаю фар из под wine, я не знаю чья это ошибка, а возможности проверить под виндой у меня нет.
Во-первых, io.popen, а во-вторых красный мессидж об ошибке ещё не означает, что плагин вылетел. Что конкретно у тебя означает "плагин вылетает"?

Code: Select all

local f = io.popen("dir")
local s = f:read("*all")
f:close()
far.Message(s,nil,nil,"l")
1) да, io. Это я в форуме опечатался.
2) вылетает сразу, на строчке local f = io.popen("dir").
3) Вылетает --- это значит exception in lf4ed_emb.dll. Access violation.
Есть лог, но боюсь что это связано с wine, т.ч. нет смысла разбираться.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote: 2) вылетает сразу, на строчке local f = io.popen("dir").
3) Вылетает --- это значит exception in lf4ed_emb.dll. Access violation.
Есть лог, но боюсь что это связано с wine, т.ч. нет смысла разбираться.
У меня в XP - работает. Проверил на Windows 98 - не работает. Так что, io.popen - не вполне надёжная штука.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

А если я добавляю два пункта меню, ссылающиеся на один файл

Code: Select all

AddToMenu("Item1","file.lua","function1")
AddToMenu("Item2","file.lua","function2")
Файл зачитывается два раза или один?
Shmuel wrote:У меня в XP - работает. Проверил на Windows 98 - не работает. Так что, io.popen - не вполне надёжная штука.
Можно в принципе заменить на такую конструкцию:

Code: Select all

os.execute('dir>dir.out')
local f=io.open('dir.out')
f:read('*a')
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote:А если я добавляю два пункта меню, ссылающиеся на один файл

Code: Select all

AddToMenu("Item1","file.lua","function1")
AddToMenu("Item2","file.lua","function2")
Файл зачитывается два раза или один?
При формировании меню - ни разу. При исполнении любого из этих пунктов меню - файл будет загружаться каждый раз. Это удобно для отладки.
maxdrfl wrote:Можно в принципе заменить на такую конструкцию:

Code: Select all

os.execute('dir>dir.out')
local f=io.open('dir.out')
f:read('*a')
Можно. Есть и другие варианты, связанные с добавлением соответствующих функций в LuaFAR, либо с использованием внешних библиотек.
pult
Posts: 23
Joined: Tue 11 Apr, 2006 16:31
Location: Kyiv
Contact:

LuaFAR for Editor

Post by pult »

А как то можно обрабатывать пустые значения в колонках при сортировке ф-циями C NC ?
Vadim
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

pult wrote:А как то можно обрабатывать пустые значения в колонках при сортировке ф-циями C NC ?
Думаю, что можно. Покажи пример данных (хотя бы три строчки) и скажи, какая сортировка нужна.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote:а можно путь к плагину добавить в package.path? А то если макрос разбит на несколько файлов, их приходится перемещать в %farhome%\lua.
Вижу на данный момент три способа (сам пользуюсь первым из них):
1-й способ:
-- прописать в переменной окружения LUA_INIT файл, в котором устанавливаются package.path/package.cpath.
-- в одной из папок, прописанных в package.path создать подпапку far2, куда и помещать все фаровские луа модули
-- в луа скриптах делать так: require "far2.module_name"

2-й способ:
-- положить в %FARHOME% файл luafar_init.lua. LuaFAR запускает этот файл один раз при инициализации каждого "своего" плагина. В этом файле можно играться с package.path/cpath.

3-й способ:
-- тот, что ты применил.
Last edited by Shmuel on Tue 02 Dec, 2008 08:31, edited 1 time in total.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

ок, спасибо.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote:а можно путь к плагину добавить в package.path? А то если макрос разбит на несколько файлов, их приходится перемещать в %farhome%\lua.
Ещё один способ, но хакерский: в начале скрипта (выше любого require) вставить следующий кусок:

Code: Select all

if not far["package.path.modified"] then
  local path = far.PluginStartupInfo().ModuleName:match(".+[/\\]")
  package.path = path .. "?.lua;" .. package.path
  far["package.path.modified"] = true
end
Post Reply

Return to “Обсуждение плагинов”