-
-
Notifications
You must be signed in to change notification settings - Fork 19
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
Finish becoming an LSP client and porting to Serenata 5.0 #460
Comments
This also cleans up the server startup in Proxy since most of the restarting logic is now handled by the Atom language client. References #460
These have been redundant for a long time, we have been warning about them for quite some time, and the name of the package has changed; there should now be little confusion as to whether these packages are still relevant for this one. References #460
Apparently the other one I updated was an unused property. References #460
This replaces the annotations we had with code lenses, which are displayed as inline markers that do not interfere with the code itself. These look like badges that can be clicked, much like gutter annotations that can be clicked. The advantage of lenses is that they aren't almost invisible in the gutter and they support arbitrary commands via the server. The ones we're supporting now just open files, but the server could add lenses in the future that perform refactoring actions or do other tasks. This only wires in retrieving them from the server and displaying them in the editor. A click handler is already present, but I have yet to request that the server execute the command when that happens (and to handle the server asking to open a file at a specific location, as a result). References #460
This fixes the issue described here atom/atom-languageclient#266. References #460
This caused the editor to get a new "long title", thus causing the previous lenses to never be cleaned up. References #460
This can happen when multiple properties are on one line and more than one is an override. References #460
Hi. Thanks for your awesome work, @Gert-dev. I'm using your "gratis" tool since some months (years?) ago and its an amazing tool. I found this when I was just about to start a kind of minimal tool for this, and I'm glad I found this wonderful tool. I just want to say muchísimas gracias. I mean, I know working on such opensource tools is hard, specially because of time... time you could be using in your payed job. Thanks for keeping this alive. I hope I can donate soon, al least a bit in bit, because I feel that just saying "thank you" is not enough when I used for a long time in all my PHP projects. 😅 I hope you can continue your marvelous work 🥇 keeping this tool alive. ¡Gracias! 🎉 |
I wanted to place the index inside the .serenata folder, but it turns out that is a very bad idea. Atom will start firing massive amounts of change requests, due to it watching the database file, every time it is modified. We can disable this for our package, but not for other packages, which will still receive these events en masse uselessly, which not only prevents any other responses from being handled in the meantime, it also spikes CPU usage. Existing indexes will continue to work, this just sets the default for new projects to be the php-ide-serenata cache folder. You can still opt to save them in the project, by changing it, if you want. References #460
This prevents closing it and reopening it every time the installation fails and also makes it consistent with the "Test my setup" flow. References #460
I accidentally uploaded the wrong Serenata files, I've corrected that now. References #460
This is already fixed upstream, but not in the PHAR we download. References #460
They shouldn't be sent until the server is properly set up. I was apparently checking for the wrong condition. References #460
If someone is using Windows or macOS with this package and following this, it would be neat if someone could test the latest version. It should be fairly easy;
Does installation work? Do things such as autocomplete work? It should work the same way as it did before (except for intended changes, of course), but where I expect problems to occur:
I want to release at some point in the future, but I want to avoid releasing a version that works fine on Linux but breaks on pretty much every other platform because I have no access to these, which will be frustrating to users. @nelson6e65 Thanks for your kind words! I admit I'm not always equally motivated to work on Serenata, but I've been using it myself since the start as well (even where I work), so that kept me hanging on in those moments. I still like working on Serenata because there is a lot of potential feature-wise, especially refactoring. The other edge of the sword is that there is always a lot to do in other areas as well 😄 . |
Well, since no one has taken me up on my request or reported any bugs, I'm assuming either no one found any glaring bugs or no one tested (likely the latter). I can hardly delay the next version using Serenata 5.0 indefinitely so I'm going to be releasing it soon, total breakage for users be damned - I don't like it, but it is how it is, I guess - I don't have access to Windows or macOS, so I can't test either of them. I moved the "unused" servers issue to #475 and am closing this issue as the initial migration is complete. |
The branch
feature/lsp-client
currently contains all the work towards becoming an LSP client that works with themaster
branch of the Serenata server - which is pretty much a working LSP server now.There are still some things left to do on the client side here, which is mostly cleanup and bugfixing. I'll just drop a list of these here:
Proxy
and displaying notifications or logs about thematom-languageclient
viaclient.restartAllServers()
Set up current project
.serenata
folder does not exist yet in the project folder (simply create that intermediate directory when needed)Reindex project
, we may be able to do that by simply callingclient.restartAllServers()
because the server will rescan the project on every initialization (we asked this from the client end before)project-manager
is no longer required as a dependencyminimumWordLength
setting from theautocomplete-plus
package - if users want autocompletion to immediately trigger for every character, as was the case before, change this setting to 0SerenataClient
class5.0.0-RC2
(or whatever version comes next), as currently the "Interface doesn't exist" bug that was already fixed upstream is still presentSet up current project
A\B
, only part of the name will be underlinedatom-languageclient
thus determines the range of the symbol by itself based on a list of "word separators"; it will also try to fetch document symbols to determine it first, so this can also be fixed by implementingtextDocument/documentHighlight
in the server - at least for qualified class, constant and function names anyway - and enabling thecode-highlight
service heregetClassListForFile
events on file open, which probably yield the same results and aren't cached by client nor server. We should cache this client- or server-side@inheritDoc
does not seem to replace the existing@
, it is likely thereplacementPrefix
is not set correctly (or the server is providing the wrongtextEdit
that does not include it in its range)The text was updated successfully, but these errors were encountered: