Documentation

Lean.Meta.TryThis

"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.

  • suggestionTexts : Array (String × Option String)

    A list of suggestions for the user to choose from. Each suggestion may optionally come with an override for the code action title.

  • codeActionPrefix? : Option String

    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 kindSuggestionText

      TSyntax kind used as suggested replacement text in the infoview. Note that while TSyntax is in general parameterized by a list of SyntaxNodeKinds, we only allow one here; this unambiguously guides pretty-printing.

    • string : StringSuggestionText

      A raw string to be used as suggested replacement text in the infoview.

    Instances For

      Style hooks for Suggestions. 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 link
      • className: the CSS classes applied to the link
      • style: A Json object with additional inline CSS styles such as color or textDecoration.
      Equations
        Instances For

          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.

                                  • preInfo? : Option String

                                    Optional info to be printed immediately before replacement text in a widget.

                                  • postInfo? : Option String

                                    Optional info to be printed immediately after replacement text in a widget.

                                  • 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:

                                    See SuggestionStyle for details.

                                    Note that this property is used only by the "try this" widget; it is ignored by the inline hint widget.

                                  • messageData? : Option MessageData

                                    How to represent the suggestion as MessageData. This is used only in the info diagnostic. If none, we use suggestion. Use toMessageData to render a Suggestion in this manner.

                                  • toCodeActionTitle? : Option (StringString)

                                    How to construct the text that appears in the lightbulb menu from the suggestion text. If none, we use fun ppSuggestionText => "Try this: " ++ ppSuggestionText. Only the pretty-printed suggestion : SuggestionText is used here.

                                  Instances For

                                    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 Formats 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 Strings 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) where j is JSON containing a suggestion and its pre- and post-info, t is the text to be inserteed by the suggestion, and p is the code action prefix thereof.
                                                        • info: the TryThisInfo data corresponding to a collection of suggestions
                                                        • range: the range at which the suggestion is to be applied.
                                                        Instances For

                                                          Processes an array of Suggestions into data that can be used to construct a code-action info leaf and "try this" widget.

                                                          Equations
                                                            Instances For