From b330a3b941fbbbff8af1ac97a8a27c0db2ce318d Mon Sep 17 00:00:00 2001 From: ktdq <105746631+ktdq@users.noreply.github.com> Date: Thu, 29 Aug 2024 13:58:06 -0400 Subject: [PATCH 1/2] Make inlay hints more like named parameters and no short or redundant labels Short labels (x=, a=, s0= ...) or cases where the name is clear (label=a.label) are filtered out. --- src/requests/features.jl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/requests/features.jl b/src/requests/features.jl index 9d232b64..ac3dbbaa 100644 --- a/src/requests/features.jl +++ b/src/requests/features.jl @@ -613,15 +613,23 @@ function get_inlay_parameter_hints(x::EXPR, server::LanguageServerInstance, doc, if thisarg <= nargs && thisarg <= length(pars) label = pars[thisarg].label label == "#unused#" && return nothing + length(label) <= 2 && return nothing + t = CSTParser.str_value(x) + label == t && return nothing + if x.head isa CSTParser.EXPR && x.head.head == :OPERATOR && x.head.val == "." + if x.args[end] isa CSTParser.EXPR && x.args[end].args[end] isa CSTParser.EXPR + x.args[end].args[end].val == label && return nothing + end + end return InlayHint( Position(get_position_from_offset(doc, pos)...), - string(label, ':'), + string(label, "="), InlayHintKinds.Parameter, missing, pars[thisarg].documentation, false, - true, + false, missing ) end From 7186b31c34d1395d6fd3be4a7e3da257256d90e9 Mon Sep 17 00:00:00 2001 From: ktdq <105746631+ktdq@users.noreply.github.com> Date: Thu, 29 Aug 2024 16:47:26 -0400 Subject: [PATCH 2/2] Don't inlay hint a single argument and kw args --- src/requests/features.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/requests/features.jl b/src/requests/features.jl index ac3dbbaa..1d42eb89 100644 --- a/src/requests/features.jl +++ b/src/requests/features.jl @@ -597,7 +597,7 @@ function get_inlay_parameter_hints(x::EXPR, server::LanguageServerInstance, doc, sigs = collect_signatures(x, doc, server) nargs = length(parentof(x).args) - 1 - nargs == 0 && return nothing + nargs < 2 && return nothing filter!(s -> length(s.parameters) == nargs, sigs) isempty(sigs) && return nothing @@ -614,8 +614,8 @@ function get_inlay_parameter_hints(x::EXPR, server::LanguageServerInstance, doc, label = pars[thisarg].label label == "#unused#" && return nothing length(label) <= 2 && return nothing - t = CSTParser.str_value(x) - label == t && return nothing + CSTParser.str_value(x) == label && return nothing + x.head == :parameters && return nothing if x.head isa CSTParser.EXPR && x.head.head == :OPERATOR && x.head.val == "." if x.args[end] isa CSTParser.EXPR && x.args[end].args[end] isa CSTParser.EXPR x.args[end].args[end].val == label && return nothing