WarCraft 3: [lua] Подсветка кода во внешнем редакторе

» Раздел: Триггеры и объекты

Для подсветки кода лучше всего подходит синтаксис EmmyDoc, плагин с которым есть для Visual Studio Code и IntelliJ IDEA.
Для начала сконвертируйте файлы разметки с помощью cJass2Lua или просто скачайте архив.

Visual Studio Code

  • Перезагружаемся "Win+R -> shutdown -r -t 0"
  • Утанавливаем EmmyLua
  • Открываем %username%\.vscode\extensions\tangzx.emmylua-0.2.6\res\std в проводнике
  • Копируем туда файлы разметки
  • Перезапускаем редактор
  • Сохраняем файл с разрешением .lua и наслаждаемся

Так же можете воспользоваться способом пользователя prog, описанным в этом комментарии.

IntelliJ IDEA

  • Открываем дополнения и устанавливаем EmmyLua
  • Если хотите отключить всё лишнее, то снимите галку со всех плагинов кроме следующих:
  • Создаём новый lua проэкт
  • Нажимаем Ctrl+Alt+Shift+S
  • Указываем путь к файлам разметки
  • Создаём файл с разрешением .lua и наслаждаемся

Просмотров: 1 017

prog #1 - 6 месяцев назад (отредактировано ) 2
Для вскода тогда уж лучше lua-language-server от sumneko плюс файлы нативок из варианта для EmmyLua.
Ну и что-то вроде warcraft-vscode или один из его аналогов, чтобы напрямую с картой работать, раз уж статья в разделе варкрафта, а не чистого Lua.
NazarPunk #2 - 6 месяцев назад 0
плюс файлы нативок из варианта для EmmyLua
Как эти файлы туда засунуть, если по пути %userprofile%\.vscode\extensions\sumneko.lua-0.9.12\syntaxes лежит только lua.tmLanguage.json непонятного содержания.
Ну и что-то вроде warcraft-vscode или один из его аналогов
Я их ещё не тестил, как проверю, обязательно добавлю.
прикреплены файлы
prog #3 - 6 месяцев назад (отредактировано ) 0
Как эти файлы туда засунуть
Я пока просто складываю их в папку проекта отдельно от исходников и открываю один раз перед началом работы чтобы их распарсило. Но, скорее всего, где-то аналогичным образом можно указать путь к таким файлам.
NazarPunk #4 - 6 месяцев назад (отредактировано ) 0
Добавил VSCode-EmmyLua, чей подход к расширяемости оказался круче всех.

Так же попробовал Atom, Eclipse и ZeroBrane . Там с добавлением своих функции вообще ужас.
prog #5 - 6 месяцев назад 0
NazarPunk, эммилуа это хорошо, но ланг сервер от сумнеко дает чуть больше возможностей, чем просто эммилуа, нужно только разобраться как ему скормить внешние нативки.
И даже больше - там явно внутри есть даже своя либа под jass нативки, как оказалось, осталось понять как её подключить, выяснить насколько она актуальная и при необходимости выдать парсером данные в нужном формате и скормить туда.
NazarPunk #6 - 6 месяцев назад 0
эммилуа это хорошо
Мне в нём нравится, что по Ctrl+Click можно перейти к коду функции.
ланг сервер от сумнеко дает чуть больше возможностей, чем просто эммилуа, нужно только разобраться как ему скормить внешние нативки.
Если кто разберётся, то с удовольствием добавлю. У людей должен быть выбор)
прикреплены файлы
prog #7 - 6 месяцев назад (отредактировано ) 0
Мне в нём нравится, что по Ctrl+Click можно перейти к коду функции.
Ну так ланг-сервер умеет это и еще чуть-чуть больше потому как включает в себя эммилуа)
Пока нашел временное, но вполне рабочее решение - складывать файлы common.lua и blizzard.lua куда-нибудь в воркспейсе но так чтобы их собиралка карты не подхватывала. Например, если собиралка берет код из src, то создать папку libs рядом с src и сложить туда.
И после этого в воркспейсе или глобально подровнять конфиг "Lua.workspace.preloadFileSize" поставить вместо стандартных 300 достаточно большое число чтобы хватило на наши файлы, я поставил 600. Все, после этого не нужно даже руками открывать эти файлы чтобы их подхватило. Единственный минус - если проектов несколько, то для каждого нативки отдельно обновлять придется при обновах вара.

Ну и да, кстати, все что делается в "%userprofile%\.vscode\extensions\" подвержено риску быть потеряным при обнове плагина т.к. по хорошему туда не положено лезть руками.

