From 3b33ea4dac67839f6ba9c9fe7ca9e7508ad8a528 Mon Sep 17 00:00:00 2001 From: jiangpengfei Date: Tue, 28 Nov 2023 14:32:35 +0800 Subject: [PATCH] fix: fix document symbols --- README.md | 3 +++ lsp/symbols/const.go | 4 ++-- lsp/symbols/enum.go | 8 ++++---- lsp/symbols/field.go | 6 +++--- lsp/symbols/service.go | 8 ++++---- lsp/symbols/struct_like.go | 12 ++++++------ lsp/symbols/typedef.go | 4 ++-- 7 files changed, 24 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index f6df230..3a5c541 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ thrift-ls implements language server protocol - dignostic - rename - format +- document symbols ## As Thrift Langugae Server @@ -72,4 +73,6 @@ config file default location: - windows: `C:\Users\${user}\.thriftls\config.yaml` - macos, linux: `~/.thriftls/config.yaml` +## TODO +[] optimize code completion diff --git a/lsp/symbols/const.go b/lsp/symbols/const.go index 705d797..ecf9282 100644 --- a/lsp/symbols/const.go +++ b/lsp/symbols/const.go @@ -14,8 +14,8 @@ func ConstSymbol(cst *parser.Const) *protocol.DocumentSymbol { res := &protocol.DocumentSymbol{ Name: cst.Name.Name.Text, Kind: protocol.SymbolKindConstant, - Range: lsputils.ASTNodeToRange(cst), - SelectionRange: lsputils.ASTNodeToRange(cst), + Range: lsputils.ASTNodeToRange(cst.Name.Name), + SelectionRange: lsputils.ASTNodeToRange(cst.Name.Name), } return res diff --git a/lsp/symbols/enum.go b/lsp/symbols/enum.go index 26054d9..aedcaad 100644 --- a/lsp/symbols/enum.go +++ b/lsp/symbols/enum.go @@ -17,8 +17,8 @@ func EnumSymbol(enum *parser.Enum) *protocol.DocumentSymbol { Name: enum.Name.Name.Text, Detail: "Enum", Kind: protocol.SymbolKindEnum, - Range: lsputils.ASTNodeToRange(enum), - SelectionRange: lsputils.ASTNodeToRange(enum), + Range: lsputils.ASTNodeToRange(enum.Name.Name), + SelectionRange: lsputils.ASTNodeToRange(enum.Name.Name), } for i := range enum.Values { @@ -42,8 +42,8 @@ func EnumValueSymbol(v *parser.EnumValue) *protocol.DocumentSymbol { Name: v.Name.Name.Text, Detail: strconv.FormatInt(v.Value, 10), Kind: protocol.SymbolKindNumber, - Range: lsputils.ASTNodeToRange(v), - SelectionRange: lsputils.ASTNodeToRange(v), + Range: lsputils.ASTNodeToRange(v.Name.Name), + SelectionRange: lsputils.ASTNodeToRange(v.Name.Name), } return res diff --git a/lsp/symbols/field.go b/lsp/symbols/field.go index a61c378..c271dea 100644 --- a/lsp/symbols/field.go +++ b/lsp/symbols/field.go @@ -14,7 +14,7 @@ func FieldSymbol(field *parser.Field) *protocol.DocumentSymbol { detail := "" if field.RequiredKeyword != nil { - detail = field.RequiredKeyword.Literal.Text + detail = field.RequiredKeyword.Literal.Text + " " } detail += format.MustFormatFieldType(field.FieldType) @@ -22,8 +22,8 @@ func FieldSymbol(field *parser.Field) *protocol.DocumentSymbol { Name: field.Identifier.Name.Text, Detail: detail, Kind: protocol.SymbolKindField, - Range: lsputils.ASTNodeToRange(field), - SelectionRange: lsputils.ASTNodeToRange(field), + Range: lsputils.ASTNodeToRange(field.Identifier.Name), + SelectionRange: lsputils.ASTNodeToRange(field.Identifier.Name), } return res diff --git a/lsp/symbols/service.go b/lsp/symbols/service.go index a26b0bc..3cb529a 100644 --- a/lsp/symbols/service.go +++ b/lsp/symbols/service.go @@ -14,8 +14,8 @@ func ServiceSymbol(svc *parser.Service) *protocol.DocumentSymbol { res := &protocol.DocumentSymbol{ Name: svc.Name.Name.Text, Kind: protocol.SymbolKindInterface, - Range: lsputils.ASTNodeToRange(svc), - SelectionRange: lsputils.ASTNodeToRange(svc), + Range: lsputils.ASTNodeToRange(svc.Name.Name), + SelectionRange: lsputils.ASTNodeToRange(svc.Name.Name), } for i := range svc.Functions { @@ -37,8 +37,8 @@ func FunctionSymbol(fn *parser.Function) *protocol.DocumentSymbol { res := &protocol.DocumentSymbol{ Name: fn.Name.Name.Text, Kind: protocol.SymbolKindFunction, - Range: lsputils.ASTNodeToRange(fn), - SelectionRange: lsputils.ASTNodeToRange(fn), + Range: lsputils.ASTNodeToRange(fn.Name.Name), + SelectionRange: lsputils.ASTNodeToRange(fn.Name.Name), } return res diff --git a/lsp/symbols/struct_like.go b/lsp/symbols/struct_like.go index 8ecf5d9..0083ca2 100644 --- a/lsp/symbols/struct_like.go +++ b/lsp/symbols/struct_like.go @@ -15,8 +15,8 @@ func StructSymbol(st *parser.Struct) *protocol.DocumentSymbol { Name: st.Identifier.Name.Text, Detail: "Struct", Kind: protocol.SymbolKindStruct, - Range: lsputils.ASTNodeToRange(st), - SelectionRange: lsputils.ASTNodeToRange(st), + Range: lsputils.ASTNodeToRange(st.Identifier.Name), + SelectionRange: lsputils.ASTNodeToRange(st.Identifier.Name), } for i := range st.Fields { @@ -40,8 +40,8 @@ func UnionSymbol(un *parser.Union) *protocol.DocumentSymbol { Name: un.Name.Name.Text, Detail: "Union", Kind: protocol.SymbolKindStruct, - Range: lsputils.ASTNodeToRange(un), - SelectionRange: lsputils.ASTNodeToRange(un), + Range: lsputils.ASTNodeToRange(un.Name.Name), + SelectionRange: lsputils.ASTNodeToRange(un.Name.Name), } for i := range un.Fields { @@ -65,8 +65,8 @@ func ExceptionSymbol(ex *parser.Exception) *protocol.DocumentSymbol { Name: ex.Name.Name.Text, Detail: "Exception", Kind: protocol.SymbolKindStruct, - Range: lsputils.ASTNodeToRange(ex), - SelectionRange: lsputils.ASTNodeToRange(ex), + Range: lsputils.ASTNodeToRange(ex.Name.Name), + SelectionRange: lsputils.ASTNodeToRange(ex.Name.Name), } for i := range ex.Fields { diff --git a/lsp/symbols/typedef.go b/lsp/symbols/typedef.go index 27f1e34..3d3e644 100644 --- a/lsp/symbols/typedef.go +++ b/lsp/symbols/typedef.go @@ -12,8 +12,8 @@ func TypedefSymbol(td *parser.Typedef) *protocol.DocumentSymbol { Name: td.Alias.Name.Text, Detail: format.MustFormatFieldType(td.T), Kind: protocol.SymbolKindTypeParameter, - Range: lsputils.ASTNodeToRange(td), - SelectionRange: lsputils.ASTNodeToRange(td), + Range: lsputils.ASTNodeToRange(td.Alias.Name), + SelectionRange: lsputils.ASTNodeToRange(td.Alias.Name), } return res