# \[ANN\] TerminalPager.jl: REPL inline help added

**URL:** https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131
**Category:** Package Announcements
**Created:** [October 14, 2025, 7:25am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131 "2025-10-14T07:25:59Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [October 15, 2025, 6:14am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/21 "2025-10-15T06:14:42Z")

</div>

> [@danielwe](#):
>
> Any chance you’ll make shift+F1 work like alt+shift+h, to provide a way to access the extended help

Thanks for this idea. I like it and I think this should be simple to implement. However, we might even [have the extended help on `<F1>`](https://github.com/ronisbr/TerminalPager.jl/issues/63) if there are no reasons against it.

---

<div class="post-metadata">

### Author: ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)
#### Post date: [October 15, 2025, 7:55am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/22 "2025-10-15T07:55:25Z")

</div>

> [@PatrickHaecker](#):
>
> > - **Terminal.app** : Enable “Use Option as Meta key” in Preferences → Profiles → Keyboard

In `Terminal.app` changed settings as suggested, now `<alt> + <h>` works.

Just: On my German keyboard I need the `<alt>` modifier to type such important characters as `@ [{] }`, now it was impossible ☹

Also, actually I use VSCode, like probably the majority of Julia users.

---

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [October 15, 2025, 8:04am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/23 "2025-10-15T08:04:00Z")

</div>

Good that we found that it is no inherent technical problem of TerminalPager.jl, although I understand that the cure is probably worse than the disease for you.

Maybe other Mac users can jump in. On a German keyboard you would typically press `<Alt Gr>` to access the characters you listed. I don’t know whether this is the same on a Mac.

Alternatively, maybe you can selectively bind some key combinations? Claude again:

> # Solution 1: Selective Meta Key Configuration
> 
> Instead of enabling “Use Option as Meta key” globally, you can:  
> Go to Terminal.app → Preferences → Profiles → Keyboard  
> Look for individual key mappings  
> Configure only specific Option+key combinations as Meta keys  
> Leave the ones you need for special characters (like Option+L for @, Option+8 for [, etc.) unconfigured

> # Solution 2: Create Custom Key Mappings
> 
> In Terminal.app Preferences → Profiles → Keyboard:  
> Click the “+” button to add new key mappings  
> For each special character, create a mapping:  
> Key: Option + the key you want to use  
> Action: “Send Text”  
> Text: The actual character (e.g., @, [, {, etc.)

---

<div class="post-metadata">

### Author: ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)
#### Post date: [October 15, 2025, 8:27am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/24 "2025-10-15T08:27:52Z")

</div>

> [@PatrickHaecker](#):
>
> On a German keyboard you would typically press `<Alt Gr>` to access the characters you listed. I don’t know whether this is the same on a Mac.

On Mac, the left and right `<alt>` are equivalent.

I can try selective mappings, but probably not today.

Do you have any ideas for VSCode users?

---

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [October 15, 2025, 8:42am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/25 "2025-10-15T08:42:09Z")

</div>

Having effectively no `<alt gr>` key seems to be a serious limitation for a German user, which is probably unacceptable for most German Mac power users. So there are probably solutions for this problem and I hope that other Mac users jump in to help.

What I would try:

- VSCode allows using an external terminal (the first option in `settings` → `Features` → `Terminal`. I don’t know whether that helps with key bindings, but it’s probably worth a try.
- Claude pointed towards [Karabiner-Elements](https://karabiner-elements.pqrs.org/) which seems to be able to do fancy keyboard stuff on a Mac

---

<div class="post-metadata">

### Author: ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)
#### Post date: [October 15, 2025, 11:11am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/26 "2025-10-15T11:11:44Z")

</div>

> [@PatrickHaecker](#):
>
> probably unacceptable for most German Mac power users

I consider myself a power Mac user (at least, I used quite a lot of different programs on Mac over the last 30 years). This was the first time I got issues because of not having `<alt gr>`.

Concerning using an external terminal with VSCode: The built-in one is tighty integrated, which I’d probably lose with external one. Or how is it? Anyway, for me personally it is likely not worth the trouble.

---

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [October 15, 2025, 1:50pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/27 "2025-10-15T13:50:40Z")

</div>

> [@Eben60](#):
>
> I consider myself a power Mac user (at least, I used quite a lot of different programs on Mac over the last 30 years). This was the first time I got issues because of not having `<alt gr>`.

Sorry, my post was misleading. I meant Mac power users on the terminal, as there `<alt>` is important for a lot of readline shortcuts, see e.g for [the Fish shell](https://fishshell.com/docs/current/interactive.html#emacs-mode). On the other hand, missing `<alt gr>` as a German user would also be a serious drawback. That’s why I really think there are solutions to this problem (as they are different keys, they send different key codes, so an application probably can distinguish them if needed).

> [@](#):
>
> Concerning using an external terminal with VSCode: The built-in one is tighty integrated, which I’d probably lose with external one. Or how is it?

The external terminal is still included in VSCode. You do not necessarily see a huge difference, it’s just a different terminal emulator. I use my preferred terminal emulator as an “external” terminal. I never missed the VSCode one.

> [@](#):
>
> Anyway, for me personally it is likely not worth the trouble.

I agree, that this sounds like too much trouble for something which should be simple. But we can define whatever shortcut we want. So what would be a good default key combination for a Mac user to access help?

In the long run, we should make the shortcut user-configurable anyway. @Ronis_BR already put the infrastructure into place in TerminalPager.jl for pager shortcuts, so I hope we can build on this for the help shortcut.

---

<div class="post-metadata">

### Author: ![danielwe](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/danielwe/32/35657_2.png) [@danielwe](https://discourse.julialang.org/u/danielwe)
#### Post date: [October 15, 2025, 1:57pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/28 "2025-10-15T13:57:57Z")

</div>

Many terminals on macOS allow you to remap one option key as alt (most commonly the left one I think) and keep the other one as option, which sounds like a fairly decent compromise. Looks like the built-in Terminal.app doesn’t have this, but popular ones like iTerm2 and Ghostty do. No idea about the VSCode one.

---

<div class="post-metadata">

### Author: ![danielwe](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/danielwe/32/35657_2.png) [@danielwe](https://discourse.julialang.org/u/danielwe)
#### Post date: [October 15, 2025, 2:04pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/29 "2025-10-15T14:04:25Z")

</div>

> [@PatrickHaecker](#):
>
> However, we might even [have the extended help on `<F1>`](https://github.com/ronisbr/TerminalPager.jl/issues/63) if there are no reasons against it.

I guess the reason would be that you might want to provide access to both the regular and extended help without using the alt shortcuts (not to go full xkcd 1172, but I currently use alt(+shift)+{h,j,k,l} for window navigation/management, which is why I’m currently not able to use alt(+shift)+h in the REPL).

---

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [October 15, 2025, 2:10pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/30 "2025-10-15T14:10:10Z")

</div>

> [@danielwe](#):
>
> I guess the reason would be that you might want to provide access to both the regular and extended help without using the alt shortcuts

Yes, understood, with this proposal both `<F1>` and `<alt> + <h>` (and maybe more to cover Mac users) would be extended help. We could not identify any relevant benefits in the linked issue above to provide the regular help when using a pager.

---

<div class="post-metadata">

### Author: ![piechologist](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/piechologist/32/27662_2.png) [@piechologist](https://discourse.julialang.org/u/piechologist)
#### Post date: [October 15, 2025, 5:00pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/31 "2025-10-15T17:00:18Z")

</div>

You can also press escape and then h in the REPL (the way it used to be in the beginning).

I rather keep the option modifier for Unicode input and use the escape key for, well, escape sequences.

---

<div class="post-metadata">

### Author: ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)
#### Post date: [October 15, 2025, 6:53pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/32 "2025-10-15T18:53:04Z")

</div>

> [@piechologist](#):
>
> You can also press escape and then h in the REPL (the way it used to be in the beginning).

Yes that works, and that’s all I need!

---

<div class="post-metadata">

### Author: ![Nathan\_Boyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nathan_boyer/32/14825_2.png) [@Nathan\_Boyer](https://discourse.julialang.org/u/Nathan_Boyer)
#### Post date: [October 22, 2025, 1:20pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/33 "2025-10-22T13:20:36Z")

</div>

My behavior is similar to Jake’s but I **am** on v0.6.6. I am on Windows 11, getting the same behavior in Powershell and VSCode with a U.S. keyboard. Any ideas?

I enter the pager mode with `|` and type `startswith(`, then

- `<alt> + <b>` and `<alt> + <f>` move the cursor back and forward as expected
- `<alt> + <h>` does nothing
- `F1` inserts an `A`
- `<esc>`, `<h>` does nothing

> **Environment Details**
>
> ```julia-auto
> (@v1.12) pkg> st
> Status `C:\Users\nboyer.AIP\.julia\environments\v1.12\Project.toml`
> [09cdc199] BasicAutoloads v1.0.4
> [5903a43b] Infiltrator v1.9.3
> [5fb14364] OhMyREPL v0.5.32
> [295af30f] Revise v3.11.0
> [27c01619] ShareAdd v2.4.0
> [0c614874] TerminalPager v0.6.6
> 
> ```

---

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [October 23, 2025, 10:35am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/34 "2025-10-23T10:35:03Z")

</div>

This is a good point. The help mode is currently only implemented in the normal REPL mode, not in the pager mode.

Can you please test it again in the regular REPL mode?

However, I like your (involuntary?) feature request and [created a PR](https://github.com/ronisbr/TerminalPager.jl/pull/68) to also make it available in pager mode.

---

<div class="post-metadata">

### Author: ![Nathan\_Boyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nathan_boyer/32/14825_2.png) [@Nathan\_Boyer](https://discourse.julialang.org/u/Nathan_Boyer)
#### Post date: [October 23, 2025, 12:15pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/35 "2025-10-23T12:15:16Z")

</div>

😅  
Missed that detail. Works now!

---

<div class="post-metadata">

### Author: ![matthias314](https://avatars.discourse-cdn.com/v4/letter/m/a88e4f/32.png) [@matthias314](https://discourse.julialang.org/u/matthias314)
#### Post date: [October 23, 2025, 2:20pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/36 "2025-10-23T14:20:34Z")

</div>

When I press `<alt> + <h>` on an incomplete function call like

```julia-auto
julia> f(x,

```

I seem get all docstrings for `f`. This includes docstrings for `f()` and those where the type of `x` doesn’t match. Is this intended?

---

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [October 24, 2025, 4:53am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/37 "2025-10-24T04:53:50Z")

</div>

> [@matthias314](#):
>
> This includes docstrings for `f()` and those where the type of `x` doesn’t match. Is this intended?

This is why I love working with the Julia community! You think you have a _good_ feature and after a lot of clever ideas and questions from the community (as we have already seen so many in this thread), you realize that you could actually have a _great_ feature when you implement all the ideas coming out of this exchange.

To answer your question: Yes, it is intended in the sense that as far as I know no one has thought about it, yet. Actually, I didn’t even remember, that in REPL’s help mode, you can write the method instead of the function and then the output only contains help for the specific method and not all methods of the function:

```julia
julia> a = 'c'
'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)

julia> b = "abc"
"abc"

help?> findfirst(a, b)
  findfirst(ch::AbstractChar, string::AbstractString)
[…]

```

It would be really great if this could be extended to partial argument lists of callables, so thanks for the suggestion, @matthias314! I created a [PR](https://github.com/ronisbr/TerminalPager.jl/issues/72) to track it.

As much as I’d like to have this feature, this might be some work to implement. Currently, the inline help partially reuses REPL’s help functionality if I got this right, which only supports complete function calls according to my short tests. So ideally, this feature would be implemented in the REPL itself to avoid code duplication and as it would be valuable there, too.

Maybe the REPL already supports it and I just don’t know how to use it there, or the solution of the VSCode plugin can be reused or there is a different package with such functionality.

Does anyone know whether such a logic already exists in the Julia ecosystem?

---

<div class="post-metadata">

### Author: ![\_bernhard](https://avatars.discourse-cdn.com/v4/letter/_/bc79bd/32.png) [@\_bernhard](https://discourse.julialang.org/u/_bernhard)
#### Post date: [October 24, 2025, 10:06am UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/38 "2025-10-24T10:06:13Z")

</div>

For what it’s worth - on my german keyboard macbook I have set the right option key to input unicode characters since for all the characters I type in the terminal (@{}|) I do so using the right opt key.  
This allows me to send escape sequences via the left opt key (by setting ‘use left opt as meta’ or equivalent in the settings of the terminal emulator).

---

<div class="post-metadata">

### Author: ![matthias314](https://avatars.discourse-cdn.com/v4/letter/m/a88e4f/32.png) [@matthias314](https://discourse.julialang.org/u/matthias314)
#### Post date: [October 24, 2025, 12:46pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/39 "2025-10-24T12:46:54Z")

</div>

> [@PatrickHaecker](#):
>
> Does anyone know whether such a logic already exists in the Julia ecosystem?

TAB completion in the REPL has this:

```julia-auto
julia> f(x) = 1; f(x::Int, y) = 2; f(x, y, z) = 3;

julia> f('a', # press <tab>
f(x, y, z) @ Main REPL[1]:1
f(x) @ Main REPL[1]:1

```

---

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [October 24, 2025, 1:38pm UTC](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/40 "2025-10-24T13:38:57Z")

</div>

This is interesting. Especially, as it could be improved, as only the third method seems plausible after the comma has been entered.

I think we could filter the method table with the information we already have from the incomplete argument tuple. However, in general we will have ambiguities here, even if the complete argument tuple, aka multiple dispatch, does not have ambiguities. Therefore, we would need to filter the help to a subset of the possible entries. We know how to show the docstring of all methods and we know how to show the docstring of a specific method, but how to display the help of a non-singleton true subset of all methods?

[Previous page](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131.md?page=1)

[Next page](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131.md?page=3)
