name: "Feature request"
description: "Suggest a new feature or other enhancement."
labels: [enhancement]
assignees: []
body:
  - type: markdown
    attributes:
      value: We use GitHub issues for tracking bugs and enhancements. For questions, please use [the community forum](https://discuss.hashicorp.com/c/terraform-core/terraform-editor-integrations/) where there are more people ready to help.

  - type: input
    id: version
    attributes:
      label: Language Server Version
      description: |
        Run `terraform-ls --version` to show the version.
        If you are not running the latest version, please try upgrading because your issue may have already been fixed.
      placeholder: v0.31.2
    validations:
      required: true

  - type: textarea
    id: problem
    attributes:
      label: Problem Statement
      description: |
        In order to properly evaluate a feature request, it is necessary to understand the use cases for it.
        Please describe below the _end goal_ you are trying to achieve that has led you to request this feature.
        Please keep this section focused on the problem and not on the suggested solution. We'll get to that in a moment, below!

        If you've already tried to solve the problem with existing features and found a limitation that prevented you from succeeding, please describe it below in as much detail as possible.
        Ideally, this would include real configuration snippets that you tried, actions you performed (e.g. autocompletion in a particular position in that snippet), and what results you got in each case.
        Please remove any sensitive information such as passwords before sharing configuration snippets.
      placeholder: |
        (I can do ... today but ...)

        When I do ... then ...
        It would be helpful if ...
    validations:
      required: true

  - type: textarea
    id: attempted
    attributes:
      label: Attempted Solutions
      description: |
        If you've already tried to solve the problem within server's existing features and found a limitation that prevented you from succeeding, please describe it below in as much detail as possible.

        Ideally, this would include real configuration snippets that you tried, actions you performed (e.g. autocompletion in a particular position in that snippet), and what results you got in each case.

        Please remove any sensitive information such as passwords before sharing configuration snippets and command lines.
    validations:
      required: false

  - type: textarea
    id: proposal
    attributes:
      label: Proposal
      description: |
        If you have an idea for a way to address the problem via a change to existing features, please describe it below.
        In this section, it's helpful to include specific examples of how what you are suggesting might look in configuration files, or on the command line, since that allows us to understand the full picture of what you are proposing.
        If you're not sure of some details, don't worry! When we evaluate the feature request we may suggest modifications as necessary to work within the design constraints of the Language Server.
    validations:
      required: false

  - type: textarea
    id: lsp
    attributes:
      label: Related LSP methods
      description: |
        Please mention if you know your request is related to any particular LSP method(s), e.g. `textDocument/completion`.
        The specification with all methods is available at https://microsoft.github.io/language-server-protocol/specifications/specification-current/
      placeholder: |
        - textDocument/completion
        - textDocument/definition
        - textDocument/hover
        - textDocument/signatureHelp
    validations:
      required: false

  - type: textarea
    id: references
    attributes:
      label: References
      description: |
        Are there any other GitHub issues (open or closed) or pull requests that relate to this request? Or links to documentation pages?
        Guide to referencing Github issues: https://help.github.com/articles/basic-writing-and-formatting-syntax/#referencing-issues-and-pull-requests
      placeholder: |
        - #123
        - #456
        - hashicorp/terraform#789
        - https://developer.hashicorp.com/terraform/language/expressions/dynamic-blocks
    validations:
      required: false

  - type: checkboxes
    id: contribution
    attributes:
      label: Help Wanted
      description: Is this something you're able to or interested in helping out with? This is not required but a helpful way to signal to us that you're planning to open a PR with a fix.
      options:
        - label: I'm interested in contributing a fix myself
          required: false

  - type: textarea
    id: community
    attributes:
      label: Community Note
      description: Please do not remove, edit, or change the following note for our community. Just leave everything in this textbox as-is.
      value: |
        - Please vote on this issue by adding a 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to the original issue to help the community and maintainers prioritize this request
        - Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
        - If you are interested in working on this issue or have submitted a pull request, please leave a comment
    validations:
      required: true
