Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Future of old stdio protocol #410

Closed
Krzysztof-Cieslak opened this issue Jun 13, 2019 · 9 comments
Closed

Future of old stdio protocol #410

Krzysztof-Cieslak opened this issue Jun 13, 2019 · 9 comments

Comments

@Krzysztof-Cieslak
Copy link
Member

Hey,

I'd like to have small discussion about potentially removing old stdio protocol, and leaving LSP as only protocol we support.
LSP seems to be really popular protocol that's supported by many tools and editors, and I feel there is not a lot of value in supporting custom protocol. From the maintenance point of view - it would make code base much simpler, allowing further refactoring and cleaning of the code base.

I'm not really a side in this discussion - we've been using HTTP protocol (which now is getting removed - #409) and for next Ionide release we're moving everything to the LSP. This change would impact mostly VIM and Emacs users, so I'd hope that Vim and Emacs plugins maintainers would give their opinions. I don;t know if that makes sense for VIM and Emacs, I don't know if the LSP plugins for those editors are good enough, but I'd love to see this discussed

CC:
@juergenhoetzel - emacs fsharp-mode maintainer
@kjnilsson - vim-fsharp maintainer
@TOTBWF - emacs lsp-mode PR to add F# support out of the box

@baronfel
Copy link
Contributor

I'd go one further: is it possible to subsume any specific editor features in fsharp-mode and vim-fsharp into FSAC and eventually deprecate those projects in favor of LSP clients for the respective editors?

@TOTBWF
Copy link

TOTBWF commented Jul 13, 2019

On the emacs side, we still would need to keep syntax highlighting, indentation, repl interaction, etc. separate from the lsp-mode side. I think the way to go would be to

  1. Remove all the FSAC stuff from emacs-fsharp-mode, and point people to lsp-mode as a possible client. I know some people prefer elgot, and though there may not be an F# implementation at this moment, I don't think its a great idea to lock people in to an lsp client implementation.
  2. Create a package called ionide-emacs that bundles together the lsp-mode implementation as well as emacs-fsharp-mode, and implements some of the UI niceties that ionide provides.

@juergenhoetzel What are your thoughts on this?

@Krzysztof-Cieslak
Copy link
Member Author

Create a package called ionide-emacs that bundles together the lsp-mode implementation as well as emacs-fsharp-mode, and implements some of the UI niceties that ionide provides.

I 👍 this plan

@Krzysztof-Cieslak
Copy link
Member Author

Initial version of LSP based vim plugin is here - https://github.com/ionide/Ionide-vim - created by @cannorin.
It's based on old vim-fsharp by @kjnilsson, with rewritten FSAC integration to use vim LSP client.

@kjnilsson any thoughts on this? I don't want to make it looks like a hostile fork, I'd be happy to add you as an owner on the repo, or we may just want to merge changes back to vim-fsharp if you'd prefer to do that

@kjnilsson
Copy link
Contributor

I approve of any changes that simplifies code and options and driving vim through the ionide project :)

@juergenhoetzel
Copy link
Contributor

On the emacs side, we still would need to keep syntax highlighting, indentation, repl interaction, etc. separate from the lsp-mode side. I think the way to go would be to

That's exactly what I plan 👍

  1. Remove all the FSAC stuff from emacs-fsharp-mode, and point people to lsp-mode as a possible client. I know some people prefer elgot, and though there may not be an F# implementation at this moment, I don't think its a great idea to lock people in to an lsp client implementation.
  2. Create a package called ionide-emacs that bundles together the lsp-mode implementation as well as emacs-fsharp-mode, and implements some of the UI niceties that ionide provides.

@juergenhoetzel What are your thoughts on this?

Sounds like a good plan. The completion part in fsharp-mode has many flaws and is tied to company even tough some people prefer autocomplete. Same issue with with the syntax-checker/linter: We use flycheck even tough Emacs 26 ships flymake, which some users prefer.

Furthermore this allows to remove the fsharp-mode-bin repository that is only there to distribute fsautocomplete.exe,

In a nutshell: A good plan. I have to maintain less code and users get a more flexible setup and less Emacs dependencies if they only want to edit F# code without Intellisense. I will start a LSP branch on emacs-fsharp-mode.

@enricosada
Copy link
Contributor

Nice, so we can proceeed with LSP only for the next version of FSAC!

I'll remove it, moving all current integration tests (#385 ) to target lsp

@juergenhoetzel
Copy link
Contributor

Nice, so we can proceeed with LSP only for the next version of FSAC!

I'll remove it, moving all current integration tests (#385 ) to target lsp

👍 Next realease of fsharp-mode will be based on LSP.
I hope that next weekend I will find time for the next tasks.

Any help is appreciated.

@Krzysztof-Cieslak
Copy link
Member Author

#493 removed the old protocol from the code base. We will support only LSP from now on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants