-
Notifications
You must be signed in to change notification settings - Fork 200
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
Gripes about lsp-mode/elgot comparison #180
Comments
Relax, I get it: you're lsp-mode's dev now, rewrote it, and now think the comparison is unfair. That's quite alright and congratulations! I'm sure none of those changes were motivated by Eglot's appearance at all... ;-) Now, I don't use I had a look at your new version: it's much shorter and seems to read better, even with all those foreign macros, so kudos again. Has it drifted away from the goal of integration into Emacs/ELPA? If so, that's unfortunate: Eglot requires nothing that is not in Emacs, which is an explicit goal. Anyway, as you probably expected, I still think Eglot design is better. For example, I think it's much nicer to write method handlers as But that's all under the hood. Here are some user-visible differences I picked up that you might want to bring into
So, in my view, Another very interesting bit is this DAP thing. Is it a standard already? Where can I find it? Again, if it's JSONRPC-based, you could look into using Lastly, I don't care much about Spacemacs, but I don't see why Eglot wouldn't work there. It's still Emacs right? I also don't care much about servers who work outside the spec (I begrudgingly added the java/jdt bits which could be much simpler if it had some startup scripts). Also, I care even less about VS code :-) Morally, non-compliance or compliance to a particular set of clients/servers is against the idea of an open standard in the first place, and against the core ideas of Emacs, which are about software freedom. |
First of all my focus is on language servers, elisp is not my strength but I
There are many great points mentioned in the reply and lots of places that
As a person who mostly focuses on server-side implementation I've faced the same embarrassment and done something similar. I'll learn from the arguments here.
The goal of integration into Emacs/ELPA has been abandoned emacs-lsp/lsp-mode#83
I second these arguments. lsp-mode can definitely learn from the generic function style used throught in eglot. The point about byte-compiler is insightful. Do you mind sharing some more pointers?
The impression that Futhermore, in emacs-ccls/emacs-cquery, after receiving
I'm very sensitive to this sort of project root topics.
(use-package lsp-mode
:commands lsp
:init (setq lsp-auto-guess-root t)
:config (require 'lsp-clients)) For my own good, I am pretty happy with 1) bottom-up root indicator file Returning to this menu, it and (
See here https://github.com/emacs-lsp/lsp-clangd/issues/11#issuecomment-445587207
Do you think using plist for JSON Objects has performance/memory advantages over
This is another thing that is not regulated in the spec but matters: there is According to
@tigersoldier but he is probably quite busy at this point :( company-lsp did cause some confusion among lsp-mode/cquery/ccls users. (I prefer to keep the status quo from the perspective of ease of maintenance burden.)
I migrated from @tumashu @alexmurray (sorry if I shouldn't mention you here.. but you can shed some light how to make flymake look better) |
I haven't measured anything so I don't know. It would depend on the application. Jsonrpc could be taught to use hash tables, it's an implementation detail...
Maybe yes. But now we say only "do certain things things when all files are ready". |
@MaskRay I reckon that lsp-mode users prefer all of its essential features/packages be under lsp.el! company-lsp is that important! |
@eubarbosa, to discuss |
After 973cd81 I won't waste my time on detailed answer. I just wanted to you update the out of date readme but apparently this is too hard. Here are few comments:
And much more... |
* README.md (Historical differences to lsp-mode.el): New section title. Also fix link.
Look, I don't want to write a comparison table, but you can write your own anywhere you want. I framed that comparison table as an historical artifact, so even though it's out-of-date, now it's out-of-date by definition. I've now changed the section title to Historical differences to lsp-mode (also I fixed the lsp-mode link so people can go to your repo and see what's up). I left the comparison in the last part of the READMEbecause it contains some of the reasons that led me to start Eglot in May 2018. I briefly discussed that comparison with Vibhav even. You seem to be a slightly angry and I don't understand why. The reason I am investing time in answering this is I think it's nice to be a little less competitive and a little more cooperative. Like @MaskRay for example. Wouldn't that be great for both projects?
Then please make a bug report of it, or better yet, a pull request. It's no fun just to say "you are wrong" and not explain why.
Yes. I talked to RLS developers and it has no easy way to fix that problem and there's nothing yet in the spec (yet) that solves the problem. So until then there is a small addition to eglot.el that can be wiped away. It's quite different from supporting "40+ extension methods".
Here's the difference: a newcomer to lsp.el has to eventually arrive at an indirection table in
It's really a very simple message: sometimes contributing to other projects is fun. And sometimes it isn't, when the implementations suck. You decide that, not me. Maximize your fun, I say, and don't be so angry ;-) If you think And the packages aren't "mine" anymore, they're Emacs's, or technically the FSF's.
(You seem to take much pride in that, why?) What can it be integrated with? Would you interested in contributing it to Emacs anyway?
Being a macro doesn't mean it does not affect compilation. Different macros have different expansions, and some are easier to optimize than others. But fair enough, I take it back. I'll only say it looks very odd for a Lisp macro, and there are alternatives like
lol :-) |
@joaotavora Actually, I am not angered at all.
Is this what you call cooperative?!(I am not angered, it is funny)
Here it is how the clients actually register a notification handler: https://github.com/emacs-lsp/lsp-java/blob/master/lsp-java.el#L899 - easier to read and track than the eglot solution since you have all of the configuration in one place. You do 5 minute research and you throw comments like that all the time, why should I care you explain? And for dap-mode: I am fine with contributing it to Emacs but this is not possible(I might be wrong, I am not an expert).
PS: You could do better with the doc change. |
Cooperative doesn't mean I have to track your movements or even use your project. I don't have time for that, sorry. But it does mean that if you ask me something, like I asked you to point out the error in I am not a cynic Ivan, I really do mean this.
Good. On writing things can indeed sound different. Now can you point out the actual flaw you said you found in didChange? Did you stumble upon it in testing or was it by reading the code? Open a new issue: it would be very helpful.
(There you go, finding things funny again in a way that some humans would characterize as being a tiny bit aggrieved.) Look I've understood perfectly how it works in Taking your example, how can I debug the handler for
Putting handlers in a global object is a very JS-esque solution, also useful for languages with no direct OO support, like Elisp. But in Common Lisp, you have generic functions (look up CLOS if you're interested). Emacs lisp has a decent CLOS subset in
You mean the README? Sorry, but no. Especially if you are vaguely going to make me guess for the changes instead of arguing properly. |
@yyoncho |
@beyondpie, this is maybe not the best place to report LSP-mode issues, I'd suggest to use its repository instead. If you do get to try Eglot in Spacemacs (or any other kind of Emacs distribution), do give feedback (in a new issue). |
Also, I am locking this issue, as it has the potential to attract off-topic comments. Mail me directly or open a new issue requesting this one to be opened if you really must comment here. |
Most of the statements in lsp-mode/eglot comparison are either out of date, wrong or misleading. For example:
In addition to these base features lsp-mode has (in separate packages):
There are a lot of small things that are not included in the list, but this is the general overview.
The text was updated successfully, but these errors were encountered: