E40E [feature] LSP quick fix should support `expandStart` / `expandEnd` · Issue #2301 · ast-grep/ast-grep · GitHub
[go: up one dir, main page]

Skip to content

[feature] LSP quick fix should support expandStart / expandEnd #2301

@evangalen

Description

@evangalen

Please read the FAQ for the bug you encountered.

  • I have read the existing FAQ

⏯ Playground Link

https://ast-grep.github.io/playground.html#eyJtb2RlIjoiQ29uZmlnIiwibGFuZyI6InR5cGVzY3JpcHQiLCJxdWVyeSI6IiIsInJld3JpdGUiOiIiLCJzdHJpY3RuZXNzIjoic21hcnQiLCJzZWxlY3RvciI6IiIsImNvbmZpZyI6IiMgeWFtbC1sYW5ndWFnZS1zZXJ2ZXI6ICRzY2hlbWE9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FzdC1ncmVwL2FzdC1ncmVwL21haW4vc2NoZW1hcy9ydWxlLmpzb25cblxuIyBBIHNpbmdsZSBydWxlIGRlZmluaXRpb24gdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gYm90aCBKYXZhIGFuZCBLb3RsaW4gZmlsZXMuXG5pZDogcmV3cml0ZS1sc3AtaW5saW5lLWVzbGludC1kaXNhYmxlXG5sYW5ndWFnZTogdHN4XG5zZXZlcml0eTogaGludFxucnVsZTpcbiAga2luZDogdHlwZV9wYXJhbWV0ZXJcbiAgcGF0dGVybjogJEZPTExPV0lOR19XSVRIX1BPU1NJQkxFX1RSQUlMSU5HX0NPTU FF8 1BXG4gIGZvbGxvd3M6XG4gICAga2luZDogY29tbWVudFxuICAgIHJlZ2V4OiBeLy9cXHMqZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXFxzK1tAXFx3XVxuICAgIHBhdHRlcm46ICRPUklHSU5BTF9DT01NRU5UXG50cmFuc2Zvcm06XG4gIE1PRElGSUVEX0NPTU1FTlQ6XG4gICAgcmVwbGFjZTpcbiAgICAgIHNvdXJjZTogJE9SSUdJTkFMX0NPTU1FTlRcbiAgICAgIHJlcGxhY2U6IF4vL1xccyplc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcXHMrKD88RElTQUJMRURfRVNMSU5UX1JVTEVTPltAXFx3XS4qKSRcbiAgICAgIGJ5OiAnLy8gZXNsaW50LWRpc2FibGUtbGluZSAkRElTQUJMRURfRVNMSU5UX1JVTEVTJ1xuZml4OlxuICAjIGZpeCBvbmx5IHdvcmtzIGluIHRoZSBQbGF5Z3JvdW5kIGFuZCBDTEksXG4gICMgYnV0IHVzaW5nIExTUCBubyBxdWlja2ZpeCBpcyBrbm93biB1bmxlc3MgSSBjb21tZW50IG91dCBgZXhwYW5kU3RhcnRgIGFuZCBgZXhwYW5kRW5kYFxuICAtIHRpdGxlOiBjaGFuZ2UgaW50byBgLy8gZXNsaW50LWRpc2FibGUtbGluZWAgY29tbWVudFxuICAgIHRlbXBsYXRlOiB8LVxuICAgICAgJEZPTExPV0lOR19XSVRIX1BPU1NJQkxFX1RSQUlMSU5HX0NPTU1BLCAkTU9ESUZJRURfQ09NTUVOVFxuICAgIGV4cGFuZFN0YXJ0OiB7IGtpbmQ6IGNvbW1lbnQgfVxuICAgIGV4cGFuZEVuZDogeyByZWdleDogJywnIH1cbiIsInNvdXJjZSI6InR5cGUgTXlUeXBlPFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBBcmcgPSBhbnksXG4+ID0geyBhcmc6IEFyZyB9O1xuIn0=

💻 Code

Using expandStart and / or expandEnd causes the quick fix to no longer be shown in my JetBrains IDE (that I integrated with ast-grep using LSP via the LSP4IJ plugin for JetBrains IDEs).

Code to test (also see Playground)

type MyType<
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  Arg = any,
> = { arg: Arg };

ast-grep YAML rule:

# yaml-language-server: $schema=https://raw.githubusercontent.com/ast-grep/ast-grep/main/schemas/rule.json

# A single rule definition that will be applied to both Java and Kotlin files.
id: rewrite-lsp-inline-eslint-disable
language: tsx
severity: hint
rule:
  kind: type_parameter
  pattern: $FOLLOWING_WITH_POSSIBLE_TRAILING_COMMA
  follows:
    kind: comment
    regex: ^//\s*eslint-disable-next-line\s+[@\w]
    pattern: $ORIGINAL_COMMENT
transform:
  MODIFIED_COMMENT:
    replace:
      source: $ORIGINAL_COMMENT
      replace: ^//\s*eslint-disable-next-line\s+(?<DISABLED_ESLINT_RULES>[@\w].*)$
      by: '// eslint-disable-line $DISABLED_ESLINT_RULES'
fix:
  # fix only works in the Playground and CLI,
  # but using LSP no quickfix is known unless I comment out `expandStart` and `expandEnd`
  - title: change into `// eslint-disable-line` comment
    template: |-
      $FOLLOWING_WITH_POSSIBLE_TRAILING_COMMA, $MODIFIED_COMMENT
    expandStart: { kind: comment }
    expandEnd: { regex: ',' }

🙁 Actual behavior

No quick fix is shown in my IDE

🙂 Expected behavior

A quick fix is shown in my IDE

Additional information about the issue

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0