Open-source project
KristofferC/OhMyREPL.jl avatar
KristofferC/OhMyREPL.jl

OhMyREPL.jl after Julia 1.13: colorschemes, prompts and a much smaller package

Syntax highlighting and other enhancements for the Julia REPL

826 stars62 forksJuliaNOASSERTION

At a glance

What is it?
OhMyREPL.jl used to reimplement syntax highlighting, rainbow brackets and markdown rendering for the Julia REPL, and most of that now lives in Julia itself. What remains is a thin layer offering named colorschemes and prompt customisation, with a separate 0.5 line for older Julia versions.
Who is it for?
OhMyREPL.jl is worth adopting on Julia 1.13 and later if you want named, switchable colorschemes and a configurable prompt, and it is unnecessary if the native REPL styling already satisfies you, because the syntax highlighting it used to provide is now built in.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 42 days ago.
What is it written in?
Mainly Julia, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the package still does after the features moved into Julia

OhMyREPL is a Julia package for the Julia REPL, and its current shape is best understood by what it no longer does. The description reads like a syntax highlighting tool, and it once was: it implemented syntax highlighting, bracket highlighting, rainbow brackets, automatic bracket insertion, and markdown highlighting in docstrings inside the package.

As of Julia 1.13, the project says, most of those features are built into the Julia REPL itself. What is left of OhMyREPL is a thin layer over the native functionality, and the layer does two things. It provides named colorschemes for the built-in highlighting, applied as StyledStrings faces, with a documented way to define your own. It also allows the text and color of the julia> prompt to be changed, and adds a prompt for output.

Two features, then, on top of a REPL that now does the heavy lifting itself. That is a small surface area, and it is worth being clear about it before anyone installs the package expecting the rainbow brackets of the 0.5 releases.

The 0.6 line and the 0.5 line are different products

Version support splits the package into two eras, and the split is not cosmetic.

OhMyREPL 0.6 and later require Julia 1.13. On older Julia versions, the 0.5.x releases are installed instead, and those implement the REPL features inside the package itself rather than delegating to the native REPL. So the same package name means two different things depending on the Julia version in use: a thin layer on 1.13, a fuller reimplementation elsewhere.

The release history reflects that churn. A v0.5.32 was published on 2025-10-16, and then v0.5.13 and v0.6.0 were both published on 2026-09-11, the same day as the last push to the repository. The .5.13 number being older than the .5.32 it followed is a sign that the 0.5 line and the 0.6 line were cut from the same source at the same moment, with 0.5.13 being the branch point for users on older Julia and 0.6.0 the release for Julia 1.13.

For an adopter, the practical consequence is that the resolver picks for you. Installing on Julia 1.13 gives you the thin layer, installing on anything older gives you the 0.5 line, and the documentation you read has to match the branch you actually got.

Installing the package and loading it from startup.jl

Installation is a single call from the Julia package manager:

julia
Pkg.add("OhMyREPL")

After that, the package is loaded with a normal using statement:

julia
using OhMyREPL

The guide's advice is to put that load in the .julia/config/startup.jl file, preferably, so the REPL comes up with the enhancements already in place rather than requiring an extra line in every session. That file is per user and per environment, which is the right place for this kind of load, and it means the package is a shell convenience rather than a dependency of any project you work on.

A quick first session then looks like this, with the comments in the original quick start preserved:

julia
julia> colorschemes()       # list available colorschemes

julia> colorscheme!("OneDark")  # activate one

julia> test_colorscheme("GruvboxDark")  # preview one without activating it

The first call lists what is available, the second applies one, and the third previews a scheme without activating it, which is the fastest way to compare candidates before committing to a look.

Colorschemes are StyledStrings faces, not a reimplementation

The mechanism behind the colorscheme feature matters if you intend to define your own. The package does not implement its own highlighting engine in the 0.6 line. The built-in Julia REPL does the highlighting, and a colorscheme is applied as StyledStrings faces, the standard styling mechanism in the Julia standard library.

That design has a direct consequence. Writing a colorscheme is a matter of describing faces, and the documentation is pointed at exactly that: the guide notes that the documentation covers how to change colorschemes and how to create your own. Because the faces come from the standard library, a colorscheme is not tied to OhMyREPL internals, and the same styling vocabulary applies to any other consumer of StyledStrings.

The test_colorscheme function fits into the same model. Previewing a scheme without activating it is the feature that makes a library of named schemes usable at all, because it lets you look at a candidate in the terminal and reject it before it changes how everything else renders.

Prompt changing covers the input prompt and the output prompt

