complition
This commit is contained in:
@@ -1,7 +1,16 @@
|
||||
-- Стартовый сценарий приложения.
|
||||
--
|
||||
-- Приложение выполняет этот файл при запуске. Каталог поиска задаётся
|
||||
-- константой SCRIPT_DIR в src/constants.rs (по умолчанию — текущий каталог).
|
||||
-- константой SCRIPT_DIR в src/constants.rs (по умолчанию — текущий каталог),
|
||||
-- но его можно переопределить аргументом командной строки:
|
||||
--
|
||||
-- gpui-editor-test --config /path/to/project main.go
|
||||
-- cargo run -- --config ./config
|
||||
-- cargo run -- main.go
|
||||
--
|
||||
-- В каталоге --config должны лежать init.lua и подключаемые им модули.
|
||||
-- Первый позиционный аргумент открывается после выполнения этого файла
|
||||
-- через app:open(path) — как `vim main.go` или `nano main.go`.
|
||||
|
||||
print("[lua] init.lua выполнен")
|
||||
|
||||
@@ -12,6 +21,8 @@ print("[lua] init.lua выполнен")
|
||||
-- app:next_tab() -- переключить на следующую, вернуть индекс
|
||||
-- app:previous_tab() -- переключить на предыдущую, вернуть индекс
|
||||
-- app:open_tab() -- открыть пустую вкладку, вернуть индекс
|
||||
-- app:open(path) -- открыть файл с диска, вернуть индекс вкладки;
|
||||
-- -- если файла нет — пустой буфер с таким именем
|
||||
-- app:close_tab(index) -- true, если вкладка закрыта
|
||||
-- app:active_text() -- текст активной вкладки
|
||||
-- app:set_active_text(text) -- заменить текст активной вкладки
|
||||
@@ -37,6 +48,36 @@ print("[lua] init.lua выполнен")
|
||||
-- app:minimize()
|
||||
-- app:is_maximized()
|
||||
--
|
||||
-- LSP-серверы (запуск целиком настраивается этим сценарием):
|
||||
-- app:run_lsp({
|
||||
-- name = "gopls", -- условное имя для stop/restart
|
||||
-- cmd = "gopls", -- путь к бинарнику или имя в PATH
|
||||
-- args = { "serve" }, -- аргументы процесса
|
||||
-- env = { GOFLAGS = "-mod=mod" }, -- переменные окружения
|
||||
-- languages = { "go" }, -- какие languageId обслуживает
|
||||
-- watcher = "**/*.go", -- шаблон файлового вотчера
|
||||
-- root = ".", -- корень workspace (по умолчанию cwd)
|
||||
-- initialization_options = {}, -- initializationOptions сервера
|
||||
-- })
|
||||
-- app:lsp_servers() -- { "gopls", ... }
|
||||
-- app:stop_lsp("gopls") -- true, если сервер был запущен
|
||||
-- app:restart_lsp("gopls") -- перезапуск с прежними настройками
|
||||
--
|
||||
-- Поле watcher принимает строку или таблицу:
|
||||
-- watcher = "**/*.go"
|
||||
-- watcher = { pattern = "**/*.go", ignore = { "vendor/**" } }
|
||||
--
|
||||
-- Автодополнение включается само при вводе идентификатора; Ctrl+Space
|
||||
-- открывает список вручную. Пока список открыт, ↑/↓ и PageUp/PageDown
|
||||
-- перемещают выделение, Enter или Tab вставляют элемент, Esc закрывает
|
||||
-- список; горизонтальные стрелки закрывают его и двигают курсор.
|
||||
-- Документация выбранного элемента показывается второй всплывающей панелью
|
||||
-- справа от списка. Примеры запуска:
|
||||
-- app:run_lsp({ name = "gopls", cmd = "gopls", args = { "serve" },
|
||||
-- languages = { "go" }, watcher = "**/*.go" })
|
||||
-- app:run_lsp({ name = "rust-analyzer", cmd = "rust-analyzer",
|
||||
-- languages = { "rust" }, watcher = "**/*.rs" })
|
||||
--
|
||||
-- Панели окна (по умолчанию закрыты, размер меняется перетаскиванием):
|
||||
-- app.left_panel:open()
|
||||
-- app.left_panel:close()
|
||||
@@ -64,6 +105,33 @@ print("[lua] init.lua выполнен")
|
||||
app:set_language(0, "rust")
|
||||
app:next_tab()
|
||||
|
||||
-- gopls запускается автоматически при старте редактора.
|
||||
-- Сервер обслуживает только документы с languageId "go" и получает изменения
|
||||
-- всех .go-файлов проекта (кроме vendor/) через файловый вотчер.
|
||||
local gopls_ok, gopls_err = pcall(function()
|
||||
app:run_lsp({
|
||||
name = "gopls",
|
||||
cmd = "gopls",
|
||||
args = { "serve" },
|
||||
-- Рабочий каталог gopls. --config меняет только каталог init.lua,
|
||||
-- поэтому проект должен быть текущим каталогом запуска.
|
||||
root = ".",
|
||||
languages = { "go" },
|
||||
watcher = {
|
||||
pattern = "**/*.go",
|
||||
ignore = { "vendor/**" },
|
||||
},
|
||||
-- gopls читает эти параметры из initializationOptions.
|
||||
initialization_options = {
|
||||
usePlaceholders = true,
|
||||
completeUnimported = true,
|
||||
},
|
||||
})
|
||||
end)
|
||||
if not gopls_ok then
|
||||
print("[lsp] gopls не запущен: " .. tostring(gopls_err))
|
||||
end
|
||||
|
||||
-- Пример привязки: Ctrl+S сохраняет вкладку, отпускание Esc закрывает окно.
|
||||
-- app:map_key("<C-s>", function() app:save() end)
|
||||
-- app:map_key("<!Esc>", function() app:close() end)
|
||||
@@ -72,3 +140,5 @@ app:map_key("<C-q>", function() app:close() end)
|
||||
|
||||
app:map_key("<C-e>", function() app.right_panel:toggle() end)
|
||||
app:map_key("<C-t>", function() app.bottom_panel:toggle() end)
|
||||
|
||||
app:open_tab()
|
||||
|
||||
Reference in New Issue
Block a user