emacs-lsp / lsp-mode

Emacs client/library for the Language Server Protocol
https://emacs-lsp.github.io/lsp-mode
GNU General Public License v3.0
4.77k stars 883 forks source link

[feature] gitpod integration #2845

Closed yyoncho closed 3 years ago

yyoncho commented 3 years ago

It will be interesting to explore the posibility of running emacs+lsp-mode+ in gitpod environment. This will allow the new users to explore the possibilities of Emacs with one click.

https://www.gitpod.io/

ghuntley commented 3 years ago

Howdy @yyoncho (or whomever) picks this up. I'm Geoff from Gitpod. 👋

One of the issues that we face at lsp-mode side is that it is hard to obtain/configure the environment outside of emacs. In emacs, it works pretty much out of the box. We have created automatic installation for some of the language servers but we don't have the manpower to do it for all servers(it pretty much needs a person familiar with the particular language for each server).

So Gitpod is basically k8, you get a workspace (a k8 pod) and thus everything is a docker image with git clone overlaid. Right now the implementation is opening a visual editor of vscode to access filesystem as the IDE. Gitpod is more than vscode, it's about a docker execution environment. This means - switching out the IDE with another IDE (inc emacs) is something we want to do in the future.

In practice that means

ie.

FROM mcr.microsoft.com/dotnet/sdk:5.0
RUN APT-GET INSTALL emacs
<overlay emacs config>
<steps for lsp-mode>

Happy to pair with you to help solve above - https://ghuntley.com/meet

yyoncho commented 3 years ago

I spent quite some time working on the issue and here it is the current status:

  1. Partially working configuration using xtermjs - https://gitpod.io/#https://github.com/yyoncho/lsp-gitpod3 - after you click the link and wait gitpod in the right corner you will see a popup - click open in browser and you will see terminal in the browser in which you can start emacs.

  2. Waiting for reply to https://github.com/gitpod-io/gitpod/issues/2419#issuecomment-846959326 - once we have an answer - we will be able to show directly the xtermjs window without having the default IDE.

  3. Lastly - https://github.com/gitpod-io/gitpod/issues/4047 - this prevent us from using gtk broadway which I have tested locally and works well with pgtk branch.

It will be great if someone with TS skills extracts https://github.com/xtermjs/xterm.js/tree/master/demo into separate project.

Once these issues are sorted out we might start working on creating containers with language servers.

yyoncho commented 3 years ago

Here it is what we have now: https://www.youtube.com/watch?v=IROIt1Y-xqs

The next step is to provide the actual ide experience.

BillDStrong commented 3 years ago

This looks very cool. What plans do you have for, say, dot files? Will we be able to install Doom, Spacmacs etc.?

ericdallo commented 3 years ago

That's one of the ideas @BillDStrong :) allow user choose its elisp config or use some base framework!

yyoncho commented 3 years ago

This looks very cool. What plans do you have for, say, dot files? Will we be able to install Doom, Spacmacs etc.?

@BillDStrong doom/spacemacs will be supported ootb (e. g. by providing a flag in the url).

yyoncho commented 3 years ago

I am working on this here: https://github.com/emacs-lsp/lsp-gitpod

To try it you may open (make sure to open the popup or prefix the vscode url with 8080- but keep the vscode tab open)

Vanilla: https://gitpod.io/#PROFILE=vanilla/https://github.com/emacs-lsp/lsp-gitpod Spacemacs: https://gitpod.io/#PROFILE=spacemacs/https://github.com/emacs-lsp/lsp-gitpod

I am working with gitpod team team to solve the usability issues(e. g. removing the need to keep vscode tab open and adding the ability to open any GH project)

ghuntley commented 3 years ago

Seriously cool.

2021-07-05_10-00-35
ericdallo commented 3 years ago

@ghuntley, @yyoncho worked hard to make it work that way :)

ghuntley commented 3 years ago

Using broadway/gtk like this is magical. Keep going back to this and citing your work @yyoncho.

jfmc commented 3 years ago

It looks great!

Is there any hope to compile emacs (or emacsclient?) and broadway/gtk to webassembly so that it runs client-side? (AFAIK VSCode runs entirely on the browser)

yyoncho commented 3 years ago

https://gitpod.io/#ORG=serde-rs,PROJECT=json/https://github.com/yyoncho/lsp-gitpod - here it is WIP for being able to open a particular GH project(in this case serde-rs/json). Click the link, wait for gitpod to pick lsp-gitpod image, and then after enabling the popups you will get emacs in the browser with preconfigured lsp-mode with serveral language servers preinstalled.

brotzeit commented 3 years ago

This works amazingly well.

yyoncho commented 3 years ago

Here is a demo: https://www.youtube.com/watch?v=nXRmMO_Rkuo

I am closing the issue, lets move the discussions in https://github.com/emacs-lsp/lsp-gitpod