From 61cf76fba765c5175698f102dc9ab0fc7616b403 Mon Sep 17 00:00:00 2001 From: Mark Huang Date: Thu, 27 Jun 2024 18:32:39 +0800 Subject: [PATCH 1/3] fix moving up and down in REPL --- src/repl.jl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/repl.jl b/src/repl.jl index d6669ce..689655f 100644 --- a/src/repl.jl +++ b/src/repl.jl @@ -283,10 +283,12 @@ end NEW_KEYBINDINGS = create_keybindings() function insert_keybindings(repl = Base.active_repl) - mirepl = isdefined(repl,:mi) ? repl.mi : repl + mirepl = isdefined(repl,:mistate) ? repl.mistate : repl main_mode = mirepl.interface.modes[1] - p = mirepl.interface.modes[5] + php_idx = VERSION >= v"1.11.0-rc1" ? 6 : 5 + p = mirepl.interface.modes[php_idx]::LineEdit.PrefixHistoryPrompt + # Up Arrow NEW_KEYBINDINGS["\e[A"] = (s,o...)-> begin LineEdit.edit_move_up(buffer(s)) || LineEdit.enter_prefix_search(s, p, true) Prompt.rewrite_with_ANSI(s) From 8b6dc6ffbd672039c8cc70724eb3b1c9a2cf0e09 Mon Sep 17 00:00:00 2001 From: Mark Huang Date: Fri, 28 Jun 2024 09:27:58 +0800 Subject: [PATCH 2/3] findfirst of PrefixHistoryPrompt --- src/repl.jl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/repl.jl b/src/repl.jl index 689655f..37d93bc 100644 --- a/src/repl.jl +++ b/src/repl.jl @@ -284,9 +284,10 @@ NEW_KEYBINDINGS = create_keybindings() function insert_keybindings(repl = Base.active_repl) mirepl = isdefined(repl,:mistate) ? repl.mistate : repl - main_mode = mirepl.interface.modes[1] - php_idx = VERSION >= v"1.11.0-rc1" ? 6 : 5 - p = mirepl.interface.modes[php_idx]::LineEdit.PrefixHistoryPrompt + interface_modes = mirepl.interface.modes + main_mode = interface_modes[1] + php_idx = findfirst(isa.(interface_modes, LineEdit.PrefixHistoryPrompt)) + p = interface_modes[php_idx] # Up Arrow NEW_KEYBINDINGS["\e[A"] = (s,o...)-> begin From b7b2bdea51daf25a33744608a6c77ed5c991b924 Mon Sep 17 00:00:00 2001 From: Mark Huang Date: Fri, 28 Jun 2024 10:10:03 +0800 Subject: [PATCH 3/3] avoid allocating --- src/repl.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/repl.jl b/src/repl.jl index 37d93bc..7a53cd8 100644 --- a/src/repl.jl +++ b/src/repl.jl @@ -286,7 +286,7 @@ function insert_keybindings(repl = Base.active_repl) mirepl = isdefined(repl,:mistate) ? repl.mistate : repl interface_modes = mirepl.interface.modes main_mode = interface_modes[1] - php_idx = findfirst(isa.(interface_modes, LineEdit.PrefixHistoryPrompt)) + php_idx = findfirst(Base.Fix2(isa, LineEdit.PrefixHistoryPrompt), interface_modes) p = interface_modes[php_idx] # Up Arrow