mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 03:18:16 +00:00
fix(lsp): set tabSize from 'shiftwidth', not 'softtabstop' (#17787)
The use of 'softtabstop' to set tabSize was introduced in 5d5b068
,
replacing 'tabstop'. If we look past the name tabSize and at the actual
purpose of the field, it's the indentation width used when formatting.
This corresponds to the Vim option 'shiftwidth', not 'softtabstop'.
The latter has the comparatively mundane purpose of controlling what
happens when you hit the tab key (and even this is incomplete, as it
fails to account for 'smarttab').
This commit is contained in:
@@ -1894,16 +1894,16 @@ end
|
||||
function M.make_workspace_params(added, removed)
|
||||
return { event = { added = added; removed = removed; } }
|
||||
end
|
||||
--- Returns visual width of tabstop.
|
||||
--- Returns indentation size.
|
||||
---
|
||||
---@see |softtabstop|
|
||||
---@see |shiftwidth|
|
||||
---@param bufnr (optional, number): Buffer handle, defaults to current
|
||||
---@returns (number) tabstop visual width
|
||||
---@returns (number) indentation size
|
||||
function M.get_effective_tabstop(bufnr)
|
||||
validate { bufnr = {bufnr, 'n', true} }
|
||||
local bo = bufnr and vim.bo[bufnr] or vim.bo
|
||||
local sts = bo.softtabstop
|
||||
return (sts > 0 and sts) or (sts < 0 and bo.shiftwidth) or bo.tabstop
|
||||
local sw = bo.shiftwidth
|
||||
return (sw == 0 and bo.tabstop) or sw
|
||||
end
|
||||
|
||||
--- Creates a `DocumentFormattingParams` object for the current buffer and cursor position.
|
||||
|
Reference in New Issue
Block a user