Skip to content

Adding Go Spec #905

Open
Open
@joelschutz

Description

@joelschutz

What are you trying to do?

I'm implementing a fully featured Go Spec based on gopls

How is it done today, and what are the limits of current practice?

There is no official Go Spec available at the moment and a simple configuration is not able to access all the features:

  • Completion (limited and only by kernel)
  • Hover
  • Diagnostics
  • References
  • Continuous Hinitng
  • Signature Suggestions
  • Rename

What is new in your approach and why do you think it will be successful?

As gopls require a module and some boilerplate to recognize the files, I think the best approach would be to add customizable ShadowFileSystem for the LanguageSession, so a extension could control how the temporary files should be handled and help the language server to work properly.

That way there is no need for changes on the LSP implementation further, a new extension could be created to handle complex setups by itself and without hacks.

Who cares? If you are successful, what difference will it make?

  • Go is not a popular language for datascience, but it can be very useful in the field for more computational intensive task.
  • The Go community has gopls as the official language server, so it should be a very stable benchmark for development in the future
  • May help others implementing other picky languages

What are the risks?

  • The handling of shadowFiles and serverMessages could be affected
  • Some logic could be transfered from the frontEnd to the backEnd
  • May break compatibility with currently supported languages

How long will it take?

What are the mid-term and final “exams” to check for success?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions