Really thoughtful critique of the Language Server Protocol, what IDEs need to express, and the design decisions made.
miniblog.
Related Posts
The Matter protocol is excellent for puns.
"Does it Matter? It doesn't Matter."
In LSP, a position is represented as a line number and a column offset (in Unicode code units): https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#position
This is pretty elegant. You'll get the correct line regardless of encoding bugs, and the editor already knows the line number so it's cheap to compute.
The book 'The Art of the Metaobject Protocol' has two chapters in the public domain and available online!
Chapter 5: Concepts
Chapter 6: Generic Functions and Methods