The second remaining feature is prompt control. The package can change the text and the color of the julia> prompt, which is more than it sounds, because the prompt text is where you can put information the REPL does not show by default: the current project, the branch, a mode indicator, anything you want visible at every prompt.

It also adds a prompt for output. Output in the Julia REPL appears after the result of an expression, and having a marker there, styled separately from the input prompt, makes it easier to see where a value ends and the next input begins when output is long or when several values are printed one after another.

The colour half of this is again expressed through the same face mechanism used by the colorschemes, so the prompt colour and the highlighting colour live in one styling vocabulary. The documentation covers the features and their settings, and the README points readers there for the details rather than duplicating them.

What the package does not claim any more is any control over syntax highlighting behaviour itself, bracket matching, or markdown rendering in docstrings. In the 0.6 line those are the REPL's job, and the repository's own framing is that it sits on top of that behaviour.

A custom licence, a docs site, and a small source tree

The repository is small and the layout reflects it: a src directory, a test directory, a docs directory, a Project.toml, and a LICENSE.md.

The licence is the one detail that needs attention. It is not MIT, not Apache, and not any of the categories GitHub recognises. The repository is recorded with a custom licence that GitHub cannot classify, and the text lives in the LICENSE.md file. What a custom licence grants, requires, or forbids is a question for whoever wrote it, and the sensible move is to read that file rather than assume the permissive terms people associate with most Julia packages. Nothing in the README summarises the terms, so this cannot be resolved from the documentation.

The documentation itself is published as a site, with the stable documentation at kristofferc.github.io/OhMyREPL.jl/latest and a separate docs branch pointing at the same place. The README is explicit that the site holds the more extensive description of the features and their settings.

On maintenance, the last push was on 2026-09-11, the same day as the v0.6.0 and v0.5.13 releases, so the repository is not sitting idle.

When the package is the wrong tool, and what the alternative is

The strongest argument against installing OhMyREPL on a modern Julia is that most of its original reason to exist has moved into the language. The syntax highlighting, the bracket highlighting, the rainbow brackets, the automatic bracket insertion and the markdown highlighting in docstrings are all built into the Julia REPL as of 1.13. If you want those, Julia provides them without a package.

The remaining difference between using the native REPL and using OhMyREPL on top of it is the convenience layer: a catalogue of named colorschemes you can list and switch, and prompt control for the julia> text and the output marker. That is a real convenience for someone who wants a particular look without hand-assembling faces, and it is a thin one for someone who does not.

The other path is the 0.5 line on an older Julia, which brings the features back into the package. The trade there is a version constraint and a branch that only exists for compatibility, against getting the full feature set on a Julia too old to have it natively.

Either way, the decision is a small one. What is not small is the licence question, and that has to be answered by reading LICENSE.md before the package goes into an environment that matters.

Editorial conclusion

OhMyREPL.jl is worth adopting on Julia 1.13 and later if you want named, switchable colorschemes and a configurable prompt, and it is unnecessary if the native REPL styling already satisfies you, because the syntax highlighting it used to provide is now built in. Verify first which version the package manager resolves on your Julia, since 0.6 and later need Julia 1.13 while older installations fall back to the 0.5 line, and read LICENSE.md yourself, because the project's licence is a custom one that GitHub cannot classify.

Frequently asked questions

How do I install OhMyREPL.jl?

Run Pkg.add("OhMyREPL") in the Julia package manager, then load it with using OhMyREPL, preferably from the .julia/config/startup.jl file so it loads in every session.

Which Julia versions does the current OhMyREPL.jl support?

OhMyREPL 0.6 and later require Julia 1.13. On older Julia versions the 0.5.x releases are installed instead, and those implement the REPL features inside the package rather than relying on the native REPL.

How do I change the colorscheme in OhMyREPL.jl?

Call colorschemes() to list what is available, colorscheme!("OneDark") to activate one, and test_colorscheme("GruvboxDark") to preview a scheme without activating it. Colorschemes are applied as StyledStrings faces, and the documentation covers how to define your own.

Does OhMyREPL.jl still do syntax highlighting and rainbow brackets?

Not in the 0.6 line. As of Julia 1.13 those features are built into the Julia REPL itself, and OhMyREPL is now a thin layer providing colorschemes and prompt changing on top of that native functionality.

What licence does OhMyREPL.jl use?

A custom licence that GitHub cannot classify, with the text in the LICENSE.md file in the repository root. The README does not summarise the terms, so the file itself is the reference.

Official sources

  1. Issues
  2. KristofferC/OhMyREPL.jl on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/kristofferc-ohmyrepl-jl.svg)](https://hysenlabs.com/projects/kristofferc-ohmyrepl-jl)