"Try this" data types #
This defines the data types used in constructing "try this" widgets for suggestion-providing tactics and inline error-message hints, as well as basic infrastructure for generating info trees and widget content there from.
Code action information #
A packet of information about a "Try this" suggestion that we store in the infotree for the associated code action to retrieve.
- range : Lsp.Range
The textual range to be replaced by one of the suggestions.
A list of suggestions for the user to choose from. Each suggestion may optionally come with an override for the code action title.
The prefix to display before the code action for a "Try this" suggestion if no custom code action title is provided. If not provided,
"Try this: "
is used.
Instances For
Suggestion
data #
Text to be used as a suggested replacement in the infoview. This can be either a TSyntax kind
for a single kind : SyntaxNodeKind
or a raw String
.
Instead of using constructors directly, there are coercions available from these types to
SuggestionText
.
- tsyntax
{kind : SyntaxNodeKind}
: TSyntax kind → SuggestionText
TSyntax kind
used as suggested replacement text in the infoview. Note that whileTSyntax
is in general parameterized by a list ofSyntaxNodeKind
s, we only allow one here; this unambiguously guides pretty-printing. - string : String → SuggestionText
A raw string to be used as suggested replacement text in the infoview.
Instances For
Equations
Equations
Equations
Style hooks for Suggestion
s. See SuggestionStyle.error
, .warning
, .success
, .value
,
and other definitions here for style presets. This is an arbitrary Json
object, with the following
interesting fields:
title
: the hover text in the suggestion linkclassName
: the CSS classes applied to the linkstyle
: AJson
object with additional inline CSS styles such ascolor
ortextDecoration
.
Equations
Instances For
Equations
Style as an error. By default, decorates the text with an undersquiggle; providing the argument
decorated := false
turns this off.
Equations
Instances For
Style as a warning. By default, decorates the text with an undersquiggle; providing the
argument decorated := false
turns this off.
Equations
Instances For
Style as a success.
Equations
Instances For
Style the same way as a hypothesis appearing in the infoview.
Equations
Instances For
Style the same way as an inaccessible hypothesis appearing in the infoview.
Equations
Instances For
Draws the color from a red-yellow-green color gradient with red at 0.0
, yellow at 0.5
, and
green at 1.0
. Values outside the range [0.0, 1.0]
are clipped to lie within this range.
With showValueInHoverText := true
(the default), the value t
will be included in the title
of
the HTML element (which appears on hover).
Equations
Instances For
Holds a suggestion
for replacement, along with preInfo
and postInfo
strings to be printed
immediately before and after that suggestion, respectively. It also includes an optional
MessageData
to represent the suggestion in logs; by default, this is none
, and suggestion
is
used.
- suggestion : SuggestionText
Text to be used as a replacement via a code action.
Optional info to be printed immediately before replacement text in a widget.
Optional info to be printed immediately after replacement text in a widget.
- style? : Option SuggestionStyle
Optional style specification for the suggestion. If
none
(the default), the suggestion is styled as a text link. Otherwise, the suggestion can be styled as:- a status:
.error
,.warning
,.success
- a hypothesis name:
.asHypothesis
,.asInaccessible
- a variable color:
.value (t : Float)
, which draws from a red-yellow-green gradient, with red at0.0
and green at1.0
.
See
SuggestionStyle
for details.Note that this property is used only by the "try this" widget; it is ignored by the inline hint widget.
- a status:
- messageData? : Option MessageData
How to represent the suggestion as
MessageData
. This is used only in the info diagnostic. Ifnone
, we usesuggestion
. UsetoMessageData
to render aSuggestion
in this manner. How to construct the text that appears in the lightbulb menu from the suggestion text. If
none
, we usefun ppSuggestionText => "Try this: " ++ ppSuggestionText
. Only the pretty-printedsuggestion : SuggestionText
is used here.
Instances For
Equations
Formatting #
Yields (indent, column)
given a FileMap
and a String.Range
, where indent
is the number
of spaces by which the line that first includes range
is initially indented, and column
is the
column range
starts at in that line.
Equations
Instances For
An option allowing the user to customize the ideal input width. Defaults to 100. This option controls output format when the output is intended to be copied back into a lean file
Get the input width specified in the options
Equations
Instances For
Pretty-prints a SuggestionText
as a Format
. If the SuggestionText
is some TSyntax kind
,
we use the appropriate pretty-printer; strings are coerced to Format
s as-is.
Equations
Instances For
Pretty-prints a SuggestionText
as a String
and wraps with respect to the pane width,
indentation, and column, via Format.prettyExtra
. If w := none
, then
w := getInputWidth (← getOptions)
is used. Raw String
s are returned as-is.
Equations
Instances For
Converts a Suggestion
to Json
in CoreM
. We need CoreM
in order to pretty-print syntax.
This also returns a String × Option String
consisting of the pretty-printed text and any custom
code action title if toCodeActionTitle?
is provided.
If w := none
, then w := getInputWidth (← getOptions)
is used.
Equations
Instances For
Represents processed data for a collection of suggestions that can be passed to a widget and pushed in an info leaf.
It contains the following data:
suggestions
: tuples of the form(j, t, p)
wherej
is JSON containing a suggestion and its pre- and post-info,t
is the text to be inserteed by the suggestion, andp
is the code action prefix thereof.info
: theTryThisInfo
data corresponding to a collection of suggestionsrange
: the range at which the suggestion is to be applied.
Instances For
Processes an array of Suggestion
s into data that can be used to construct a code-action info leaf
and "try this" widget.