Condensed View

Здесь выкладываются готовые к использованию макросы и скрипты.
buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Sat 11 Jun, 2016 15:50

Latest post of the previous page:

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

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Postby sToLp » Sat 11 Jun, 2016 20:38

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

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Sat 11 Jun, 2016 20:45

sToLp wrote:buniak_a_h
А тут вот с дружественного ру-борда подсказывает Alexyz21, весьма опытный спец по макросам. Может данная подсказка поможет как-то.
Спасибо.
1. Для себя (потестю - выложу) я уже заменил local EditorsCondView=nil на local EditorsCondView={}
2. Всё равно непонятно: следом идёт
if not local EditorsCondView then local EditorsCondView={} end
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Sat 11 Jun, 2016 20:53

Занёс в первый пост актуальную версию макроса.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Postby sToLp » Sat 11 Jun, 2016 21:21

buniak_a_h wrote:Source of the post Занёс в первый пост актуальную версию макроса.
В Win10x64entRu Far 3.0.4700 x64 макрос работает нормально, без каких либо замечаний. Спасибо!

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Sun 12 Jun, 2016 06:23

Сорри, забыл выбросить тестовый макрос.... Исправил
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Sun 12 Jun, 2016 09:10

Добавил настройку "горячих" клавиш. Вызывается при сжатом режиме при повторном нажатии AltF4. Раньше повторное нажатие AltF4 выключало сжатый режим. В дальнейшем эту клавишу можно заменить.
Настройки хранятся в том же каталоге, где и файл с макросом, в файле с именем CondView.cfg. При отсутствии такового устанавливаются клавиши по умолчанию:
    Включение «сжатого» режима AltF4
    Выключение «сжатого» режима с возвратом на прежнюю позицию F10 Esc
    Выключение «сжатого» режима с переходом на новую позицию Enter
    Настройка «горячих» клавиш AltF4
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

User avatar
John Doe
Бюрократ
Posts: 11029
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 61 times

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

Postby John Doe » Sun 12 Jun, 2016 11:00

Некоторые соображения по использованию 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 этой функции уже нет

Это не ошибки, а просто для информации. Кое-где просто дело вкуса.

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Sun 12 Jun, 2016 11:17

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

User avatar
John Doe
Бюрократ
Posts: 11029
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 61 times

Condensed View

Postby John Doe » Sun 12 Jun, 2016 11:24

Добавьте в шапку список хоткеев и выполняемых по ним действий

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

Condensed View

Postby buniak_a_h » Sun 12 Jun, 2016 11:28

John Doe wrote:Source of the post в шапку
Я, наверно, опять не знаю терминологии.. :oops: Это - куда? В текст самого макроса, или в первый пост темы? Илу куда-то, куда я не знаю?
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

Condensed View

Postby sToLp » Sun 12 Jun, 2016 11:29

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.

User avatar
John Doe
Бюрократ
Posts: 11029
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 61 times

Condensed View

Postby John Doe » Sun 12 Jun, 2016 11:37

buniak_a_h wrote:Source of the post в первый пост темы?
Да

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

Condensed View

Postby buniak_a_h » Sun 12 Jun, 2016 11:44

sToLp
Насколько я понимаю, Вы настраивали хоткеи для CondView. К сожалению, я не нашёл в зыке LUA возможности писать куда-либо, кроме стандартного вывода. По окончании записи настроек я его закрываю. Буду думать...
Может, скажете, как записать строку в файл, и закрыть его?
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

Condensed View

Postby buniak_a_h » Sun 12 Jun, 2016 11:53

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()

Напишите, пожалуйста, ушла ли беда
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

User avatar
John Doe
Бюрократ
Posts: 11029
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 61 times

Condensed View

Postby John Doe » Sun 12 Jun, 2016 12:05

Code: Select all

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

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

Condensed View

Postby buniak_a_h » Sun 12 Jun, 2016 12:09

John Doe
Спасибо. Эх, только сам допёр, похвастаться не успел - обломали... :-(
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании


Return to “Полезные макросы и скрипты”

Who is online

Users browsing this forum: No registered users and 3 guests