LSP DidOpen And Semantic Tokens

Most of the week was connecting LSP events to files and workspaces. The first was the LSP initialize response, so the main thread call 'didOpen' when an LSP is ready. The reason the main thread handles it, is so the background thread doesn't need to maintain a copy of each file. Potentially a lock can be used, but there's a chance that it'd block the main thread. In either case, it's not likely that a memory copy when an LSP loads is slow enough to cause noticeable lag. If it's a large file, well... hopefully the LSPs don't crash. LSPs aren't always the highest quality.

I wrote some code connecting diagnostics (the warnings and errors you get while typing) to the main thread, but I'm planning to implement a few LSP events before I do anything with UI. I have partial code to track line changes so diagnostics jump to the correct place, but only enough for a few tests. I'll need to implement it fully and test it, but I want to handle more LSP events before I harden that event.

The third LSP event I worked on was semantic tokens. The language server protocol is insane. Clients can make up token types. I have no idea how people writing themes are supposed to handle them. Maybe there's a fix up in an addon/extension, but I don't plan on having javascript extensions so I haven't looked deeply. I wrote code so Bold understands the tokens, but like diagnostics, I haven't tried to update UI to reflect it. The concern for this week was wiring everything together and making sure the code architecture doesn't get out of hand