Luacheck FAR scripts — статический анализатор для Lua/MoonScript

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Luacheck FAR scripts — статический анализатор для Lua/MoonScript

Post by John Doe »

Luacheck это статический анализатор для Lua.
Luacheck может обнаруживать разнообразные проблемы, такие как использование неопределённых глобальных переменных, неиспользованные переменные и значения, доступ к неинициализированным переменным, недостижимый код и многое другое.

А для удобной работы с luacheck в фаре предлагаю данный пакет скриптов, обеспечивающий работу Luacheck в редакторе и в командной строке.
Кроме того, в редакторе для Luacheck обеспечивается прозрачная "трансляция" MoonScript, что позволяет анализировать и *.moon-файлы.

Инструкции по установке, настройке, и работе — во встроенной справке.

Требования:
  • FAR 3 не старше b5106
  • luacheck не ниже v0.19
Attachments
far_standards.lua.cfg_v1.5.7z
Обновлённые определения (far 6114 / lm 772)
(8.5 KiB) Downloaded 87 times
luaсheck_far_v1.4.3.7z
far5505.lm712
(23.38 KiB) Downloaded 335 times
Last edited by John Doe on Sat 09 Nov, 2019 16:08, edited 3 times in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

luacheck — статический анализатор для Lua

Post by John Doe »

Latest post of the previous page:

HaRT wrote: Обнаружилась ошибка
Давно исправил, рассчитываю скоро выложить.
HaRT wrote: нет способа выйти из списка так, чтобы каретка осталась на том месте.
Подумаю как лучше.
HaRT wrote: Интересно, можно ли и это сделать в общем виде…
Подозреваю что можно и в общем, но не уверен что нужно.
В моей рабочей версии luacheck есть максимизация.
В версии из шапки для этого можно закомментировать строку local MaxHeight = 10
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

luacheck — статический анализатор для Lua

Post by HaRT »

John Doe wrote: рассчитываю скоро выложить
[…]
Подумаю как лучше
Спасибо! Ждём-с…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

luacheck — статический анализатор для Lua

Post by HaRT »

John Doe wrote: Подозреваю что можно и в общем, но не уверен что нужно.
Было бы удобно, чтобы не завязываться на предусмотрительность остальных авторов полезных плюшек.
John Doe wrote: В моей рабочей версии luacheck есть максимизация.
Я себе сделал пока так:
  1. --- luacheck.lua    Sun Jun 21 10:00:37 2015
  2.  
  3. +++ luacheck.lua    Mon Jul 13 14:59:19 2015
  4.  
  5. @@ -1,6 +1,6 @@
  6.  
  7. ---http://forum.farmanager.com/viewtopic.php?f=15&t=9650
  8.  
  9. +--http://forum.farmanager.com/viewtopic.php?p=130641#p130641
  10.  
  11.  local luacheck = require "luacheck"
  12.  
  13. -local MaxHeight = 10 --todo maximize, top, bottom
  14.  
  15. +local MaxHeight = 10  -- will maximize/restore by F5, see below
  16.  
  17.  local options = { --http://luacheck.readthedocs.org/config.html
  18.  
  19.    new_read_globals={
  20.  
  21.      "Macro","NoMacro","Event","NoEvent","MenuItem","NoMenuItem","CommandLine","NoCommandLine",
  22.  
  23. @@ -92,7 +92,7 @@
  24.  
  25.  local Title = "luacheck"
  26.  
  27.  local Props = {
  28.  
  29.    Title=Title;
  30.  
  31. -  Bottom="Ctrl-Enter, Ctrl-Up/Down";
  32.  
  33. +  Bottom="Ctrl-Enter, Ctrl-Up/Down, F5";
  34.  
  35.    Id=win.Uuid(Id);
  36.  
  37.    MaxHeight=MaxHeight;
  38.  
  39.  }
  40.  
  41. @@ -160,6 +160,9 @@
  42.  
  43.     end},
  44.  
  45.    {BreakKey="C+1 C+2 C+3 C+4 C+5 C+6 C+7 C+8 C+9 C+0",action=function(_,_,bk)
  46.  
  47.       Keys(bk.BreakKey:gsub("C%+","Ctrl"))
  48.  
  49. +   end},
  50.  
  51. +  {BreakKey="F5", action=function()
  52.  
  53. +     Props.MaxHeight = not Props.MaxHeight and MaxHeight or nil  -- toggle Maximized
  54.  
  55.     end},
  56.  
  57.  }
  58.  
  59.  
  60.  
  61. #EOF
Немного огорчают только пустые 2-3 строки над/под меню.
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Вычеркнуто неактуальное; улучшен код.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

luacheck — статический анализатор для Lua

Post by John Doe »

HaRT wrote: Было бы удобно, чтобы не завязываться на предусмотрительность остальных авторов полезных плюшек.
Речь о потенциальных плюшках? Или есть реальные примеры?
HaRT wrote: Я себе сделал пока так:
Верной дорогой идёте.
HaRT wrote: Немного огорчают только пустые 2-3 строки над/под меню.
А как иначе?
Значит все элементы и так поместились.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

luacheck — статический анализатор для Lua

Post by HaRT »

John Doe wrote: есть реальные примеры?
Пока больше нет. Как встречу — напишу.
John Doe wrote: Верной дорогой идёте
Я там код улучшил чуток — заменил if-then-else-end на (not-)and-or.
John Doe wrote: все элементы и так поместились
:facepalm:
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

