Merge pull request #109 from epheien/feat-icon_fetcher
feat: icon_fetcher adds symbol parameter
This commit is contained in:
18
README.md
18
README.md
@@ -921,6 +921,24 @@ symbols = {
|
|||||||
-- ...
|
-- ...
|
||||||
end,
|
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.
|
See [this section](#custom-icons) for other examples of this function.
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ local function parse_result(result, depth, hierarchy, parent, bufnr)
|
|||||||
local node = {
|
local node = {
|
||||||
deprecated = value.deprecated,
|
deprecated = value.deprecated,
|
||||||
kind = value.kind,
|
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,
|
name = value.name or value.text,
|
||||||
detail = value.detail,
|
detail = value.detail,
|
||||||
line = selectionRange.start.line,
|
line = selectionRange.start.line,
|
||||||
|
|||||||
@@ -52,8 +52,9 @@ local lspkind = {
|
|||||||
|
|
||||||
---@param kind string|integer
|
---@param kind string|integer
|
||||||
---@param bufnr integer
|
---@param bufnr integer
|
||||||
|
---@param symbol? outline.Symbol
|
||||||
---@return string icon
|
---@return string icon
|
||||||
function M.icon_from_kind(kind, bufnr)
|
function M.icon_from_kind(kind, bufnr, symbol)
|
||||||
local kindstr = kind
|
local kindstr = kind
|
||||||
if type(kind) ~= 'string' then
|
if type(kind) ~= 'string' then
|
||||||
kindstr = M.kinds[kind]
|
kindstr = M.kinds[kind]
|
||||||
@@ -63,7 +64,7 @@ function M.icon_from_kind(kind, bufnr)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if type(cfg.o.symbols.icon_fetcher) == 'function' then
|
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
|
-- Allow returning empty string
|
||||||
if icon then
|
if icon then
|
||||||
return icon
|
return icon
|
||||||
|
|||||||
Reference in New Issue
Block a user