New: Julia for JetBrains IDEs (Flexible Julia)

I was able to configure PyCharm to use the Python version provided by the Conda version installed when executing “using PythonPlot”.

I can use it to create plots, even though I need to explicitly call plt.show() in the Python console.

When using Julia, this worked with the plugin version 2026.4.0, but it no longer works with 2026.4.1 or 2026.4.2.

I get:

julia> using PythonPlot

julia> plot(rand(3))
Python: [<matplotlib.lines.Line2D object at 0x77a3e23a1a90>]

julia> PythonPlot.show()
<sys>:0: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown

Ah, must come from my changes for panning. Will fix, thanks

New Release: Flexible Julia 2026.4.3

New Features:

  • Undefined Variable Inspection: Unresolved variables now highlighted as errors, with 200+ Julia built-ins recognized
  • Smarter Inlay Hints: Option to hide unresolved type hints (like eltype) until proper type resolution is available
  • Auto-load Revise.jl: Automatically loads Revise on REPL start for hot code reloading (VS Code-style workflow)
  • Reorganized Inlay Hints: Now follows standard IntelliJ categories (Parameter hints, Types, Lambdas, Method chains)

Fixes:

  • F2 rename refactoring broken due to plugin.xml group ID mismatch
  • type keyword no longer reserved - you can use type as variable/field name again
  • Remote REPL now refreshes variables after reconnection and properly restarts interactive shell
  • PythonPlot/PyPlot plots not displaying since 2026.4.1 (regression fix)
  • Unused variable inspection now detects top-level variables with proper gutter marks




So we are adding inbuilt code validation. Combined with unused variable detection, you get much better feedback while writing code.

I also added Revise.jl to auto-load on startup. This was a request by @xgdgsc and I think it makes complete sense. You can turn it off in the settings of course.

Other than that: a range of bugfixes as usual…


@xgdgsc: Huge thanks for all the detailed bug reports and feature requests - this release is basically your wishlist!
@ufechner7: Thanks for catching the PythonPlot regression!

2 Likes

Thank you so much for the quick update!

Plotting with PythonPlot works now!
Zoom and pan work, too!

Small issue: Clicking the “Fit to window” button never enlarges the figure beyond 100%. So it works only if the window is smaller than the figure.

You need to call figure() to create a new figure, but I think this is normal. Perhaps figure() should be called automatically when the “Clear” button is clicked.

2 Likes

I’ll check it out

1 Like

Thank you for this Plugin!

Is there a way to have support for syntax highlighting for LaTeXStrings.jl?
It basically provides a string type L"…", where you don’t have to escape the LaTeX special characters ($,)

I’m happy to add it! Can you create a ticket under GitHub · Where software is built ? That way it doesn’t get lost :slight_smile:

never mind - already adding it :slight_smile:

1 Like

I just uploaded a new release version 2026.5.0: it contains your changes.

It usually takes JetBrains up to 48hrs to approve our version. In the meanwhile you can manually install it via Settings - Plugins - install from disk:

https://plugins.jetbrains.com/plugin/download?rel=true&updateId=937823

1 Like

New Release: Flexible Julia 2026.5.0

New Features:

  • LaTeX String Syntax: L"..." support for LaTeXStrings.jl with proper highlighting
  • @run Macro: Debug from REPL with full IDE integration
  • Plot Debug Logging: Data point tracing for handling 32K+ point datasets
  • Module Include Resolution: using imports in parent modules now recognized in included files

Fixes:

  • Temp directory leak: old julia_hook_* directories now cleaned on startup
  • Variables panel not updating on Julia 1.12+ (async context/world age fix)
  • Nested struct field completion (p.address.city now shows fields)
  • end keyword highlighting in array indexing (arr[1:end])
  • False positive “unused parameter” with string interpolation ("Hello $name")
  • False positive “undefined variable” for do-blocks, tuple unpacking, symbols
  • False positive “unused variable” for keyword arguments in function calls
  • Send to REPL now sends surrounding code block instead of just current line
  • Variable panel restores after reconnecting to tmux session
  • PyPlot/PythonPlot race condition crash - hook installation now synchronous




Big inspection cleanup in this release. The false positive warnings for do-blocks, tuple unpacking, string interpolation, and keyword arguments were getting annoying - all fixed. Also nested struct completion finally works now.

As for new features: Thanks to @taaem, we now also support LatexStrings: L"..."

And thanks to RGerzaguet we now also support terminal debugging via @run. This autoloads Debugger.jl - so you only need to remember @run. This is only a first implementation of it though, I will see that I integrate it further into the actual IDE debugging processes for one of the future releases (if possible). Oh and we fixed a bug that limited the size of plots to 10k. Now you can have much larger plots.


@xgdgsc: Thanks for the detailed bug reports on variable inspection!
@ufechner7: Appreciate the PyPlot investigation!
@RGerzaguet: Plot limits feature noted - and thanks for the @run request!
@taaem: LaTeX strings are in - enjoy!

6 Likes

Plotting with PyPlot works now in different modes as explained in: Plotting with PyPlot does not work in the REPL · Issue #3 · ilscipio/flexible-julia-jetbrains-plugin · GitHub

