SkriptLang / Skript

Skript is a Spigot plugin which allows server admins to customize their server easily, but without the hassle of programming a plugin or asking/paying someone to program a plugin for them.
https://docs.skriptlang.org
GNU General Public License v3.0
1.08k stars 373 forks source link

Proposal: LSP Support #6447

Closed Eveeifyeve closed 1 month ago

Eveeifyeve commented 9 months ago

Suggestion

To add support for LSP for script languages for editors. This will have the ability to tell you hey there is an error in the Skript code before in Realtime not in runtime. Not only that have intellisense for different editors and ide.

Why?

This will be really good for VsCode, IntelliJ and others to add support for the language.

Other

No response

Agreement

sovdeeth commented 9 months ago

LSP? Liskov Substitutability Principle?

Eveeifyeve commented 9 months ago

LSP Is Language Server Protocol It's what all languages use like C++, Python and even Java Uses a LSP.

https://microsoft.github.io/language-server-protocol/

sovdeeth commented 9 months ago

Sure, though I doubt it will be much of a priority. Feel free to make a PR if you're interested in it!

Eveeifyeve commented 9 months ago

It is, cause how are people going to use your language when there is no support in their editors? They have to see your documentation to find out the issue.

sovdeeth commented 9 months ago

I'm not saying it's not valuable, it's just that none of the team members have expressed much interest in similar topics in the past. In addition, the documentation is pretty comprehensive, so there's no urgent gap to fill there, either. If someone is willing to tackle it, great! I am just not under the impression that anyone's eager to take this on.

Eveeifyeve commented 9 months ago

But if I was you using your language you assume you want intellisence for your language right. But oh that right it's not implemented because you need to implement an LSP server. And so you don't know and you need a browser to look at your documentation. So what do you do then? That why it's really useful in instances where you don't want to have a look at the documentation and you know the code but you forgot the last things about it. It makes your language much easier to master Not Harder.

Eveeifyeve commented 9 months ago

To be quite honest you letting hundreds even thousands of people down with no LSP support or intellisence built in. So my take is if there's no intellisence why make a language?

Eveeifyeve commented 9 months ago

So yeah I will say good luck at getting VSCode Support ore any Editor Support built in Without LSP Support, Because they all use LSP.

bluelhf commented 9 months ago

Because Skript is still intimately tied with Bukkit APIs, a language server would need to either spin up a Bukkit server or work independently of the Skript plugin, neither of which is particularly appealing as a solution. A Bukkit server is clumsy, and projects for parsing independent of a server like skript-parser are a monumental task to make, suffer from feature parity issues, and generally don't seem to receive much interest from developers.

Honestly, Skript is a very simple language, and things like auto-completions can, in limited capacity, already be provided by extensions. The effort required to make a language server seems to outweigh the benefit. Skript is an open source project, you're more than welcome to start development work on a language server if you'd like :)

AyhamAl-Ali commented 9 months ago

To be quite honest you letting hundreds even thousands of people down with no LSP support or intellisence built in. So my take is if there's no intellisence why make a language?

Don't take things personally mate. This is an open source project that aims to help many users from very different roles to achieve their needs using simple English-like programming. It's meant to be simple using plain English sentences, so LSP wasn't a big concern and still isn't that much especially since none of the team have expressed their will to implement such thing, that doesn't mean we are not interested in adding that.

We as a team who are working on this project in our free time as much as we can can't always implement all users wishes. We have skript-grammar project which adds syntax highlighting on different editors like VSCode, Atom, and ST3 and still WIP. If you have the capability to contribute and add LSP to the project feel free to.

Eveeifyeve commented 9 months ago

To be quite honest you letting hundreds even thousands of people down with no LSP support or intellisence built in. So my take is if there's no intellisence why make a language?

Don't take things personally mate. This is an open source project that aims to help many users from very different roles to achieve their needs using simple English-like programming. It's meant to be simple using plain English sentences, so LSP wasn't a big concern and still isn't that much especially since none of the team have expressed their will to implement such thing, that doesn't mean we are not interested in adding that.

We as a team who are working on this project in our free time as much as we can can't always implement all users wishes. We have skript-grammar project which adds syntax highlighting on different editors like VSCode, Atom, and ST3 and still WIP. If you have the capability to contribute and add LSP to the project feel free to.

True but evern starting skript-grammar did you evern thought of building a lsp which does all that for plus intellisence in the future?

Eveeifyeve commented 9 months ago

Because Skript is still intimately tied with Bukkit APIs, a language server would need to either spin up a Bukkit server or work independently of the Skript plugin, neither of which is particularly appealing as a solution. A Bukkit server is clumsy, and projects for parsing independent of a server like skript-parser are a monumental task to make, suffer from feature parity issues, and generally don't seem to receive much interest from developers.

Honestly, Skript is a very simple language, and things like auto-completions can, in limited capacity, already be provided by extensions. The effort required to make a language server seems to outweigh the benefit. Skript is an open source project, you're more than welcome to start development work on a language server if you'd like :)

