# \[ANN\] Julia for VS Code 1.5 released

**URL:** <https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365>\
**Category:** VS Code\
**Tags:** announcement, vscode\
**Created:** [November 12, 2021, 8:22am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365 "2021-11-12T08:22:13Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [November 12, 2021, 8:22am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/1 "2021-11-12T08:22:13Z")

</div>

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](https://github.com/julia-vscode/julia-vscode/blob/master/CHANGELOG.md) 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](https://github.com/aviatesk/JET.jl) using this, but there are many possible applications.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/3/0/304e7306e01efd12aed4380ba49db6ef16951d75.png)

### 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!

 ![image](https://global.discourse-cdn.com/julialang/original/3X/2/3/23af6ee7418e427c0a7b8c29e93fda53d59a4303.png)

### 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.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/0/f/0f8231f2cd2f7fa99a041c62ab75f97659499ba4.png)

### Limited support for runtime-based completions

The extension will now provide auto-completions based on your REPL state in some cases:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/a/9/a970fd1951dc096ae4d845d543ab4cccf781b46a.png)

### Better code formatting based on JuliaFormatter.jl

The `Format Document` and `Format Selection` commands now use [JuliaFormatter.jl](https://github.com/domluna/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](https://github.com/julia-vscode/julia-vscode/blob/af9d6fa8b0ae467caf7b739b6b4a67e55b18ff8f/package.json#L576-L721) 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](https://github.com/julia-vscode/julia-vscode/issues/new) if you run into problems, or reach out here on Discourse, Slack, or Zulip.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [November 12, 2021, 9:00am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/2 "2021-11-12T09:00:45Z")

</div>

Looks great, thanks to all contributors!

Now you might not be surprised by this question given I’ve been banging on about this ever since Juno was put into maintenance mode… could you elaborate on the “some cases” in which auto-completions will work? What are those cases? And do they include the all important names-of-DataFrame-columns?

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [November 12, 2021, 9:04am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/3 "2021-11-12T09:04:54Z")

</div>

I knew you’d ask that 🙂 We’re handling properties and dict indexing only, IIRC, although the DataFrames case in particular is broken atm. Should have a fix for that in the next few hours though.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [November 12, 2021, 9:09am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/4 "2021-11-12T09:09:51Z")

</div>

Hm, I seem to be struggling even with the `Dict` case:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/b/f/bfd53ebdd6b889292de632da807571515b568de1.png)

Julia extension shows version 1.5.4, and I’m on VSCode insiders build if that makes a difference!?

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [November 12, 2021, 9:10am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/5 "2021-11-12T09:10:54Z")

</div>

You can’t access dict keys with `.`, only with `[]`.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [November 12, 2021, 9:15am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/6 "2021-11-12T09:15:16Z")

</div>

Haha, yes I suppose it would be surprising for VSCode to support something which Julia the language doesn’t actually support 🙂

I guess that’s what you get for never really working with Dicts and trying this in the same file where I was trying out the DataFrames autocompletion. Something more useful:

![image](https://global.discourse-cdn.com/julialang/original/3X/3/5/35c25ab4e2a31bdacc07fbe30a16596c33061956.png)

which is great!

---

<div class="post-metadata">

**Author:** ![RoyiAvital](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/royiavital/32/571_2.png) [@RoyiAvital](https://discourse.julialang.org/u/RoyiAvital)\
**Post date:** [November 12, 2021, 9:16am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/7 "2021-11-12T09:16:41Z")

</div>

> [@pfitzseb](#):
>
> ### Better code formatting based on JuliaFormatter.jl
> 
> The `Format Document` and `Format Selection` commands now use [JuliaFormatter.jl](https://github.com/domluna/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.

Could you elaborate on the `.JuliaFormatter.toml` file? Is it per folder? For VS Code? Where should it be?

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [November 12, 2021, 9:34am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/8 "2021-11-12T09:34:26Z")

</div>

> [@RoyiAvital](#):
>
> Could you elaborate on the `.JuliaFormatter.toml` file? Is it per folder? For VS Code? Where should it be?

See [Configuration File · JuliaFormatter](https://domluna.github.io/JuliaFormatter.jl/dev/config/).

EDIT: But some further instructions about locations that are supposed by VSCode integration might be useful. E.g. can it look up for a configuration located under home directory (i.e. which might be outside of the current project) ?

---

<div class="post-metadata">

**Author:** ![ffevotte](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ffevotte/32/6587_2.png) [@ffevotte](https://discourse.julialang.org/u/ffevotte)\
**Post date:** [November 12, 2021, 9:51am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/9 "2021-11-12T09:51:03Z")

</div>

Thanks for this new release: it looks awesome!

> [@pfitzseb](#):
>
> ### 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.

It looks like the name of the commands changed a bit too. For those who (like me) might be a bit lost, I found clear descriptions of the behavior of each command in the updated development version of the documentation:

[https://www.julia-vscode.org/docs/dev/userguide/runningcode/#Running-code-in-the-Julia-REPL](https://www.julia-vscode.org/docs/dev/userguide/runningcode/#Running-code-in-the-Julia-REPL)

(The official [julia-vscode](https://www.julia-vscode.org/) site currently points to the documentation for version 1.3.32; that might change soon)

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [November 12, 2021, 10:00am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/10 "2021-11-12T10:00:43Z")

</div>

This is super nice. A small feature question (I can open an issue if you prefer). When filter/sort rows of a table in table view it could be considered to use the “Row” column (leftmost one) to show the row number in the original table. Currently it is just a sequence of numbers. I realize that both approaches could be useful, but I feel that having an information about row number in the source table is useful more often (as you can later use it to e.g. index into the table row you have filtered)

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [November 12, 2021, 10:12am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/11 "2021-11-12T10:12:46Z")

</div>

> [@ffevotte](#):
>
> that might change soon

[Yup](https://www.julia-vscode.org/docs/stable/userguide/runningcode/#Running-code-in-the-Julia-REPL) (thanks for the reminder).

> [@bkamins](#):
>
> A small feature question (I can open an issue if you prefer).

Please do. This is tricky for some reason I can’t quite recall…

---

<div class="post-metadata">

**Author:** ![mrVeng](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mrveng/32/8836_2.png) [@mrVeng](https://discourse.julialang.org/u/mrVeng)\
**Post date:** [November 12, 2021, 11:20am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/12 "2021-11-12T11:20:03Z")

</div>

> [@pfitzseb](#):
>
> improvements to Language Server startup performance

Thank you all so much for your work! The improvements here are really gigantic, unrecognizable from the last time I tried VSCode!

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [November 12, 2021, 11:52am UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/13 "2021-11-12T11:52:02Z")

</div>

We’ve definitely had this discussion before on [TableView](https://github.com/JuliaComputing/TableView.jl/pull/40)

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [November 12, 2021, 1:21pm UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/14 "2021-11-12T13:21:44Z")

</div>

Just trying out the new table viewer, I see the following:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/6/7/678a05bbfcd27b06eba89a629bb4e714e6fe0c36.png)

when I then click on the table icon next to `testdf` in the Julia extension sidebar, I get:

![image](https://global.discourse-cdn.com/julialang/original/3X/f/6/f6312cb671d4f96c7f35886c76a37f77d4a87e94.png)

when I then type something into the filter field for `x2`, I get an error in the REPL, but before I can see what it is, the entire extension crashes with this error message:

![image](https://global.discourse-cdn.com/julialang/original/3X/1/3/13d6366242fcd641ee528e66d99908842b4d3233.png)

Any ideas where I’m going wrong this time? (I’ve also sent a crash report if that helps)

---

<div class="post-metadata">

**Author:** ![bernhard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bernhard/32/2619_2.png) [@bernhard](https://discourse.julialang.org/u/bernhard)\
**Post date:** [November 12, 2021, 1:49pm UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/15 "2021-11-12T13:49:48Z")

</div>

Have there been any changes to scoping?

I am always using this command  
“Julia: Execute Code Cell in REPL and Move”

My layman approach for debugging modules has been:

1. define some variables in **global** scope (e.g. the inputs of a function of my module), say `df`is defined in global scope
2. open MyModule/src/somefn.jl and execute certain lines within a function I am trying to debug

This does not work anymore as `df` is not defined within `MyModule`

Any ideas?  
I don’t think I am the only one having used that approach.

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [November 12, 2021, 1:52pm UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/16 "2021-11-12T13:52:12Z")

</div>

> [@nilshg](#):
>
> Any ideas where I’m going wrong this time?

Just a bug with async tables… Can repro and will fix.

> [@bernhard](#):
>
> My layman approach for debugging modules has been:
> 
> 1. define some variables in **global** scope (e.g. the inputs of a function of my module), say `df` is defined in global scope
> 2. open MyModule/src/somefn.jl and execute certain lines within a function I am trying to debug
> 
> This does not work anymore as `df` is not defined within `MyModule`
> 
> Any ideas?  
> I don’t think I am the only one having used that approach.

No, nothing changed here. Make sure you’re in the same module (check the lower right) both times, or prefix your variables appropriately.

---

<div class="post-metadata">

**Author:** ![bernhard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bernhard/32/2619_2.png) [@bernhard](https://discourse.julialang.org/u/bernhard)\
**Post date:** [November 12, 2021, 1:57pm UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/17 "2021-11-12T13:57:42Z")

</div>

Thanks. Changing the module does the trick.

I note that I also had to enable these settings (which I think were default before):  
‘Print executed code in REPL and append it to the REPL history’  
‘Julia › Execution: Result Type → REPL’

---

<div class="post-metadata">

**Author:** ![bernhard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bernhard/32/2619_2.png) [@bernhard](https://discourse.julialang.org/u/bernhard)\
**Post date:** [November 12, 2021, 2:26pm UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/18 "2021-11-12T14:26:56Z")

</div>

How about this:

My favourite command ‘\>Julia: execute Code in REPL and Move’. The docs say:

_Whenever, there is some Julia code selected in the currently active editor, this command will execute the selected code. If no text is selected, the command will identify the extent of the top-level language construct that the cursor is located in (except modules) and execute that code block._

Is the last sentence new?  
I loved the ability to go ‘line by line’ with the cursor at the end of the line.  
Now, it seems, I cannot do this anymore (in a function of a module), or is there another command for this?

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [November 12, 2021, 2:38pm UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/19 "2021-11-12T14:38:26Z")

</div>

You’re looking for `Julia: Send Current Line or Selection to REPL`, which doesn’t have a default keybinding anymore.

---

<div class="post-metadata">

**Author:** ![bernhard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bernhard/32/2619_2.png) [@bernhard](https://discourse.julialang.org/u/bernhard)\
**Post date:** [November 12, 2021, 2:56pm UTC](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365/20 "2021-11-12T14:56:56Z")

</div>

Thanks. Much better.  
This also resolves my previous question as this command (which I have been using for ages) has no awareness of the module/scope.

[Next page](https://discourse.julialang.org/t/ann-julia-for-vs-code-1-5-released/71365.md?page=2)