Key points:

  • disable Revise
  • disable multithreading with -t 1,0
  • use the command gcf() to display the figure

It could still be made easier to configure in the GUI, but at least it works.

@madppiper Thank you so much!

1 Like

JetBrains approved 2026.5.0 - so you can update the plugin from inside the IDE now

1 Like

New Release: Flexible Julia 2026.5.1

New Features:

  • Full Debugger Integration: @run macro now provides complete IDE debugging experience with stack frames, variables panel, and step/continue buttons (#36)
  • Cell/Block Detection: “Send to REPL” now auto-detects and sends entire code blocks instead of single lines (#22)
  • Remote Variable Restore: Variables panel automatically refreshes after reconnecting to tmux/screen sessions (#27)

Fixes:

  • LanguageServer crash after initializing / Lambda hints NPE (#37)
  • False positive “undefined variable” for where clauses, selective imports, and module-level const (#34)
  • Struct dot-completion now shows both fields AND methods (ats. shows a,b,c plus filtA(ats::Ats)) (#9)
  • Parameter type inference now uses direct PSI accessors instead of fragile tree search (#9)

This was a bugfix release for the most part (with some major grammar improvement), but I also completed the full integration of repl debugging with the JetBrains debugger. So @run will now open a new debugsession inside JetBrains IDEs that is tied to the repl debug session. Variables will be mirrored in both the Debug panel and our Julia panel. Plots and Datatables will be shown inside our Julia window too. You can use F8,F9 etc to jump over lines and it will call n/c in the repl debug. Terminating one session automatically closes the other.

Apart from that, many bugfixes and ones that came back due to recent restructuring. Send to repl works now as expected and we get better autocomplete.


@RGerzaguet: Thank you for the debugger feedback and thorough testing of the @run macro integration!
@taaem: Thanks for catching the LanguageServer crash!
@xgdgsc: Continued appreciation for the detailed bug reports across multiple issues - the inspection fixes wouldn’t have happened without you!
@Petr: I will look into how ways for us to include external folders next - thanks for reporting :slight_smile:

Update: I published a quick bugfix release 2026.5.2, replacing 2026.5.1 (it fixes tmux errors and one with repl behavior and some minor remaining grammar issues)

2 Likes

Just a note: the “external folders” mention refers to the workspace concept in VS Code: there it is possible to add the entire folder of a package (or packages) to the workspace to enable symbol lookup. Very handy when LS gives trouble.

1 Like

New Release: Flexible Julia 2026.6.0

New Features:

  • Breakpoints in @run Sessions: Full breakpoint support during REPL debugging - bp add "file":line, bp show, bp rm (#36)
  • Bidirectional Breakpoint Sync: Breakpoints now sync between IDE gutter and Julia REPL - set them wherever you prefer (#36)
  • Line-Based Breakpoint Removal: New bp remove "file":line command (in addition to Debugger.jl’s index-based approach)
  • Manifest.toml SDK Detection: Julia version now read from Manifest.toml for smarter SDK selection (#44)
  • Improved Completion Priority: LS/JETLS results now ranked higher in merged mode

Fixes:

  • REPL freeze after documentation hover due to EDT blocking (#43)
  • Plugin starting LSP in non-Julia projects (#41)
  • Parser error with end-(m-i) arithmetic in array indexing (#42)
  • Bug that caused some hover documentation to not show

Recording 2026-01-29 144501


Made big progress with synchronizing IDE and repl debug sessions. You can now set breakpoints directly from the REPL with bp add "file":line - and they sync bidirectionally with the IDE gutter. Set a breakpoint in the gutter, it shows up in your REPL session. Add one via bp add, it appears in the IDE etc etc

Also fixed an annoying freeze that happened when hovering for documentation - that one was blocking the EDT and locking up the REPL. And again some issues with our own on hover documentation and some minor grammar issues.


  • @RGerzaguet: Thanks for suggesting breakpoint support and the detailed feedback on the debugger workflow - I think we really got something working now
  • @xgdgsc: As always, thank you for the testing!
    @smartiegangs: Thanks for reporting the REPL crash with hover documentation - because of it, I also discovered some issues in our own on hover documentation files
1 Like

Question:
What is the suggested way to execute a Julia script?

In the REPL I would just type

include("examples/my_example.jl")

or similar.

It would be nice if there were a run button that does this, executing the currently open script using include in the REPL with the project folder as the current directory.

There’ s right click menu “run file in Julia REPL” command. Although the working dir is the script dir.

I see. So what would be nice:

  • having a button for this action
  • a configuration checkbox “use project directory for running scripts”
1 Like

I am a bit cautious to add this, as it seems like a duplication of the already existing runtime/debug configuration to me.

Can you explain the usecase again and how it would differ?

For most of my packages I have many examples:

I don’t want to create a runtime configuration for each example.

I want to be able to open the example and click on run to execute it.

1 Like

ok, that makes sense i guess. And you need to set the work directory for this, too?

If it is only about using the project directory or not, we could add a second right click action + keyboard shortcut.

I can also of course add a button to the repl itself if others find that useful?

1 Like