Система сборки, которая поставляется с Sublime для выполнения программ Lua, выглядит следующим образом:
{
"cmd": ["lua", "$file"],
"file_regex": "^(?:lua:)?[\t ](...*?):([0-9]*):?([0-9]*)",
"selector": "source.lua"
}
Важным аспектом здесь является то, что выполняемая команда - lua
с первым аргументом, который называетсятекущего файла.Из сообщения об ошибке, которое вы видите, Lua выглядит так, будто пытается выполнить каталог вместо имени программы.Или, если хотите, если бы это была проблема с правами доступа к каталогу, я бы ожидал, что он сообщит вам имя файла, к которому он не может получить доступ, а не папку, в которой хранится файл.
Это также подозрительночто имя папки является местом установки самого lua
, и что сообщение об ошибке, похоже, указывает на то, что оно lua
само генерирует ошибку.
Исходя из всего этого, я думаю, чточто вы не сохранили свой скрипт Lua до того, как выполнили команду.Это может привести к расширению $file
до пустой строки, в результате чего первый аргумент будет пустым.Поскольку при сборке используется cmd
, внутренним окнам предписывается запускать программу с именем lua
с пустой строкой в качестве первого аргумента.
Похоже, что интерпретатор сначала пытается поставить текущую рабочуюкаталог на имя файла, а затем выполнить его, и, поскольку имя файла пустое, в итоге он пытается выполнить каталог, из-за которого возникает проблема с правами доступа.
После первого сохранения файла иу него есть имя, Sublime будет автоматически повторно сохранять его каждый раз, когда вы запускаете сборку, пока проверяется Tools > Save all on build
;однако эта опция не предложит вам сохранить новые файлы, которые еще не имеют имен.