Condensed View

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Latest post of the previous page:

sToLp
Спасибо.
sToLp wrote: Не очень понятен вопрос в части того, что значит "портится ли Фар".
Имел в виду - теряет функциональность. В частности, перестаёт грузить файлы в редактор.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

buniak_a_h
А тут вот с дружественного ру-борда подсказывает Alexyz21, весьма опытный спец по макросам:
Редактор "вешается" из-за отсутствия определения local EditorsCondView = {}
Может данная подсказка поможет Вам как-то.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post 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
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Занёс в первый пост актуальную версию макроса.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

buniak_a_h wrote: Занёс в первый пост актуальную версию макроса.
В Win10x64entRu Far 3.0.4700 x64 макрос работает нормально, без каких либо замечаний. Спасибо!
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Сорри, забыл выбросить тестовый макрос.... Исправил
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Добавил настройку "горячих" клавиш. Вызывается при сжатом режиме при повторном нажатии AltF4. Раньше повторное нажатие [b]AltF4[/b] выключало сжатый режим. В дальнейшем эту клавишу можно заменить.
Настройки хранятся в том же каталоге, где и файл с макросом, в файле с именем CondView.cfg. При отсутствии такового устанавливаются клавиши по умолчанию:
  • Включение «сжатого» режима [b]AltF4[/b]
    Выключение «сжатого» режима с возвратом на прежнюю позицию [b]F10 Esc[/b]
    Выключение «сжатого» режима с переходом на новую позицию [b]Enter[/b]
    Настройка «горячих» клавиш [b]AltF4[/b]
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post 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 этой функции уже нет
Это не ошибки, а просто для информации. Кое-где просто дело вкуса.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post 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="Выход"}
Впрочем, дело вкуса и привычки...
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Condensed View

Post by John Doe »

Добавьте в шапку список хоткеев и выполняемых по ним действий
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Condensed View

Post by buniak_a_h »

John Doe wrote: в шапку
Я, наверно, опять не знаю терминологии.. :oops: Это - куда? В текст самого макроса, или в первый пост темы? Илу куда-то, куда я не знаю?
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Condensed View

Post 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.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Condensed View

Post by John Doe »

buniak_a_h wrote: в первый пост темы?
Да
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Condensed View

Post by buniak_a_h »

sToLp
Насколько я понимаю, Вы настраивали хоткеи для CondView. К сожалению, я не нашёл в зыке LUA возможности писать куда-либо, кроме стандартного вывода. По окончании записи настроек я его закрываю. Буду думать...
Может, скажете, как записать строку в файл, и закрыть его?
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Condensed View

Post 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()
Напишите, пожалуйста, ушла ли беда
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Condensed View

Post by John Doe »

Code: Select all

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

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