Page 7 of 8

Реализация Condensed View

Posted: Sat 11 Jun, 2016 15:50
by buniak_a_h

Latest post of the previous page:

sToLp
Спасибо.
sToLp wrote: Не очень понятен вопрос в части того, что значит "портится ли Фар".
Имел в виду - теряет функциональность. В частности, перестаёт грузить файлы в редактор.

Реализация Condensed View

Posted: Sat 11 Jun, 2016 20:38
by sToLp
buniak_a_h
А тут вот с дружественного ру-борда подсказывает Alexyz21, весьма опытный спец по макросам:
Редактор "вешается" из-за отсутствия определения local EditorsCondView = {}
Может данная подсказка поможет Вам как-то.

Реализация Condensed View

Posted: Sat 11 Jun, 2016 20:45
by buniak_a_h
sToLp wrote:buniak_a_h
А тут вот с дружественного ру-борда подсказывает Alexyz21, весьма опытный спец по макросам. Может данная подсказка поможет как-то.
Спасибо.
1. Для себя (потестю - выложу) я уже заменил [s]local EditorsCondView=nil[/s] на local EditorsCondView={}
2. Всё равно непонятно: следом идёт
if not local EditorsCondView then local EditorsCondView={} end

Реализация Condensed View

Posted: Sat 11 Jun, 2016 20:53
by buniak_a_h
Занёс в первый пост актуальную версию макроса.

Реализация Condensed View

Posted: Sat 11 Jun, 2016 21:21
by sToLp
buniak_a_h wrote: Занёс в первый пост актуальную версию макроса.
В Win10x64entRu Far 3.0.4700 x64 макрос работает нормально, без каких либо замечаний. Спасибо!

Реализация Condensed View

Posted: Sun 12 Jun, 2016 06:23
by buniak_a_h
Сорри, забыл выбросить тестовый макрос.... Исправил

Реализация Condensed View

Posted: Sun 12 Jun, 2016 09:10
by buniak_a_h
Добавил настройку "горячих" клавиш. Вызывается при сжатом режиме при повторном нажатии AltF4. Раньше повторное нажатие [b]AltF4[/b] выключало сжатый режим. В дальнейшем эту клавишу можно заменить.
Настройки хранятся в том же каталоге, где и файл с макросом, в файле с именем CondView.cfg. При отсутствии такового устанавливаются клавиши по умолчанию:
  • Включение «сжатого» режима [b]AltF4[/b]
    Выключение «сжатого» режима с возвратом на прежнюю позицию [b]F10 Esc[/b]
    Выключение «сжатого» режима с переходом на новую позицию [b]Enter[/b]
    Настройка «горячих» клавиш [b]AltF4[/b]

Реализация Condensed View

Posted: Sun 12 Jun, 2016 11:00
by John Doe
Некоторые соображения по использованию lua после беглого просмотра кода:
  1. Функцию Settings можно заменить на таблицу.
  2. В функции IsMacroActive код можно заменить на

    Code: Select all

    return ei and EditorsCondView[ei.EditorID]
  3. В функции ProcessEditorInput код можно заменить на
    if not EditorsCondView[EID] or EditorsCondView[EID].Ends then return end
  4. После end необязательно ставить точку с запятой
  5. В макросе "Condenced View" код на if ei then CondViewOn(ei, ei.EditorID) end (с nil сравнивать нет смысла, т.к. nil в условии равнозначен false)
    (возвращать значение из action смысла нет. вреда тоже нет, но кто знает, может быть в будущем эти значения будут как-то обрабатываться, на мантисе есть)
  6. В функции ProcessEditorEvent есть смысл использовать конструкцию elseif
  7. В функции ExitScript можно обойтись без переменных ei, EID
  8. В функции __tableFind можно обойтись без return false, т.к. (в данном случае) это равнозначно отсутствию возвращаемого значения
  9. В макросе "Condenced View - Escape" код можно заменить на if ei then CondViewOff(ei, ei.EditorID, false) end
    (и в "Condenced View - GoTo NewPos" аналогично)
  10. В определении "EditorEvent" условие condition лишнее
  11. Вместо table.maxn(EditorsCondView) можно использовать next(EditorsCondView)
    В данном случае не проблема, но например в Lua 5.2 этой функции уже нет
Это не ошибки, а просто для информации. Кое-где просто дело вкуса.

Реализация Condensed View

Posted: Sun 12 Jun, 2016 11:17
by buniak_a_h
John Doe
Спасибо, большинство замечаний я уже знаю (когда начинал, столкнулся с LUA впервые). Оставил (а) из-за привычки на Паскале (б) многие из Ваших замечаний - значительно менее читабельны. Особенно это касается сравнения с nil. Согласитесь, конструкция keybar=IsMacroActive() and {"CondOff",rus="Норм"} or {"Exit",rus="Выход"}; значительно туманнее, чем iif(IsMacroActive(), {"CondOff",rus="Норм"}, {"Exit",rus="Выход"}) или IsMacroActive()?{"CondOff",rus="Норм"}:{"Exit",rus="Выход"}
Впрочем, дело вкуса и привычки...

Condensed View

Posted: Sun 12 Jun, 2016 11:24
by John Doe
Добавьте в шапку список хоткеев и выполняемых по ним действий

Condensed View

Posted: Sun 12 Jun, 2016 11:28
by buniak_a_h
John Doe wrote: в шапку
Я, наверно, опять не знаю терминологии.. :oops: Это - куда? В текст самого макроса, или в первый пост темы? Илу куда-то, куда я не знаю?

Condensed View

Posted: Sun 12 Jun, 2016 11:29
by sToLp
buniak_a_h
John Doe

При установленном в Фаре макросе GetConsoleProcessList.lua при попытке перезагрузки макросов из последней версии (12 Jun, 2016 08:57) сабжевого макроса и последующих попытках другим образом перезагрузить макросы вылезает ошибка:
  • LuaMacro
    ...Profile\Macros\scripts\con_lua\GetConsoleProcessList.lua:34: standard output file is closed
После чего Фар уходит в Desktop.

Condensed View

Posted: Sun 12 Jun, 2016 11:37
by John Doe
buniak_a_h wrote: в первый пост темы?
Да

Condensed View

Posted: Sun 12 Jun, 2016 11:44
by buniak_a_h
sToLp
Насколько я понимаю, Вы настраивали хоткеи для CondView. К сожалению, я не нашёл в зыке LUA возможности писать куда-либо, кроме стандартного вывода. По окончании записи настроек я его закрываю. Буду думать...
Может, скажете, как записать строку в файл, и закрыть его?

Condensed View

Posted: Sun 12 Jun, 2016 11:53
by buniak_a_h
sToLp
Попробуйте заменить строки 307 и 308

Code: Select all

io.output(CfgName):write(sSet)
io.close()

на

Code: Select all

local fCfg=io.output(CfgName)
fCfg:write(sSet)
fCfg:close()
Напишите, пожалуйста, ушла ли беда

Condensed View

Posted: Sun 12 Jun, 2016 12:05
by John Doe

Code: Select all

  local cfg = io.open(CfgName,"w")
  cfg:write(sSet)
  cfg:close()

Condensed View

Posted: Sun 12 Jun, 2016 12:09
by buniak_a_h
John Doe
Спасибо. Эх, только сам допёр, похвастаться не успел - обломали... :-(