Merge pull request #109 from epheien/feat-icon_fetcher

feat: icon_fetcher adds symbol parameter
This commit is contained in:
~hedy
2025-01-05 08:58:42 +08:00
committed by GitHub
3 changed files with 22 additions and 3 deletions

View File

@@ -921,6 +921,24 @@ symbols = {
-- ...
end,
}
```
The `icon_fetcher` function may also accept a third parameter, the symbol
which type is outline.Symbol. Provider can add extra info to symbol.
For example, access specifier information can be added at the icon location.
```lua
symbols = {
icon_fetcher = function(kind, bufnr, symbol)
local access_icons = { public = '○', protected = '◉', private = '●' }
local icon = require('outline.config').o.symbols.icons[kind].icon
-- ctags provider add `access` key
if symbol and symbol.access then
return icon .. ' ' .. access_icons[symbol.access]
end
return icon
end,
}
```
See [this section](#custom-icons) for other examples of this function.

View File

@@ -47,7 +47,7 @@ local function parse_result(result, depth, hierarchy, parent, bufnr)
local node = {
deprecated = value.deprecated,
kind = value.kind,
icon = symbols.icon_from_kind(value.kind, bufnr),
icon = symbols.icon_from_kind(value.kind, bufnr, value),
name = value.name or value.text,
detail = value.detail,
line = selectionRange.start.line,

View File

@@ -52,8 +52,9 @@ local lspkind = {
---@param kind string|integer
---@param bufnr integer
---@param symbol? outline.Symbol
---@return string icon
function M.icon_from_kind(kind, bufnr)
function M.icon_from_kind(kind, bufnr, symbol)
local kindstr = kind
if type(kind) ~= 'string' then
kindstr = M.kinds[kind]
@@ -63,7 +64,7 @@ function M.icon_from_kind(kind, bufnr)
end
if type(cfg.o.symbols.icon_fetcher) == 'function' then
local icon = cfg.o.symbols.icon_fetcher(kindstr, bufnr)
local icon = cfg.o.symbols.icon_fetcher(kindstr, bufnr, symbol)
-- Allow returning empty string
if icon then
return icon