luacheck — статический анализатор для Lua

Post by HaRT »

HaRT wrote: выйти из списка так, чтобы каретка осталась на том месте
Раз пошла такая пьянка, сделал себе и это, притом в лоб:

Code: Select all

  Bottom="Ctrl-/Shift-/Enter, Ctrl-Up/Down, F5";
…
  {BreakKey="S+RETURN", action=function()
     return "break"  -- do not change selection or position
   end},
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

luacheck — статический анализатор для Lua

Post by John Doe »

HaRT wrote: Я там код улучшил чуток
Если что, то помимо максимизации будут также режимы вверху/внизу.
HaRT wrote: Раз пошла такая пьянка, сделал себе и это, притом в лоб:
А F10 делает не то, что вам надо?
В идеале требуемое поведение должно быть без всяких дополнительных шорткатов (в рабочей версии попытался сделать именно так).
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

luacheck — статический анализатор для Lua

Post by HaRT »

John Doe wrote: F10 делает не то, что вам надо?
Хм, про [b]F10[/b]-то я и забыл… То.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

luacheck — статический анализатор для Lua

Post by John Doe »

Обновление.
  • Скрипт адаптирован к последним изменениям в модуле (его тоже надо перекачать).
  • Список по умолчанию прижимается к нижней части окна фара.
    Расположение можно менять, см. справку по F1.
  • Новые шорткаты для перехода к следующему/предыдущему предупреждению.
  • Имя файла скрипта изменилось, и добавилась утилита luacheck_cmdline.lua
Детали в шапке.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

luacheck — статический анализатор для Lua

Post by HaRT »

John Doe wrote: Обновление
Спасибо.
Мелкая некрасивость: при верхнем положении списка его верхняя рамка оказывается за пределами окна.
Пожелание: хотелось бы разделить положение (верх/центр/низ) и размер (стандартный/развёрнутый). Т.е. чтобы N1, N4, N7 и N5 управляли положением (так же, как сейчас, но без изменения размера), а F5 — разворачивал/восстанавливал (без изменения точки привязки списка). Кстати, при переключении по N5, мне кажется, было бы интуитивнее, если бы положение изменялось по схеме „пинг-понг“ (низ—центр—верх—центр—низ—…), а не по схеме „кольцо“ (низ—центр—верх—низ—…).
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлено пожелание про «пинг-понг»
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

luacheck — статический анализатор для Lua

Post by John Doe »

HaRT wrote: Мелкая некрасивость:
Так и задумано, чтобы список занимал меньше места.
Лучше было бы убрать внешние поля, но вначале надо переделать меню на диалог, до чего руки пока не дошли.
HaRT wrote: Пожелание
Обоснуйте, исходя из практики использования.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

luacheck — статический анализатор для Lua

Post by HaRT »

John Doe wrote: учше было бы убрать внешние поля
Так я не про поля, а про саму рамку. В результате, если нет полосы прокрутки, визуально складывается впечатление, будто часть списка не видна, — очень сбивает с толку.
John Doe wrote: Обоснуйте
Просто привычки работы с оконными интерфейсами таковы, что окно либо перемещается без изменения размера, либо изменяется в размере без изменения точки привязки (в случае операций Развернуть/Восстановить она несколько условна). В данной реализации этот инвариант не соблюдается, в результате чего нарушается принцип Наименьшего удивления.
HaRT wrote: Кстати, при переключении по N5, мне кажется, было бы интуитивнее, если бы положение изменялось по схеме „пинг-понг“ (низ—центр—верх—центр—низ—…), а не по схеме „кольцо“ (низ—центр—верх—низ—…).
А об этом что скажете?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

luacheck — статический анализатор для Lua

Post by John Doe »

HaRT wrote: очень сбивает с толку.
За положение меню отвечает строка Props.Y = -2, за коррекцию TopScreenLine a = a+nLines+1.
(Я трогать это пока не планирую)

По максимизации: действительно ли вам нужны верх/низ максимизированными?
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

luacheck — статический анализатор для Lua

Post by HaRT »

John Doe wrote: Я трогать это пока не планирую
Спасибо, поправлю для себя локально.
John Doe wrote: действительно ли вам нужны верх/низ максимизированными?
Пока не уверен.
Просто меня дико сбивает то, что происходит при переключении.

А как Вам идея про «пинг-понг»?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

luacheck — статический анализатор для Lua

Post by HaRT »

John Doe wrote:За положение меню отвечает строка Props.Y = -2
Хотел было использовать -1, но тут небольшой облом:
Far.Menu wrote:X,Y
Координаты верхнего левого угла меню.
Чтобы назначить их автоматически, приравняйте их -1.
В результате меню оказывается снова в центре. Пришлось пожертвовать кусочком ещё одной строки и остановиться на значении 0.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

luacheck — статический анализатор для Lua

Post by John Doe »

HaRT wrote: Просто меня дико сбивает то, что происходит при переключении.
Устроит ли отдельная кнопка, максимизирующая в центральном положении?
Повторное нажатие может возвращать назад (надо переделывать), или уменьшать в центральном же положении (это проще).
HaRT wrote: А как Вам идея про «пинг-понг»?
Не уверен в интуитивности, т.к. если текущее положение "центр", то непонятно куда переместиться список.
Пришлось пожертвовать кусочком ещё одной строки
Вот и я с этим столкнулся )
Post Reply

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