Get rid of build date checking.
Do not kill the kernel if URINotFound is thrown.
Fix bad formatting of kernel version.
Fix handling non-BMP PUA characters
Address issues here: WolframResearch/vscode-wolfram#10
Only compare major.minor when doing version checks and only do build date check if versions are identical
Add foldingRange
13.1 syntax updates
Add function usage and function definition patterns to hover.
Fix handling stale content for textDocument/documentSymbol and textDocument/references
Add ProcessDirectory option to RunServerDiagnostic
Add Hierarchical Document Symbol support (outlines)
Add a mini server to diagnostics to test for various bugs before doing actual diagnostics
Work-around serious bug 419428 for now
Internal`WithLocalSettings is broken, so manually insert UnlockQueue[] calls
Use 0.4 seconds, same as default value of spelling squiggly in FE
Handle ScheduledTask in earlier versions before it held its expr
FromDateString was introduced in 12.3, so use a version check
WolframResearch/vscode-wolfram#8
Create a special message for the error and put in queue as regular traffic
This guarantees the proper order of things being read
initializationOptions may be Null
Handle workspace/didChangeConfiguration notification
13.0.1 syntax updates
Only try reporting stdout / stderr for up to 1 second
Fix race condition with stdio error being checked before all previous traffic has been processed
Fix issues found by running with Jupyter Lab LSP
Add Startup Message handling
There may be internal errors in LSPServer that emit messages during Needs["LSPServer`"]
These messages are exceptionally hard to handle because any code for handling has not yet been loaded
The messages may cause unexplained hangs in clients
So manually set $Messages to a tmp file and then handle the messages later
Do not allow PacletManager to participate in finding `Generate` files
Add more features to RunServerDiagnostic:
Print given kernel path and kernel path to-be-started, and check they are the same.
Add a 30 second timeout for the while diagnostic.
Keep track of how long initialize takes, and error if greater than 10 seconds
Use Internal`WithLocalSettings to protect against aborts when doing LockQueue / UnlockQueue
RunServerDiagnostic: reduce "must be run with same kernel" to warning
If there were messages when loading LSPServer`, then report in the diagnostic
use FromDateString with "Language" -> "en"
for more robust date parsing
Various fixes for RunServerDiagnostic:
BinaryWrite may fail, so check return value and quiet BinaryWrite::errfile
If arr == {}
returns unevaluated, then whole Which returns unevaluated
Notes on compatibility have been added to docs/compatibility.md
work around bug 410895, all quotes are stripped from StartProcess on Windows
Experimental support for sockets
Experimental support for multiple clients
Allow textDocument/definition
to lookup symbols with or without contexts
e.g., allow foo`bar to look up definition for bar and vice versa
Allow textDocument/hover
to work with symbols and display their usage messages.
The usage messages are parsed directly from the linear syntax.
Add a build step to generate a file ReplacePUA.wl that provides a map for converting PUA characters to ASCII approximations.
Use LongNames.wl to provide a text replacement for PUA characters that cannot render properly in other editors
Add a background thread for reading from stdin. This thread will write to a queue that the server will read on its main thread.
The server will look at the queue and determine if any of the messages can be discarded.
For example, a long sequence of textDocument/didChange
requests do not need to be processed. Only the final one needs to be processed.
Similarly, other requests that may be in the queue before a textDocument/didChange
may also be discarded.
Do a little work on only reparsing if needed.
Handle textDocument/documentSymbol
Handle more color literals and also handle textDocument/colorPresentation
LSP clients will have a 10 second timeout for starting the kernel. After that, a dialog is presented explaining that there is a problem and diagnostic code is presented to run in a notebook.
Introduce delays for running various methods.
Implementation of textDocument/selectionRange
Initial implementation of semantic tokens
Initial work with formatting
Wire up tabSize and insertSpaces options
Add range formatting
Introduce new BracketMatcher UI
Handle workspace/didChangeWachedFiles that comes from IntelliJ plugin
Add implicit tokens for ExpectedOperands
Add preliminary implementation of hover
Add a native library for handling stdio, and remove the Python proxy script
Keep all content as ByteArrays and introduce publishing of implicit Times
Add versions notification
Add a definitions provider
Display other implicit tokens
Enable sending implicit 1, implicit All, and implicit Null to a client. A little language has been invented for representing implicit tokens, and combinations thereof, with a single character.
Add Creator field
Quit kernel if any messages on startup
Add color provider
Require using File[]
wrapper
Add support for CodeActions
Add ConfidenceLevel setting
Handle other CodeAction commands
Remove Lints that are shadowed
Only convert bytes to string if debug logging
Handle $/
messages gracefully
Fix handling of non-ASCII characters
Use "AdditionalSources"
for Lints
Add some error handling for missing files and directories.
Add --extra argument for extra arguments to WolframKernel
Various bug fixes.
Added LSPServer paclet to CodeTools suite.
Various bug fixes.