But if your language is here to stay it should have the support for it but only when they get the extension or when you deside to fully add it to deafult langs to any editor because it can be handy becacuse it will help you in the proccess of adding it in the future.

BaeFell commented 9 months ago

Skript has been around for 13 years. Skript is run by a team of volunteers. If you want LSP, you can either make it yourself or wait until more important and worthwhile tasks are done. You're one of the very very very few to have ever asked for this.

Moderocky commented 9 months ago

Because of the nature of Skript as a language it would be almost impossible to create a useful LSP. Instead of a strict grammar and a regular structure, Skript has hundreds of thousands of potential loose, conditional phrases that would take the place of keywords in another language. To make matters worse, the language itself could be completely different depending on the third-party addons in use as well as what's on the server itself (e.g. the server software, the Minecraft version) so there is practically no way to create a centralised protocol that will provide correct results for all users. Useful auto-complete is unfeasible, accurate error-detection is unfeasible, it's difficult to see what this LSP is going to actually provide at the end of the day, other than syntax highlighting that already has package support in most code editors.

Fortunately, smart editors like Atom (and probably Microsoft's VS Code) can already provide some semblance of smart autocompletion using the grammar packages that are already available by referencing the code in your script file. Aside from the error parsing (which you can use your own server for, or one of the online parsing tools) there's nothing you don't already have.

Eveeifyeve commented 9 months ago

Because of the nature of Skript as a language it would be almost impossible to create a useful LSP. Instead of a strict grammar and a regular structure, Skript has hundreds of thousands of potential loose, conditional phrases that would take the place of keywords in another language. To make matters worse, the language itself could be completely different depending on the third-party addons in use as well as what's on the server itself (e.g. the server software, the Minecraft version) so there is practically no way to create a centralised protocol that will provide correct results for all users. Useful auto-complete is unfeasible, accurate error-detection is unfeasible, it's difficult to see what this LSP is going to actually provide at the end of the day, other than syntax highlighting that already has package support in most code editors.

Fortunately, smart editors like Atom (and probably Microsoft's VS Code) can already provide some semblance of smart autocompletion using the grammar packages that are already available by referencing the code in your script file. Aside from the error parsing (which you can use your own server for, or one of the online parsing tools) there's nothing you don't already have.

True but there is no offical support for any intellisence or anything for .sk files under skriptlang or anything and so your are using third parties to download an extension potentially eaither stealing your data/installing malware or actually has the support for it.

Moderocky commented 9 months ago

As everybody else has said already, if you want this then you're free to produce it yourself, but it's not something that we are able to (or see the need to) dedicate our time and effort to currently.

Eveeifyeve commented 9 months ago

As everybody else has said already, if you want this then you're free to produce it yourself, but it's not something that we are able to (or see the need to) dedicate our time and effort to currently.

This should have been implemented when I get the time I will implement it.

Eveeifyeve commented 9 months ago

I have created a fork here but when i get the time I will develop it.

Eveeifyeve commented 2 months ago

I will keep this issue open, but I will look into getting a pr, depending how possible it is with skript. I will have to digging in the source code of skript and see if it's possible.

angelozerr commented 1 month ago

@Eveeifyeve is a skript language server exists? If yes could you give me explanation how to start it please.

If this language servers exist you can start it inside IntelliJ without developping something at first with LSP4IJ , please read https://idetools.dev/blog/lsp4ij-announcement/ and read section which explains how to integrate TypeScript language server and adapt it for Skript language server

Eveeifyeve commented 1 month ago

I will look into lsp4ij but I would eventually looking into making it an actual lsp then I will look into making extensions for intellij & vscode.

angelozerr commented 1 month ago

I will look into lsp4ij but I would eventually looking into making it an actual lsp then I will look into making extensions for intellij & vscode.

If I understand you want to write a language server for skript and integrate it in vscode and in intellij with lsp4ij, right?

Eveeifyeve commented 1 month ago

I will look into lsp4ij but I would eventually looking into making it an actual lsp then I will look into making extensions for intellij & vscode.

If I understand you want to write a language server for skript and integrate it in vscode and in intellij with lsp4ij, right?

I don't know lsp4ij but I assume no. Since it will be a forum of plugin.

angelozerr commented 1 month ago

If it exists a language server for Skript, you need just to know how to install and start it.

After that, install LSP4IJ and fill the command to start the language server in the command textarea https://github.com/redhat-developer/lsp4ij/blob/main/docs/UserDefinedLanguageServer.md and that's it. No need to develop some IntelliJ plugin.

After that it is better to develop an IJ plugin to embed the language server, see https://github.com/redhat-developer/lsp4ij/blob/main/docs/DeveloperGuide.md

Eveeifyeve commented 1 month ago

If it exists a language server for Skript, you need just to know how to install and start it.

After that, install LSP4IJ and fill the command to start the language server in the command textarea https://github.com/redhat-developer/lsp4ij/blob/main/docs/UserDefinedLanguageServer.md and that's it. No need to develop some IntelliJ plugin.

After that it is better to develop an IJ plugin to embed the language server, see https://github.com/redhat-developer/lsp4ij/blob/main/docs/DeveloperGuide.md

I mean LSP4IJ is kinda useless https://plugins.jetbrains.com/docs/intellij/language-server-protocol.html

plus lsps are stored in https://github.com/JetBrains/intellij-plugins

angelozerr commented 1 month ago

If it exists a language server for Skript, you need just to know how to install and start it.

After that, install LSP4IJ and fill the command to start the language server in the command textarea https://github.com/redhat-developer/lsp4ij/blob/main/docs/UserDefinedLanguageServer.md and that's it. No need to develop some IntelliJ plugin.

After that it is better to develop an IJ plugin to embed the language server, see https://github.com/redhat-developer/lsp4ij/blob/main/docs/DeveloperGuide.md

I mean LSP4IJ is kinda useless https://plugins.jetbrains.com/docs/intellij/language-server-protocol.html

plus lsps are stored in https://github.com/JetBrains/intellij-plugins

If you want to provide a free plugin for community too, LSP4IJ can help you because it is a free plugin.

Eveeifyeve commented 1 month ago

Nope lsp4ij is completely useless. When intellij already gives your these apis.

Eveeifyeve commented 1 month ago

Not just only that I can also define the language and type that intellij provides out of the box, have a look at prisma orm and how it works.

Eveeifyeve commented 1 month ago

Look I get your trying to convince but intellij builtin apis are enough, same with vscode.

sovdeeth commented 1 month ago

Please keep this issue relevant and avoid spamming messages, please. If you want to add another point, you can edit your previous message instead of posting a new one.

Eveeifyeve commented 1 month ago

How about we move this to matrix: @eveeifyeve:matrix.org.

https://matrix.to/#/@eveeifyeve:matrix.org

angelozerr commented 1 month ago

Look I get your trying to convince but intellij builtin apis are enough, same with vscode.

It will work only with Ultimate. If you want to support Ultimate and Community both, LSP4IJ existq for this reason.

Eveeifyeve commented 1 month ago

Look I get your trying to convince but intellij builtin apis are enough, same with vscode.

It will work only with Ultimate. If you want to support Ultimate and Community both, LSP4IJ existq for this reason.

Name at least three lsps on intellij that uses LSP4IJ that has at least 5k+ downloads/stars.

sovdeeth commented 1 month ago

I am closing this issue since it has devolved into discussion about LSP4IJ, rather than the actual feasibility/addition of an LSP for Skript. Open another if you still want to work on an LSP.

Eveeifyeve commented 1 month ago

I am closing this issue since it has devolved into discussion about LSP4IJ, rather than the actual feasibility/addition of an LSP for Skript. Open another if you still want to work on an LSP.

I mean this issue should stay open but the lsp4j discussion should be a discussion opened in Discussions tab about this because it's a discussion.

angelozerr commented 1 month ago

I am closing this issue since it has devolved into discussion about LSP4IJ, rather than the actual feasibility/addition of an LSP for Skript. Open another if you still want to work on an LSP.

I mean this issue should stay open but the lsp4j discussion should be a discussion opened in Discussions tab about this because it's a discussion.

Sorry @Eveeifyeve to disturb your github repo with lsp4ij.

If you think you could be interested with LSP4IJ, dont hesitate to create discussion in your repo and I will try to give you relevant info.

@Eveeifyeve see https://github.com/redhat-developer/lsp4ij/tree/main#who-is-using-lsp4ij to know projects which are based on LSP4IJ

Eveeifyeve commented 3 weeks ago

I am closing this issue since it has devolved into discussion about LSP4IJ, rather than the actual feasibility/addition of an LSP for Skript. Open another if you still want to work on an LSP.

I mean this issue should stay open but the lsp4j discussion should be a discussion opened in Discussions tab about this because it's a discussion.

Sorry @Eveeifyeve to disturb your github repo with lsp4ij.

If you think you could be interested with LSP4IJ, dont hesitate to create discussion in your repo and I will try to give you relevant info.

@Eveeifyeve see https://github.com/redhat-developer/lsp4ij/tree/main#who-is-using-lsp4ij to know projects which are based on LSP4IJ

Please post some additional comments here https://github.com/SkriptLang/Skript/discussions/7208 also @sovdeeth This should re-open as I am still planning to work on an LSP.

sovdeeth commented 3 weeks ago

also @sovdeeth This should re-open as I am still planning to work on an LSP.

Make a PR when you have some code for it!

Eveeifyeve commented 2 weeks ago

also @sovdeeth This should re-open as I am still planning to work on an LSP.

Make a PR when you have some code for it!

I am looking to make a pr for it but the problem is I don't know internally how skript works.