@@ -27,7 +27,7 @@ mutable struct Prompt <: TextInterface
27
27
# Same as prefix except after the prompt
28
28
prompt_suffix:: Union{String,Function}
29
29
keymap_dict:: Dict{Char}
30
- keymap_func_data # ::AbstractREPL
30
+ repl # ::AbstractREPL
31
31
complete # ::REPLCompletionProvider
32
32
on_enter:: Function
33
33
on_done:: Function
@@ -75,6 +75,8 @@ mutable struct PromptState <: ModeState
75
75
indent:: Int
76
76
end
77
77
78
+ options (s:: PromptState ) = isdefined (s. p, :repl ) ? s. p. repl. options : Base. REPL. Options ()
79
+
78
80
setmark (s) = mark (buffer (s))
79
81
80
82
# the default mark is 0
@@ -116,7 +118,7 @@ terminal(s::PromptState) = s.terminal
116
118
117
119
for f in [:terminal , :on_enter , :add_history , :buffer , :(Base. isempty),
118
120
:replace_line , :refresh_multi_line , :input_string , :update_display_buffer ,
119
- :empty_undo , :push_undo , :pop_undo ]
121
+ :empty_undo , :push_undo , :pop_undo , :options ]
120
122
@eval ($ f)(s:: MIState , args... ) = $ (f)(state (s), args... )
121
123
end
122
124
549
551
# align: delete up to 4 spaces to align to a multiple of 4 chars
550
552
# adjust: also delete spaces on the right of the cursor to try to keep aligned what is
551
553
# on the right
552
- function edit_backspace (s:: PromptState , align:: Bool = false , adjust= align)
554
+ function edit_backspace (s:: PromptState , align:: Bool = options (s). backspace_align,
555
+ adjust= options (s). backspace_adjust)
553
556
push_undo (s)
554
557
if edit_backspace (buffer (s), align, adjust)
555
558
refresh_line (s)
@@ -571,7 +574,7 @@ function endofline(buf, pos=position(buf))
571
574
eol == 0 ? buf. size : pos + eol - 1
572
575
end
573
576
574
- function edit_backspace (buf:: IOBuffer , align:: Bool = false , adjust:: Bool = align )
577
+ function edit_backspace (buf:: IOBuffer , align:: Bool = false , adjust:: Bool = false )
575
578
! align && adjust &&
576
579
throw (DomainError ((align, adjust),
577
580
" if `adjust` is `true`, `align` must be `true`" ))
@@ -1649,7 +1652,7 @@ AnyDict(
1649
1652
end ,
1650
1653
' \n ' => KeyAlias (' \r ' ),
1651
1654
# Backspace/^H
1652
- ' \b ' => (s,o... )-> edit_backspace (s, true ),
1655
+ ' \b ' => (s,o... )-> edit_backspace (s),
1653
1656
127 => KeyAlias (' \b ' ),
1654
1657
# Meta Backspace
1655
1658
" \e\b " => (s,o... )-> edit_delete_prev_word (s),
@@ -1860,14 +1863,14 @@ function Prompt(prompt;
1860
1863
prompt_prefix = " " ,
1861
1864
prompt_suffix = " " ,
1862
1865
keymap_dict = default_keymap_dict,
1863
- keymap_func_data = nothing ,
1866
+ repl = nothing ,
1864
1867
complete = EmptyCompletionProvider (),
1865
1868
on_enter = default_enter_cb,
1866
1869
on_done = ()-> nothing ,
1867
1870
hist = EmptyHistoryProvider (),
1868
1871
sticky = false )
1869
1872
1870
- Prompt (prompt, prompt_prefix, prompt_suffix, keymap_dict, keymap_func_data ,
1873
+ Prompt (prompt, prompt_prefix, prompt_suffix, keymap_dict, repl ,
1871
1874
complete, on_enter, on_done, hist, sticky)
1872
1875
end
1873
1876
@@ -1968,7 +1971,7 @@ end
1968
1971
edit_redo! (s) = nothing
1969
1972
1970
1973
keymap (s:: PromptState , prompt:: Prompt ) = prompt. keymap_dict
1971
- keymap_data (s:: PromptState , prompt:: Prompt ) = prompt. keymap_func_data
1974
+ keymap_data (s:: PromptState , prompt:: Prompt ) = prompt. repl
1972
1975
keymap (ms:: MIState , m:: ModalInterface ) = keymap (state (ms), mode (ms))
1973
1976
keymap_data (ms:: MIState , m:: ModalInterface ) = keymap_data (state (ms), mode (ms))
1974
1977
0 commit comments