LuaFAR for Editor

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

LuaFAR for Editor

Post by John Doe » Wed 05 Nov, 2008 10:18

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

Анонс: viewtopic.php?f=11&t=3551&p=36412#p36412

Скрипты и пакеты:

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl » Wed 05 Nov, 2008 11:48

Большое спасибо.

Shmuel
Posts: 5037
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Re: LuaFAR for Editor

Post by Shmuel » Thu 06 Nov, 2008 05:57

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

http://luaforge.net/frs/download.php/38 ... _0.2.1.zip

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl » Thu 27 Nov, 2008 11:49

Shmuel, а есть ли возможность повесить вызов lua-функции на хоткей минуя вызов меню? Или это из области фантастики?

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl » Thu 27 Nov, 2008 12:05

при попытке вызвать os.popen('dir') плагин вылетает.
Т.к. я запускаю фар из под wine, я не знаю чья это ошибка, а возможности проверить под виндой у меня нет. Так что извините, если ложная тревога (:

Shmuel
Posts: 5037
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Re: LuaFAR for Editor

Post by Shmuel » Thu 27 Nov, 2008 13:11

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: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl » Thu 27 Nov, 2008 14:06

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: 5037
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Re: LuaFAR for Editor

Post by Shmuel » Thu 27 Nov, 2008 14:51

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

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl » Thu 27 Nov, 2008 14:57

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

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: 5037
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Re: LuaFAR for Editor

Post by Shmuel » Thu 27 Nov, 2008 15:27

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 » Mon 01 Dec, 2008 01:26

А как то можно обрабатывать пустые значения в колонках при сортировке ф-циями C NC ?
Vadim

Shmuel
Posts: 5037
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Re: LuaFAR for Editor

Post by Shmuel » Mon 01 Dec, 2008 07:09

pult wrote:А как то можно обрабатывать пустые значения в колонках при сортировке ф-циями C NC ?
Думаю, что можно. Покажи пример данных (хотя бы три строчки) и скажи, какая сортировка нужна.

Shmuel
Posts: 5037
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Re: LuaFAR for Editor

Post by Shmuel » Mon 01 Dec, 2008 09:21

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: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl » Mon 01 Dec, 2008 09:42

ок, спасибо.

Shmuel
Posts: 5037
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Re: LuaFAR for Editor

Post by Shmuel » Mon 01 Dec, 2008 12:39

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

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl » Mon 01 Dec, 2008 12:51

(:
не, это лишнее.

Post Reply

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

Who is online

Users browsing this forum: No registered users and 9 guests