Ну и если лень искать - линка на плагин.
NazarPunk #8 - 6 месяцев назад (отредактировано ) 0
Ну так ланг-сервер умеет это и еще чуть-чуть больше потому как включает в себя эммилуа)
В EmmyDoc он не умеет. Все lua функции захардкожены в регулярках
Так что проще юзать EmmyLua и не париться.
Ну и да, кстати, все что делается в "%userprofile%\.vscode\extensions\" подвержено риску быть потеряным при обнове плагина т.к. по хорошему туда не положено лезть руками.
Если бы сделали удобную натройку, как в IntelliJ, никто бы туда ручками не лез. А при обнове вара всёравно туда новые файлы кидать придётся)
прикреплены файлы
prog #9 - 6 месяцев назад (отредактировано ) 0
NazarPunk, тебе показалось...
Единственное что - дополнительные текстовые комментарии из эмми-документации мне пока не удалось заставить его показывать, но это хз автор недоработал или я чего-то не понимаю в том как должен эмми-луа работать.
прикреплены файлы
NazarPunk #10 - 6 месяцев назад 0
тебе показалось...
Перезапустил редактор и начал уметь. Нашёл где плагин подсказки хранит.
А ещё оказалось, плагин под jass затачивали.
прикреплены файлы
prog #11 - 6 месяцев назад (отредактировано ) 0
NazarPunk, про наличие там либы под jass я тебе говорил, но мне не удалось её заставить подключиться и работать. Подсказки там только для луа нативок и я не уверен стоит ли с ними связываться, если можно просто то что есть пихать в воркспейс.

Из фич которые нравятся мне и которых я что-то не видел в эмми-луа - контекстное переименование функций и переменных, поиск всех использований функции или переменной, возможность сделать peek, а не только переход.
NazarPunk #12 - 6 месяцев назад (отредактировано ) 0
prog, всё это есть в IntelliJ, даже более-менее нормальные настройки автоформтирования кода
И удобная подсветка параметров
прикреплены файлы
prog #13 - 6 месяцев назад (отредактировано ) 0

Что мне НЕ нравится и что я не проверял на чистом эмми-луа в вскоде - отсутствие поддержки мульти-воркспейса - это когда один воркспейс содержит в себе несколько папок рут уровня, не связанных между собой. Если бы эта фича была, то можно было бы держать одну копию файлов с нативками и в воркспейс карты добавлять их просто через добавление папки в воркспейс.
Почему мне не нравится идея совать жасс нативки прямо в плагин, а не на уровне воркспейса проекта - я работаю с Lua и на проектах не связаных с варом и там мне нативки жасса ну вот совсем не упали.

подсветка параметров
Есть и тут.
всё это есть в IntelliJ
А если я не хочу IntelliJ?
NazarPunk #14 - 6 месяцев назад 0
А если я не хочу IntelliJ?
На вкус и цвет все фломастеры разные.

Зато там можно указать SDK для проэкта и выбирать себе любой набор нативок по вкусу.
прикреплены файлы
prog #15 - 6 месяцев назад (отредактировано ) 0
NazarPunk, я бы вобще в нетбинсе работал, были бы к нему нужные плагины, а именно - сборка карты. Что там в идее - мне не особо интересно, я сравниваю то что я вижу в вскоде с чистым эммилуа и с лангсервером включающим в себя и эммилуа и дополнительные плюшки и второй вариант мне нравится больше.
NazarPunk #16 - 6 месяцев назад 0

Обновлены файлы разметки

Пофикшены многие недочёты, и добавлен common.ai.lua.
prog #17 - 4 месяца назад (отредактировано ) 0
common.ai.lua
» Ошибки в именах параметров в документации
GetCreepCamp
SuicidePlayer
SuicidePlayerUnits
CaptainInCombat
GetUnitCountEx
TownCountEx
BasicExpansion
StartUnit
SingleMeleeAttack
Еще мелькает null в нескольких местах - 2757, 2797 и 3044 строка

blizzard.j
code - нигде не обьявлен
null в 12288 строке

common.j
integer - дублирование класса
code - нигде не обьявлен
NazarPunk #18 - 2 недели назад 1
Обновил файлы разметки на сконвертированные с помощью cjass2lua.
Влад59 #19 - 3 дня назад 0
Странно, но актуальная сейчас IntelliJ 2019.3 не ставит lua . Может у кого-то возникла такая же проблема. Поставил 2018.3 все отлично работает.
NazarPunk #20 - 3 дня назад 0
Странно, но актуальная сейчас IntelliJ 2019.3 не ставит lua
2019.3 много чего не ставит, хотя репозиторий обновили
прикреплены файлы