Rendered at 14:26:53 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
bbkane 1 days ago [-]
Started in case I ever build a language server, thanks! The interface looks very understandable, and the debug server looks really nice.
Now that I think about it, it might be really cool to add LSP to my CLI framework[0] (I already have tab completion for shells, why not make an editor plugin if it's this easy ..)
I wrote this for the infracost LSP so I could write multiple IDE extensions. Its not even really a language server, its just a neat way to parse the Terraform/Cloudformation and return diagnostics.
Language servers are cool!
pmoati 8 hours ago [-]
I really like the interface-based auto-registration pattern, so elegeant!
The implementation of HoverHandler seems clever... no manual wiring.
That's the kind of API design that makes Go's implicit interfaces shine.
I'm curious: How does error recovery work when a handler panics? Does the server keep the connection alive, or does it tear down?
rumno0 7 hours ago [-]
Thanks -
If its a straight error, then the error response is returned and we're all happy!
If the handler panics, the server crashes, so that's something I'm off to fix now!
I actually started out using that. I wanted a debug UI to track messages which was the major driver in creating my own tbh
SwiftyBug 1 days ago [-]
Very nice. Now I want to build a language server. If only I had anything to build it for.
catlifeonmars 23 hours ago [-]
To give you some idea how versatile a language server is, I wrote one once to provide go-to-definition between two related blocks in a large proprietary YAML configuration file. If the definition was missing, it would also render the red squiggly line to indicate that something was misspelled.
Another time I used one to make the hosts in my SSH configuration file clickable to either open a terminal with a session or just to display cpu/memory statistics.
Lots of neat editor-independent interactions can be enabled using language servers.
rumno0 18 hours ago [-]
I've been thinking about this comment for a few hours now! I love it! I like building VS Code extensions and realized quickly the benefit of writing the logic in an LSP but I would never have thought to do the SSH config thing you describe.
I've now started a Makefile lsp since you've inspired me to think about the painful scenarios that LSP can solve if I think a bit wider.
Cheers for that!!
rumno0 23 hours ago [-]
thanks!
Thankfully, I finally had a reason to build an LSP (infracost LSP), so it motivated this and I'm really pleased with it
peaklineops 22 hours ago [-]
[dead]
devnotes77 1 days ago [-]
[dead]
zephyrwhimsy 22 hours ago [-]
[dead]
zephyrwhimsy 23 hours ago [-]
Markdown survived because it optimized for the right tradeoff: human readability with just enough structure for machine parsing.
whateveracct 23 hours ago [-]
// DiagnosticSeverity indicates the severity of a diagnostic.
type DiagnosticSeverity int
Hmmm :robot:
jryio 23 hours ago [-]
The godoc format enforces that the comment start with the name of the identifier and be a complete sentence(s) describing what that identifier does. Predates LLMs
badc0ffee 18 hours ago [-]
I wouldn't say it enforces that the comment start with the name of the identifier. Maybe certain linter options enforce that?
In https://go.dev/doc/comment it seems to be a convention, but there are a couple of examples there where the don't follow it.
rumno0 23 hours ago [-]
Yeah some times godoc comments look crap by necessity
fainpul 22 hours ago [-]
But you don't have to add a docstring. Cases like this are worse than no docstring at all, because it wastes the reader's time.
If you add one, at least make the effort to provide some useful information. For example which is more severe: higher or lower numbers.
rumno0 22 hours ago [-]
I disagree - you should have docstring and I don't think this is worse by having it... its just not ideal
maleldil 17 hours ago [-]
Every public item should have a docstring, even if it's just to indicate that there's nothing special about the item.
hrmtst93837 20 hours ago [-]
Boilerplate docstrings are lint that spreads, and stale ones are worse, I've seen sevreity fields documented less clearly than the code they annotate.
Now that I think about it, it might be really cool to add LSP to my CLI framework[0] (I already have tab completion for shells, why not make an editor plugin if it's this easy ..)
0: https://github.com/bbkane/warg
Language servers are cool!
The implementation of HoverHandler seems clever... no manual wiring. That's the kind of API design that makes Go's implicit interfaces shine.
I'm curious: How does error recovery work when a handler panics? Does the server keep the connection alive, or does it tear down?
If its a straight error, then the error response is returned and we're all happy!
If the handler panics, the server crashes, so that's something I'm off to fix now!
Thanks!!!!
Another time I used one to make the hosts in my SSH configuration file clickable to either open a terminal with a session or just to display cpu/memory statistics.
Lots of neat editor-independent interactions can be enabled using language servers.
I've now started a Makefile lsp since you've inspired me to think about the painful scenarios that LSP can solve if I think a bit wider.
Cheers for that!!
Thankfully, I finally had a reason to build an LSP (infracost LSP), so it motivated this and I'm really pleased with it
In https://go.dev/doc/comment it seems to be a convention, but there are a couple of examples there where the don't follow it.
If you add one, at least make the effort to provide some useful information. For example which is more severe: higher or lower numbers.