fix: adjust more to make it backward compatible for 0.11-

This commit is contained in:
27Onion Nebell
2025-04-12 12:26:40 +08:00
parent 5779c6f6a7
commit 1460136dd0
6 changed files with 66 additions and 14 deletions

View File

@@ -208,7 +208,7 @@ end
---@param bufnr integer ---@param bufnr integer
---@return boolean include ---@return boolean include
function M.should_include_symbol(kind, bufnr) function M.should_include_symbol(kind, bufnr)
local ft = vim.api.nvim_buf_get_option(bufnr, 'ft') local ft = vim.api.nvim_get_option_value('ft', { buf = bufnr })
-- There can only be one kind in markdown and norg as of now -- There can only be one kind in markdown and norg as of now
if ft == 'markdown' or ft == 'norg' or kind == nil then if ft == 'markdown' or ft == 'norg' or kind == nil then
return true return true
@@ -232,7 +232,7 @@ function M.should_include_symbol(kind, bufnr)
return filter_table[kind] ~= false return filter_table[kind] ~= false
end end
---@param client lsp.client|number ---@param client vim.lsp.Client|number
function M.is_client_blacklisted(client) function M.is_client_blacklisted(client)
if not client then if not client then
return false return false

View File

@@ -68,7 +68,19 @@ function Float:open(lines, hl, title, indent)
if hl then if hl then
self.ns = vim.api.nvim_create_namespace('OutlineHelp') self.ns = vim.api.nvim_create_namespace('OutlineHelp')
for _, h in ipairs(hl) do for _, h in ipairs(hl) do
vim.hl.range(self.bufnr, self.ns, h.name, { h.line, h.from + indent }, { h.line, (h.to ~= -1 and h.to + indent) or -1 }) if _G._outline_nvim_has[11] then
vim.hl.range(self.bufnr, self.ns, h.name, { h.line, h.from + indent }, { h.line, (h.to ~= -1 and h.to + indent) or -1 })
else
---@diagnostic disable-next-line:deprecated
vim.api.nvim_buf_add_highlight(
self.bufnr,
self.ns,
h.name,
h.line,
h.from + indent,
(h.to ~= -1 and h.to + indent) or -1
)
end
end end
end end
end end

View File

@@ -29,7 +29,14 @@ function M.hovers(bufnr, nodes)
for line, node in ipairs(nodes) do for line, node in ipairs(nodes) do
if node.hovered then if node.hovered then
-- stylua: ignore start -- stylua: ignore start
vim.hl.range(bufnr, M.ns.hover, 'OutlineCurrent', { line - 1, node.prefix_length }, { line - 1, -1 }) if _G._outline_nvim_has[11] then
vim.hl.range(bufnr, M.ns.hover, 'OutlineCurrent', { line - 1, node.prefix_length }, { line - 1, -1 })
else
---@diagnostic disable-next-line:deprecated
vim.api.nvim_buf_add_highlight(
bufnr, M.ns.hover, 'OutlineCurrent', line - 1, node.prefix_length, -1
)
end
-- stylua: ignore end -- stylua: ignore end
end end
end end
@@ -41,7 +48,14 @@ end
function M.items(bufnr, hl_list) function M.items(bufnr, hl_list)
for _, h in ipairs(hl_list) do for _, h in ipairs(hl_list) do
-- stylua: ignore start -- stylua: ignore start
vim.hl.range(bufnr, M.ns.items, h.name, { h.line - 1, h.from }, { h.line - 1, h.to }) if _G._outline_nvim_has[11] then
vim.hl.range(bufnr, M.ns.items, h.name, { h.line - 1, h.from }, { h.line - 1, h.to })
else
---@diagnostic disable-next-line:deprecated
vim.api.nvim_buf_add_highlight(
bufnr, M.ns.items, h.name, h.line - 1, h.from, h.to
)
end
-- stylua: ignore end -- stylua: ignore end
end end
end end

View File

@@ -351,6 +351,7 @@ function M.setup(opts)
[8] = minor >= 8, [8] = minor >= 8,
[9] = minor >= 9, [9] = minor >= 9,
[10] = minor >= 10, [10] = minor >= 10,
[11] = minor >= 11,
} }
cfg.setup(opts) cfg.setup(opts)

View File

@@ -18,7 +18,7 @@ function M.get_status(info)
return { 'client: ' .. info.client.name } return { 'client: ' .. info.client.name }
end end
---@param client lsp.client ---@param client vim.lsp.Client
---@param capability string ---@param capability string
---@return boolean ---@return boolean
local function _check_client(client, capability) local function _check_client(client, capability)
@@ -30,7 +30,7 @@ end
---@param bufnr integer ---@param bufnr integer
---@param capability string ---@param capability string
---@return lsp.client? ---@return vim.lsp.Client?
local function get_appropriate_client(bufnr, capability) local function get_appropriate_client(bufnr, capability)
local clients, use_client local clients, use_client
@@ -98,14 +98,22 @@ function M.request_symbols(on_symbols, opts, info)
textDocument = l.util.make_text_document_params(), textDocument = l.util.make_text_document_params(),
} }
-- XXX: Is bufnr=0 ok here? -- XXX: Is bufnr=0 ok here?
local status = info.client:request('textDocument/documentSymbol', params, function(err, response) local method = 'textDocument/documentSymbol'
local callback = function(err, response)
if err or not response then if err or not response then
on_symbols(response, opts) on_symbols(response, opts)
else else
response = postprocess_symbols(response) response = postprocess_symbols(response)
on_symbols(response, opts) on_symbols(response, opts)
end end
end, 0) end
local bufnr = 0
local status
if _G._outline_nvim_has[11] then
status = info.client:request(method, params, callback, bufnr)
else
status = info.client.request(method, params, callback, bufnr)
end
if not status then if not status then
on_symbols(nil, opts) on_symbols(nil, opts)
end end
@@ -135,7 +143,7 @@ end
---@see rename_symbol ---@see rename_symbol
---@param sidebar outline.Sidebar ---@param sidebar outline.Sidebar
---@param client lsp.client ---@param client vim.lsp.Client
---@param node outline.FlatSymbol ---@param node outline.FlatSymbol
---@return boolean success ---@return boolean success
local function legacy_rename(sidebar, client, node) local function legacy_rename(sidebar, client, node)
@@ -151,8 +159,13 @@ local function legacy_rename(sidebar, client, node)
bufnr = sidebar.code.buf, bufnr = sidebar.code.buf,
newName = new_name, newName = new_name,
} }
local status, err = local status, err
client:request_sync('textDocument/rename', params, request_timeout, sidebar.code.buf) if _G._outline_nvim_has[11] then
status, err = client:request_sync('textDocument/rename', params, request_timeout, sidebar.code.buf)
else
---@diagnostic disable-next-line
status, err = client.request_sync('textDocument/rename', params, request_timeout, sidebar.code.buf)
end
if status == nil or status.err or err or status.result == nil then if status == nil or status.err or err or status.result == nil then
return false return false
end end
@@ -211,7 +224,12 @@ function M.show_hover(sidebar)
bufnr = sidebar.code.buf, bufnr = sidebar.code.buf,
} }
local status, err = client:request_sync('textDocument/hover', params, request_timeout) local status, err
if _G._outline_nvim_has[11] then
status, err = client:request_sync('textDocument/hover', params, request_timeout)
else
status, err = client.request_sync('textDocument/hover', params, request_timeout)
end
if status == nil or status.err or err or not status.result or not status.result.contents then if status == nil or status.err or err or not status.result or not status.result.contents then
return false return false
end end

View File

@@ -38,7 +38,14 @@ function M.flash_highlight(winnr, lnum, durationMs, hl_group)
durationMs = 400 durationMs = 400
end end
local bufnr = vim.api.nvim_win_get_buf(winnr) local bufnr = vim.api.nvim_win_get_buf(winnr)
local ns = vim.api.nvim_buf_add_highlight(bufnr, 0, hl_group, lnum - 1, 0, -1) local ns
if _G._outline_nvim_has[11] then
ns = vim.api.nvim_create_namespace("_outline_nvim_flash")
vim.hl.range(bufnr, ns, hl_group, { lnum-1, 0 }, { lnum-1, -1 })
else
---@diagnostic disable-next-line:deprecated
ns = vim.api.nvim_buf_add_highlight(bufnr, 0, hl_group, lnum - 1, 0, -1)
end
local remove_highlight = function() local remove_highlight = function()
pcall(vim.api.nvim_buf_clear_namespace, bufnr, ns, 0, -1) pcall(vim.api.nvim_buf_clear_namespace, bufnr, ns, 0, -1)
end end