On choosing a good syntax for the EBNF specification of your programming language: https://dwheeler.com/essays/dont-use-iso-14977-ebnf.html
miniblog.
Related Posts
TIL that LSP 3.18 was released this month! Several APIs now support richer content, such as tooltips or docs on code action kinds.
Signature help continues to improve too, allowing you see more about a function at its call site.
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.
I still find C-style format strings to be more readable than Rust format strings.
"Player %s has score %d" vs "Player {} has score {}".
The former feels a little easier to visualise how it will look in practice.
Have I missed anything? Every format string specification I've ever looked at is surprisingly big.