New: Julia for JetBrains IDEs (Flexible Julia)

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.

Has the additional output around like New: Julia for JetBrains IDEs (Flexible Julia) - #48 by csvance 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 . Does it do the command will identify the extent of the top-level language construct that the cursor is located in now?

1 Like

Version 2026.3.0 has just been approved on the marketplace :slight_smile:

Has the additional output around like New: Julia for JetBrains IDEs (Flexible Julia) - #48 by csvance 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).

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 can then do a cd() and activate . in it just fine. Should use the remote working directory setting in the ssh profile

1 Like

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.

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

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…

Like:


No matter whether evaluated to the REPL or not.

I created three issues in the issue tracker:

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

2 Likes

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!

7 Likes

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

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()


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!

3 Likes

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

1 Like

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!

6 Likes

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





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!

10 Likes

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.

1 Like

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

1 Like

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:

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:

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?

Hey,

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

project-jdk-type="Python SDK"in yourmisc.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!