@@ -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
- if edit_backspace (buffer (s), align)
557
+ if edit_backspace (buffer (s), align, adjust )
555
558
refresh_line (s)
556
559
else
557
560
pop_undo (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`" ))
@@ -1650,7 +1653,7 @@ AnyDict(
1650
1653
end ,
1651
1654
' \n ' => KeyAlias (' \r ' ),
1652
1655
# Backspace/^H
1653
- ' \b ' => (s,o... )-> edit_backspace (s, true ),
1656
+ ' \b ' => (s,o... )-> edit_backspace (s),
1654
1657
127 => KeyAlias (' \b ' ),
1655
1658
# Meta Backspace
1656
1659
" \e\b " => (s,o... )-> edit_delete_prev_word (s),
@@ -1861,14 +1864,14 @@ function Prompt(prompt;
1861
1864
prompt_prefix = " " ,
1862
1865
prompt_suffix = " " ,
1863
1866
keymap_dict = default_keymap_dict,
1864
- keymap_func_data = nothing ,
1867
+ repl = nothing ,
1865
1868
complete = EmptyCompletionProvider (),
1866
1869
on_enter = default_enter_cb,
1867
1870
on_done = ()-> nothing ,
1868
1871
hist = EmptyHistoryProvider (),
1869
1872
sticky = false )
1870
1873
1871
- Prompt (prompt, prompt_prefix, prompt_suffix, keymap_dict, keymap_func_data ,
1874
+ Prompt (prompt, prompt_prefix, prompt_suffix, keymap_dict, repl ,
1872
1875
complete, on_enter, on_done, hist, sticky)
1873
1876
end
1874
1877
@@ -1969,7 +1972,7 @@ end
1969
1972
edit_redo! (s) = nothing
1970
1973
1971
1974
keymap (s:: PromptState , prompt:: Prompt ) = prompt. keymap_dict
1972
- keymap_data (s:: PromptState , prompt:: Prompt ) = prompt. keymap_func_data
1975
+ keymap_data (s:: PromptState , prompt:: Prompt ) = prompt. repl
1973
1976
keymap (ms:: MIState , m:: ModalInterface ) = keymap (state (ms), mode (ms))
1974
1977
keymap_data (ms:: MIState , m:: ModalInterface ) = keymap_data (state (ms), mode (ms))
1975
1978
0 commit comments