Skip to content

Commit

Permalink
feat: add ability to alter lsp file operation timeout (#317)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
TheNordicMule and stevearc authored Mar 2, 2024
1 parent 132b4ea commit 29a06fc
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 13 deletions.
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
10 changes: 7 additions & 3 deletions doc/oil.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
19 changes: 16 additions & 3 deletions lua/oil/config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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
Expand Down
9 changes: 5 additions & 4 deletions lua/oil/lsp/helpers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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)),
Expand All @@ -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
Expand Down

0 comments on commit 29a06fc

Please sign in to comment.