# \[ANN\] ReplMaker.jl

**URL:** <https://discourse.julialang.org/t/ann-replmaker-jl/12306>\
**Category:** Community\
**Tags:** announcement\
**Created:** [July 10, 2018, 11:01pm UTC](https://discourse.julialang.org/t/ann-replmaker-jl/12306 "2018-07-10T23:01:01Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [July 10, 2018, 11:01pm UTC](https://discourse.julialang.org/t/ann-replmaker-jl/12306/1 "2018-07-10T23:01:01Z")

</div>

Announcing [ReplMaker.jl](https://github.com/MasonProtter/ReplMaker.jl) a simple little tool to bypass the headache of implementing your own REPL mode for your pet DSL or full language. This package is BYOP (Bring Your Own Parser).

---

<div class="post-metadata">

**Author:** ![jballanc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jballanc/32/328_2.png) [@jballanc](https://discourse.julialang.org/u/jballanc)\
**Post date:** [July 11, 2018, 12:55am UTC](https://discourse.julialang.org/t/ann-replmaker-jl/12306/2 "2018-07-11T00:55:29Z")

</div>

Nice! This is definitely going in my Julia toolbelt…

However, I can’t be the only one who worries about the potential unbounded proliferation of Julia REPL modes? I wonder if there should be a mechanism to detect when one starts `using` a package with a REPL mode that conflicts with an existing package in scope? And would this be something to go in Core? Or this library?

Finally, I’ve been thinking for a while about some sort of more generic multi-REPL-mode-select mechanism. For example, what if you could enter `>` at the default REPL prompt and be presented with a simple menu of all the REPL modes currently installed?

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [July 11, 2018, 5:29pm UTC](https://discourse.julialang.org/t/ann-replmaker-jl/12306/3 "2018-07-11T17:29:35Z")

</div>

@jballanc Good points! Perhaps it’d be a good default to hide all the repl modes behind a [Terminal Menu](https://docs.julialang.org/en/latest/stdlib/REPL/#TerminalMenus-1) and then if someone really needs a repl mode that they can access with just one button press instead of two, we can support that.

I think detecting conflicts wouldn’t be too bad. I could just look and see if the current repl keymap has any overlap with the keymap I’m merging it with and flash a warning if there is any overlap.

Edit: I implemented a simple warning whenever `initrepl` overwrites a special key. The menu interface will require a bit more thought.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [July 12, 2018, 6:28pm UTC](https://discourse.julialang.org/t/ann-replmaker-jl/12306/4 "2018-07-12T18:28:42Z")

</div>

Okay, I have made the package compatible with both 0.7 and 0.6 and made some minor tweaks. I’ll work on trying to submit to Metadata soon.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [August 22, 2018, 10:21pm UTC](https://discourse.julialang.org/t/ann-replmaker-jl/12306/5 "2018-08-22T22:21:07Z")

</div>

ReplMaker.jl is now tagged and available from METADATA! It’s just one `]add ReplMaker` away!
