feat: add ability to alter lsp file operation timeout (#317)

* feat: add ability to alter lsp file operation timeout

* change default

* fix table

* add missing

* move inside table

* remove duplicate

* reuse default

* change message

* refactor: rename autosave config option

---------

Co-authored-by: Steven Arcangeli <stevearc@stevearc.com>
This commit is contained in:
TheNordicMule 2024-03-02 11:02:42 -06:00 committed by GitHub
parent 132b4ea074
commit 29a06fcc90
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 35 additions and 13 deletions

View file

@ -163,9 +163,13 @@ require("oil").setup({
-- You can set the delay to false to disable cleanup entirely
-- Note that the cleanup process only starts when none of the oil buffers are currently displayed
cleanup_delay_ms = 2000,
-- Set to true to autosave buffers that are updated with LSP willRenameFiles
-- Set to "unmodified" to only save unmodified buffers
lsp_rename_autosave = false,
lsp_file_methods = {
-- Time to wait for LSP file operations to complete before skipping
timeout_ms = 1000,
-- Set to true to autosave buffers that are updated with LSP willRenameFiles
-- Set to "unmodified" to only save unmodified buffers
autosave_changes = false,
},
-- Constrain the cursor to the editable parts of the oil buffer
-- Set to `false` to disable, or "name" to keep it on the file names
constrain_cursor = "editable",

View file

@ -54,9 +54,13 @@ CONFIG *oil-confi
-- You can set the delay to false to disable cleanup entirely
-- Note that the cleanup process only starts when none of the oil buffers are currently displayed
cleanup_delay_ms = 2000,
-- Set to true to autosave buffers that are updated with LSP willRenameFiles
-- Set to "unmodified" to only save unmodified buffers
lsp_rename_autosave = false,
lsp_file_methods = {
-- Time to wait for LSP file operations to complete before skipping
timeout_ms = 1000,
-- Set to true to autosave buffers that are updated with LSP willRenameFiles
-- Set to "unmodified" to only save unmodified buffers
autosave_changes = false,
},
-- Constrain the cursor to the editable parts of the oil buffer
-- Set to `false` to disable, or "name" to keep it on the file names
constrain_cursor = "editable",

View file

@ -37,9 +37,13 @@ local default_config = {
-- You can set the delay to false to disable cleanup entirely
-- Note that the cleanup process only starts when none of the oil buffers are currently displayed
cleanup_delay_ms = 2000,
-- Set to true to autosave buffers that are updated with LSP willRenameFiles
-- Set to "unmodified" to only save unmodified buffers
lsp_rename_autosave = false,
lsp_file_methods = {
-- Time to wait for LSP file operations to complete before skipping
timeout_ms = 1000,
-- Set to true to autosave buffers that are updated with LSP willRenameFiles
-- Set to "unmodified" to only save unmodified buffers
autosave_changes = false,
},
-- Constrain the cursor to the editable parts of the oil buffer
-- Set to `false` to disable, or "name" to keep it on the file names
constrain_cursor = "editable",
@ -172,6 +176,15 @@ M.setup = function(opts)
new_conf.keymaps = opts.keymaps or {}
end
if new_conf.lsp_rename_autosave ~= nil then
new_conf.lsp_file_methods.autosave_changes = new_conf.lsp_rename_autosave
new_conf.lsp_rename_autosave = nil
vim.notify_once(
"oil config value lsp_rename_autosave has moved to lsp_file_methods.autosave_changes.\nCompatibility will be removed on 2024-09-01.",
vim.log.levels.WARN
)
end
for k, v in pairs(new_conf) do
M[k] = v
end

View file

@ -68,9 +68,10 @@ M.will_perform_file_operations = function(actions)
end
end
end
accum(workspace.will_create_files(creates))
accum(workspace.will_delete_files(deletes))
accum(workspace.will_rename_files(moves))
local timeout_ms = config.lsp_file_methods.timeout_ms
accum(workspace.will_create_files(creates, { timeout_ms = timeout_ms }))
accum(workspace.will_delete_files(deletes, { timeout_ms = timeout_ms }))
accum(workspace.will_rename_files(moves, { timeout_ms = timeout_ms }))
if final_err then
vim.notify(
string.format("[lsp] file operation error: %s", vim.inspect(final_err)),
@ -83,7 +84,7 @@ M.will_perform_file_operations = function(actions)
workspace.did_delete_files(deletes)
workspace.did_rename_files(moves)
local autosave = config.lsp_rename_autosave
local autosave = config.lsp_file_methods.autosave_changes
if autosave == false then
return
end