123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114open!Coreopen!Asyncopen!Ecamlopen!Expect_test_helpers_coremoduleBuffer_helper=Buffer_helperletshow?(show_point=true)()=ifshow_pointthenBuffer_helper.show_point()elseCurrent_buffer.contents()|>Text.to_utf8_bytes|>message;;letraise_if_in_minibuffer_key="<f13>"letminibuffer_was_open=reffalselet()=defun_nullary_nil("jane-fe-test-raise-if-in-minibuffer"|>Symbol.intern)[%here]~docstring:"For testing."~interactive:No_arg~define_keys:[Keymap.global(),raise_if_in_minibuffer_key](fun()->matchMinibuffer.active_window()with|None->minibuffer_was_open:=false|Some_->minibuffer_was_open:=true;letprompt=Minibuffer.prompt()inmessage_s[%sexp"Minibuffer open",{prompt:stringoption}];never_returns(Command.abort_recursive_edit()));;letexecute_keyskeys=letcurrent_buffer=Current_buffer.get()inletselected_buffer=Window.buffer_exn(Selected_window.get())inifnot(Buffer.equalcurrent_bufferselected_buffer)thenraise_s[%message"do not execute a key sequence when the current_buffer and selected_buffer are \
different -- [execute-kbd-macro] sets the current_buffer to the selected_buffer"(current_buffer:Buffer.t)(selected_buffer:Buffer.t)];Key_sequence.execute(Key_sequence.create_exn(concatkeys~sep:" "));;letpress?(and_show=true)?show_pointkey_sequence=minibuffer_was_open:=false;let%map()=execute_keys[key_sequence;raise_if_in_minibuffer_key]inifand_show&¬!minibuffer_was_openthenshow?show_point();;letshow_minibuffer_key="<f14>"letshow_minibuffer_key_sequence~show_contents=letprefix=matchshow_contentswith|true->"C-u "|false->""in[%string{|%{prefix}%{show_minibuffer_key}|}];;let()=letshow_minibuffer~show_contents=letprompt=Minibuffer.prompt()|>Option.value_exn~message:"no prompt even though minibuffer active"inletcontents=matchshow_contentswith|false->""|true->Minibuffer.contents()inprint_endline[%string{|%{prompt}%{contents}|}]inletshow_completions()=letname="*Completions*"inOption.iter(Buffer.find~name)~f:(funbuffer->print_endline"";print_endline[%string{|Contents of %{name} buffer:|}];Current_buffer.set_temporarilySyncbuffer~f:(fun()->print_endline(Current_buffer.contents()|>Text.to_utf8_bytes)))indefun("jane-fe-test-show-minibuffer"|>Symbol.intern)[%here]~docstring:"For testing."~interactive:Raw_prefix~define_keys:[Keymap.global(),show_minibuffer_key](ReturnsValue.Type.unit)(let%map_open.Defunshow_contents=required"SHOW-CONTENTS"boolinmatchMinibuffer.active_window()with|None->print_endline"Minibuffer not open";require[%here]false|Some_->show_minibuffer~show_contents;show_completions());;letpress_and_show_minibuffer?(show_contents=true)key_sequence=match%maptry_with(fun()->execute_keys[key_sequence;show_minibuffer_key_sequence~show_contents;"C-g"])with|Error_->()|Ok()->require[%here]false;;letevalstring=let%mapvalue=Form.eval_stringstringinprint_s[%sexp(value:Value.t)];;