From b740f88a72c4a807f9160176ab93a80761a4464e Mon Sep 17 00:00:00 2001 From: rqdmap <55649208+rqdmap@users.noreply.github.com> Date: Tue, 25 Apr 2023 13:48:21 +0800 Subject: [PATCH] Support ccls symbols --- lua/symbols-outline/config.lua | 6 +++ lua/symbols-outline/symbols.lua | 66 ++++++++++++++++++--------------- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/lua/symbols-outline/config.lua b/lua/symbols-outline/config.lua index 095ca92..4cd8bd1 100644 --- a/lua/symbols-outline/config.lua +++ b/lua/symbols-outline/config.lua @@ -66,6 +66,12 @@ M.defaults = { TypeParameter = { icon = '𝙏', hl = '@parameter' }, Component = { icon = '', hl = '@function' }, Fragment = { icon = '', hl = '@constant' }, + + -- ccls + TypeAlias = { icon = ' ', hl = '@type' }, + Parameter = { icon = ' ', hl = '@parameter' }, + StaticMethod = { icon = ' ', hl = '@function' }, + Macro = { icon = ' ', hl = '@macro' }, }, } diff --git a/lua/symbols-outline/symbols.lua b/lua/symbols-outline/symbols.lua index 9778ce8..f58d3ee 100644 --- a/lua/symbols-outline/symbols.lua +++ b/lua/symbols-outline/symbols.lua @@ -3,34 +3,40 @@ local config = require 'symbols-outline.config' local M = {} M.kinds = { - 'File', - 'Module', - 'Namespace', - 'Package', - 'Class', - 'Method', - 'Property', - 'Field', - 'Constructor', - 'Enum', - 'Interface', - 'Function', - 'Variable', - 'Constant', - 'String', - 'Number', - 'Boolean', - 'Array', - 'Object', - 'Key', - 'Null', - 'EnumMember', - 'Struct', - 'Event', - 'Operator', - 'TypeParameter', - 'Component', - 'Fragment', + [1] = 'File', + [2] = 'Module', + [3] = 'Namespace', + [4] = 'Package', + [5] = 'Class', + [6] = 'Method', + [7] = 'Property', + [8] = 'Field', + [9] = 'Constructor', + [10] = 'Enum', + [11] = 'Interface', + [12] = 'Function', + [13] = 'Variable', + [14] = 'Constant', + [15] = 'String', + [16] = 'Number', + [17] = 'Boolean', + [18] = 'Array', + [19] = 'Object', + [20] = 'Key', + [21] = 'Null', + [22] = 'EnumMember', + [23] = 'Struct', + [24] = 'Event', + [25] = 'Operator', + [26] = 'TypeParameter', + [27] = 'Component', + [28] = 'Fragment', + + -- ccls + [252] = 'TypeAlias', + [253] = 'Parameter', + [254] = 'StaticMethod', + [255] = 'Macro', } function M.icon_from_kind(kind) @@ -40,8 +46,8 @@ function M.icon_from_kind(kind) return symbols[kind].icon end - -- If the kind is higher than the available ones then default to 'Object' - if kind > #M.kinds then + -- If the kind index is not available then default to 'Object' + if M.kinds[kind] == nil then kind = 19 end return symbols[M.kinds[kind]].icon