From fa59a688431167453c0c19e2e9f8b6db0f743987 Mon Sep 17 00:00:00 2001 From: Sebastian Pfitzner Date: Sat, 13 Jul 2024 15:00:53 +0200 Subject: [PATCH] feat: public suport for completions --- src/protocol/completion.jl | 2 +- src/requests/completions.jl | 4 +++- src/requests/hover.jl | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/protocol/completion.jl b/src/protocol/completion.jl index 326b6550..393ab6e0 100644 --- a/src/protocol/completion.jl +++ b/src/protocol/completion.jl @@ -108,7 +108,7 @@ struct CompletionItem <: Outbound data::Union{Any,Missing} end CompletionItem(label, kind, documentation, textEdit) = CompletionItem(label, kind, missing, missing, documentation, missing, missing, missing, missing, missing, InsertTextFormats.PlainText, textEdit, missing, missing, missing, missing) -CompletionItem(label, kind, detail, documentation, textEdit) = CompletionItem(label, kind, missing, detail, documentation, missing, missing, missing, missing, missing, InsertTextFormats.PlainText, textEdit, missing, missing, missing, missing) +CompletionItem(label, kind, detail, documentation, textEdit, sortText = label) = CompletionItem(label, kind, missing, detail, documentation, missing, missing, sortText, missing, missing, InsertTextFormats.PlainText, textEdit, missing, missing, missing, missing) struct CompletionList <: Outbound isIncomplete::Bool diff --git a/src/requests/completions.jl b/src/requests/completions.jl index 6ca1f5e0..c66fe16f 100644 --- a/src/requests/completions.jl +++ b/src/requests/completions.jl @@ -267,12 +267,14 @@ function collect_completions(x::StaticLint.Scope, spartial, state::CompletionSta end if length(possible_names) > 0 documentation = "" + is_public = false if n[2] isa StaticLint.Binding documentation = get_tooltip(n[2], documentation, state.server) sanitize_docstring(documentation) + is_public = n[2].is_public end foreach(possible_names) do nn - add_completion_item(state, CompletionItem(nn, _completion_kind(n[2]), get_typed_definition(n[2]), MarkupContent(documentation), texteditfor(state, spartial, nn))) + add_completion_item(state, CompletionItem(nn, _completion_kind(n[2]), get_typed_definition(n[2]), MarkupContent(documentation), texteditfor(state, spartial, nn), (is_public ? "0" : "") * nn)) end end end diff --git a/src/requests/hover.jl b/src/requests/hover.jl index d5172c41..56c954da 100644 --- a/src/requests/hover.jl +++ b/src/requests/hover.jl @@ -72,6 +72,10 @@ function get_tooltip(b::StaticLint.Binding, documentation::String, server, expr elseif b.val isa SymbolServer.SymStore documentation = get_hover(b.val, documentation, server, expr, env) end + + if b.is_public + documentation *= "\n THIS IS PUBLIC!" + end return documentation end