# New: Julia for JetBrains IDEs (Flexible Julia)

**URL:** <https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658>\
**Category:** Tooling\
**Created:** [December 21, 2025, 5:19am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658 "2025-12-21T05:19:07Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 7, 2026, 7:03am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/81 "2026-01-07T07:03:56Z")

</div>

And it was a plugin - which i wasn’t aware of, so I would have only made it optional to begin with (we would have forced users to install the other plugin otherwise, too - which is bad UX). I’ll rather look into upgrading our system now.

---

<div class="post-metadata">

**Author:** ![xgdgsc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xgdgsc/32/608_2.png) [@xgdgsc](https://discourse.julialang.org/u/xgdgsc)\
**Post date:** [January 7, 2026, 9:03am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/82 "2026-01-07T09:03:26Z")

</div>

Has the additional output around like [New: Julia for JetBrains IDEs (Flexible Julia) - #48 by csvance](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/48) been fixed in 2026.3.0 ? I have them in 2026.2 .

And might be better make the sending code to REPL keyboard shortcut go to the next line afterwards. And something like the code cell execution would also be nice like [Running Code · Julia in VS Code](https://www.julia-vscode.org/docs/dev/userguide/runningcode/#Julia:-Execute-Code-Cell-in-REPL) . Does it do `the command will identify the extent of the top-level language construct that the cursor is located in` now?

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 7, 2026, 9:09am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/83 "2026-01-07T09:09:55Z")

</div>

Version 2026.3.0 has just been approved on the marketplace 🙂

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 7, 2026, 9:11am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/84 "2026-01-07T09:11:35Z")

</div>

> Has the additional output around like [New: Julia for JetBrains IDEs (Flexible Julia) - #48 by csvance](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/48) been fixed in 2026.3.0 ? I have them in 2026.2 .

Can you maybe give an example? Maybe I missed something here? (please try with 2026.3.0 beforehand).

---

<div class="post-metadata">

**Author:** ![xgdgsc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xgdgsc/32/608_2.png) [@xgdgsc](https://discourse.julialang.org/u/xgdgsc)\
**Post date:** [January 7, 2026, 9:29am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/85 "2026-01-07T09:29:09Z")

</div>

When I do `alt+shift+enter` in code editor , REPL shows:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/c/b/cb8977fb5ba804fcaae1190a36579c54ff900a33.png)  
like this. On 2026.3.0.

And it’s strange a remote REPL defaults to a local env like:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/f/0/f0b8dcfc387339473011ab6c8187dc9dc1904f8f.png)  
I can then do a `cd()` and `activate .` in it just fine. Should use the remote working directory setting in the ssh profile

 ![image](https://global.discourse-cdn.com/julialang/original/3X/8/7/8703c48a6f1ec61461f24f6e483c53f0d6416ae3.png)

---

<div class="post-metadata">

**Author:** ![xgdgsc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xgdgsc/32/608_2.png) [@xgdgsc](https://discourse.julialang.org/u/xgdgsc)\
**Post date:** [January 7, 2026, 10:28am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/86 "2026-01-07T10:28:57Z")

</div>

> [@madppiper](#):
>
> Dot-method completion now works for your own types

It still doesn’ t work for my simple custom types.

And it doesn’ t seem to support code snippets like in vscode when you enter `function` `module` `for` it fill the block `end`.

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 7, 2026, 12:22pm UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/87 "2026-01-07T12:22:27Z")

</div>

Can you share some code snippet for me, maybe in two seperate files? That would help me analyze why

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 7, 2026, 12:23pm UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/88 "2026-01-07T12:23:25Z")

</div>

> When I do `alt+shift+enter` in code editor , REPL shows:  
> …  
> like this. On 2026.3.0.  
> And it’s strange a remote REPL defaults to a local env like: …

I will look into that as well…

---

<div class="post-metadata">

**Author:** ![xgdgsc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xgdgsc/32/608_2.png) [@xgdgsc](https://discourse.julialang.org/u/xgdgsc)\
**Post date:** [January 7, 2026, 1:19pm UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/89 "2026-01-07T13:19:45Z")

</div>

Like:

 ![截屏2026-01-07 21.16.34](https://global.discourse-cdn.com/julialang/original/3X/6/d/6d95e983db364be215fca16f44620c9497caaad5.png)  
No matter whether evaluated to the REPL or not.

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [January 7, 2026, 3:39pm UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/90 "2026-01-07T15:39:32Z")

</div>

I created three issues in the issue tracker:

> **[ilscipio/flexible-julia-jetbrains-plugin](https://github.com/ilscipio/flexible-julia-jetbrains-plugin/issues)**
>
> Bugtracker for the Flexible-Julia-JetBrains plugin - ilscipio/flexible-julia-jetbrains-plugin

Perhaps the issue tracker is a better option than Discourse for discussing plugin issues?

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 9, 2026, 12:05pm UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/91 "2026-01-09T12:05:00Z")

</div>

**New Release: Flexible Julia 2026.3.1**

This is mostly a bugfix release, but with some nice additions thrown in.

New Features:

- Syntax Highlighting: Keyword color subcategories (declaration, import, modifier) for finer control
- Environment Discovery: Automatic detection of Julia environments in subdirectories (up to 3 levels deep - great for monorepos)
- Unified Environment Selection: Package manager now shares environment selection with REPL

Fixes:

- SSH profile deletion now actually persists (profiles no longer ghost back after closing the dialog)
- Cleaner SSH dialog layout: Import button moved above profile list, removed Test button
- Dot-method completion for user-defined struct constructors (`ats = Ats(...); ats.` now suggests `workATS(a::Ats)`)
- Internal markers (` __VAR__ `, ` __PLOT__ `, etc.) no longer leak into REPL output
- REPL `exit()` no longer shows markers or hangs
- Projects with `Project.toml` in root now auto-detect and start with `--project` flag
- SSH remote REPL now respects configured working directory
- Threading violations in Go to Implementation and symbol navigation (IntelliJ 2025.x compatibility)
- Terminal REPL now has “Browse…” option for selecting project/environment directory
- REPL project selector discovers all Julia environments in subdirectories (monorepo support)
- Matplotlib/PyPlot plots now display in IDE gallery (Agg backend compatibility)

* * *

Lots of REPL and SSH polish in this one. Environment discovery now scans subdirectories, and the package manager stays in sync with your REPL selection.

* * *

@xgdgsc: Thanks for the SSH config import recommendations!

@PetrKryslUCSD: Thank you for the continued bug testing!!

@ufechner7: Thanks for reporting the REPL issues!

@simsurace: Appreciate the highlighting improvement suggestions!

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [January 10, 2026, 12:34pm UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/92 "2026-01-10T12:34:08Z")

</div>

> [@madppiper](#):
>
> New Release: Flexible Julia 2026.3.1

Not yet available, I think, or how can I get the update?

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 12, 2026, 9:54am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/93 "2026-01-12T09:54:43Z")

</div>

**New Release: Flexible Julia 2026.3.2**

New Features:

- Remote Session Persistence: REPL sessions now survive disconnects via tmux/screen integration
  - New “Session manager” dropdown in SSH profile settings (None/tmux/screen)
  - Resume sessions from any IDE instance

- JET.jl Documentation: Added tooltip explaining `concretization_patterns` limitations in LSP settings
- New REPL IPC: Switched to backchannel communication (cleaner output, no more debug noise)
- Plot Improvements: Better re-rendering support and titles now show in preview

Fixes:

- Struct method completion now works inside functions (`function f(x::MyType)` → `x.` suggests methods)
- ProxyJump SSH config alias resolution with underscores (`my_server` now resolves correctly)
- Windows REPL prompt display when switching modes (julia\>, pkg\>, help\>) - CRLF handling was causing corruption
- Debug markers (` __VAR__ `, etc.) no longer visible during `exit()`

* * *

 ![Screenshot 2026-01-12 102452](https://global.discourse-cdn.com/julialang/original/3X/1/8/18de24be8043bc942e822df195919285448dc005.png)

* * *

If you’re running Julia on a remote server, your REPL session should now survive disconnects - just select tmux or screen in your SSH profile settings and pick up where you left off from any IDE instance.

There is also various improvements to our prompt window, now properly falling back to the original implementation for complex charts and various improvements in our own renderer.

Also finally squashed that Windows REPL prompt bug - mode switching should look clean now.

* * *

@xgdgsc: Thank you for the detailed reports on SSH, struct completion, and debug markers!

@ufechner7: Thanks for the REPL and JET.jl issue reports!

@PetrKryslUCSD: Appreciate catching that Windows prompt issue!

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 12, 2026, 9:56am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/94 "2026-01-12T09:56:02Z")

</div>

2026.3.1 is now available via the marketplace, you can download 2026.3.2 as it is being approved from JetBrains here: [Flexible Julia 2026.3.2](https://plugins.jetbrains.com/plugin/download?rel=true&updateId=930957)

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 14, 2026, 7:24am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/96 "2026-01-14T07:24:18Z")

</div>

**New Release: Flexible Julia 2026.3.3**

New Features:

- Live Documentation Lookup: Hover docs now query `@doc` from your running Julia session for packages not in YAML
- More Built-in Docs: Added documentation for DataFrames, Plots, CSV, HTTP, JSON, Distributions, Optim, DifferentialEquations, and Makie

Fixes:

- Struct field autocompletion now correctly parses typed fields (`x::Float64`)
- Hover doc styling respects IDE theme (no more hardcoded light backgrounds in dark mode)
- IPC JSON parser accepts SubString types

* * *

Small but useful update. The live `@doc` lookup is a nice quality-of-life improvement - if a package isn’t in the built-in YAML documentation, the plugin now queries your running Julia session directly. So this should improve our on-hover documentation even if our built-in and LanguageServer fail.

Apart from that: lots of minor bugfixes and more improvements on dataframe, vector & plot handling.

Unlike most updates here, 2026.3.3 has already been approved by JetBrains, so it should be available for you all.

* * *

@xgdgsc: Thanks for reporting the struct field completion and hover doc issues!  
@ufechner7: Appreciate the documentation feedback!  
@PetrKryslUCSD: Thank you for the continued testing!

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 16, 2026, 10:51am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/97 "2026-01-16T10:51:23Z")

</div>

**New Release: Flexible Julia 2026.4.2**

Missed a few updates, so here’s everything since 2026.4.0! (2026.4.2 is getting approved by JetBrains as we speak and should be up in a few hours).

There are a few more shortcuts to learn (JetBrains has other shortcuts setup by default, so these differ from vscode):

- Ctrl+Alt+Shift+X (execute) and Ctrl+Shift+X in cell mode.
- On Plots: Wheel to zoom, Ctrl+drag to pan
- Ctrl+Alt+Shift+F → reformat
- Alt+Shift+Enter send to Julia
- Ctrl+Shift+F10 - Run file in Julia Repl

* * *

New Features:

- Cell Mode Execution: Notebook-style workflow with Ctrl+Alt+Shift+X (execute) and Ctrl+Shift+X (execute and move)
- Weave.jl Support: Full .jmd file support with “Open Preview” and “Save to File…” actions
- REPL Controls: New Tools → Julia menu with Start, Stop, Restart, Interrupt, and Change Environment
- Remote Execution Overhaul:
  - IPC channel via reverse SSH port forwarding
  - SFTP-based code upload
  - Auto-uploads `Project.toml` and `Manifest.toml` for remote environment activation

- Clickable Stack Traces: `@ Module path:line` now highlighted as links, single-click to navigate
- Plot Gallery: Wheel to zoom, Ctrl+drag to pan (matches chart behavior)
- Better Hover Docs: Proper markdown rendering with code blocks, lists, headers, and links
- PythonPlot/PyPlot: Now renders as SVG with zoom/pan support
- Syntax Highlighting Improvements:
  - Julia symbols (`:symbol`) now have distinct color from identifiers
  - Arrow operators (`=>` and `.=>`) have dedicated customizable color
  - Broadcast pair operator `.=>` now parses correctly

- Loop variable type inference for dot-method completion

Fixes:

- Cell mode execution now sends innermost block (for loop) instead of outermost (function)
- Arrow operator highlighting persists after indexing completes
- Remote REPL omits `--project` flag when local path is Windows-style (avoids LOAD\_PATH errors)
- Stack trace file resolution uses FilenameIndex + Julia base/stdlib paths
- Docstring markdown not rendering for macros, modules, and types
- Project switching stack trace when REPL is running
- NPE in getMethodsForType() during loop variable completion
- Duplicate document listener registration on editor split
- Remote/local path mixing in stack traces and file navigation

* * *

 ![Screenshot 2026-01-16 113912](https://global.discourse-cdn.com/julialang/original/3X/4/d/4d2f800587b7aa53a1c271b8c4da1ff9e2984057.png)  
 ![Screenshot 2026-01-14 171340](https://global.discourse-cdn.com/julialang/original/3X/4/b/4b54c89ba5276de8d99f7212b9083511cb2713a2.png)  
 ![Screenshot 2026-01-14 171233](https://global.discourse-cdn.com/julialang/original/3X/e/7/e7c8a9b55d9de47cfac44a4affa22d33dd2f9122.png)  
 ![Screenshot 2026-01-14 171211](https://global.discourse-cdn.com/julialang/original/3X/a/3/a36b430042f5226245ae20918ce234131f441377.png)

* * *

Phew. Been an exciting week. Cell mode brings notebook-style execution to regular .jl files - run cells with Ctrl+Shift+X and jump to the next one. Combined with Weave.jl support, literate programming workflows are much smoother now.

Remote execution got a complete overhaul. Reverse SSH port forwarding, SFTP uploads, and automatic project environment sync mean remote Julia development finally feels like local development. Stack traces from remote sessions are now clickable too.

Also snuck in some syntax highlighting improvements - symbols and arrow operators now have their own colors if you want to customize them.

* * *

@xgdgsc: Huge thanks for all the detailed bug reports and remote debugging feature requests!  
@ufechner7: Same to you, your tickets are amazing!  
@PetrKryslUCSD: Always thankful for your feedback!

---

<div class="post-metadata">

**Author:** ![csvance](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/csvance/32/218927_2.png) [@csvance](https://discourse.julialang.org/u/csvance)\
**Post date:** [January 16, 2026, 4:48pm UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/98 "2026-01-16T16:48:45Z")

</div>

Loving all of the improvements!

One thing to watch out for with automatic sync are network file systems. Historically in PyCharm there was an issue where it would make all files size 0 because of a race condition reading the file on the local host and writing on the remote.

I’m going to do some testing on my end using NFSv4 with the same mount paths on both systems.

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 16, 2026, 4:57pm UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/99 "2026-01-16T16:57:35Z")

</div>

That would be amazing.

As JetBrains hasn’t sent their approval today, make sure to download and manually install the latest release. Between 2026.4.0 and the current one there were quite a few fixes applied…

[https://plugins.jetbrains.com/plugin/download?rel=true&updateId=934482](https://plugins.jetbrains.com/plugin/download?rel=true&updateId=934482)

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [January 16, 2026, 6:29pm UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/100 "2026-01-16T18:29:04Z")

</div>

What is still not clear to me: If I create a Julia project, there still seems to be a need to configure a Python SDK for that project, which I don’t want.

This is my project:

```julia-auto
drwxrwxr-x 4 ufechner ufechner 4,0K jan 16 19:21 .
drwxrwxr-x 100 ufechner ufechner 4,0K jan 14 19:40 ..
drwxrwxr-x 3 ufechner ufechner 4,0K jan 16 19:22 .CondaPkg
drwxrwxr-x 3 ufechner ufechner 4,0K jan 16 19:22 .idea
-rw-rw-r-- 1 ufechner ufechner 32 jan 14 10:52 main.jl
-rw-rw-r-- 1 ufechner ufechner 11K jan 16 19:16 Manifest.toml
-rw-rw-r-- 1 ufechner ufechner 59 jan 16 19:16 Project.toml

```

I have one instance of Python in `.CondaPkg` (Python 3.14), a second version as the default OS Python, and probably a third version from the Python SDK:

```julia-auto
ufechner@framework:~/repos/Plotting/.idea$ cat misc.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Black">
    <option name="sdkName" value="Python 3.12" />
  </component>
  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12" project-jdk-type="Python SDK" />

```

I have `.CondaPkg` because I installed PythonPlot. Which doesn’t work, probably because it uses a different Python version than the IDE itself.

How can I ensure that PythonPlot uses the same Python version as flexible-julia?

---

<div class="post-metadata">

**Author:** ![madppiper](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/madppiper/32/220029_2.png) [@madppiper](https://discourse.julialang.org/u/madppiper)\
**Post date:** [January 17, 2026, 5:58am UTC](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658/101 "2026-01-17T05:58:57Z")

</div>

Hey,

so, unless I am missing something, this is not our plugin - but rather your setup. The

> project-jdk-type="Python SDK"`in your`misc.xml

isn’t coming from our plugin. It is how you setup your project when you imported it in PyCharm or so. We only define a JuliaSdkType for Julia interpreters and don’t touch project SDK settings.

Now to the actual issue: I looked at PythonPlot.jl’s python code (briefly) and I think PythonPlot uses PythonCall which manages its own Python via CondaPkg.jl.

So, to bring it all together: I think you should be able to “fix” all of this by properly configuring your projects python sdk. There is an option for it in the project settings. If your conda file isn’t listed there, you may need to create a new sdk and select conda from the options then select your root directory.

Let me know if that helps!

[Previous page](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658.md?page=4)

[Next page](https://discourse.julialang.org/t/new-julia-for-jetbrains-ides-flexible-julia/134658.md?page=6)
