Hey folks,
we’ve just released version 1.5 of the Julia extension for VS Code. Here are some of the highlights in this (and the unannounced 1.4) release, but feel free to check out the changelog anyways.
Runtime diagnostics/JET.jl integration
The custom application/vnd.julia-vscode.diagnostics
MIME type allows packages to display runtime diagnostics directly from your REPL. I’m currently only aware of JET.jl using this, but there are many possible applications.
Interactive plot pane
The plot pane is now interactive – you can zoom and pan plots (hold Alt/Option for that functionality) as well as save them to disk or your clipboard. Thanks to @Abdulrhmn_Ghanem for the implementation of this feature!
Improved table viewer
The integrated table viewer got mostly re-implemented and is more powerful (and prettier) than ever before. It can display arbitrarily large Tables.jl-compatible datasets (although too many columns may cause issues), supports filtering and sorting (yes, even for tables with a million rows) as well as support for copying the selected rows to the system clipboard.
Limited support for runtime-based completions
The extension will now provide auto-completions based on your REPL state in some cases:
Better code formatting based on JuliaFormatter.jl
The Format Document
and Format Selection
commands now use JuliaFormatter.jl to make your code look exactly how you want it to. Note that all configuration options for code formatting were removed; you will need to use a .JuliaFormatter.toml
instead.
New default keybindings for code evaluation
We’ve moved to a new set of default keybindings for inline evaluation to stay in line with the keybindings used for notebooks. Check the individual commands in the command palette for more details or take a look at the source directly.
Various improvements to Language Server startup performance and responsiveness
The language server should be substantially more responsive with this release, especially on startup (instead of blocking all interaction). Package indexing is now more “interrupt-safe”, because caches are written more often. At the very least, the UI should give you a clue as to what exactly is going on at the moment and how far along we are.
Unfortunately, there still are performance issues in the LS, which may cause it to get stuck trying to lint your code for multiple minutes in some rare circumstances, especially with large codebases. We’re working on tracking down what exactly goes wrong there.
As always, don’t hesitate to open an issue if you run into problems, or reach out here on Discourse, Slack, or Zulip.