def callback_handler_install(prompt = nil, &block)
      raise ArgumentError, 'block is required' unless block
      @rl_callback_handler = block
      rl_callback_handler_install(prompt, block)
    end
def callback_handler_install(prompt = nil, &block)
      raise ArgumentError, 'block is required' unless block
      @rl_callback_handler = block
      rl_callback_handler_install(prompt, block)
    end
Set up the terminal for readline I/O and display the initial
 expanded value of prompt. Save the value of `block` to call when a
 complete line of input has been entered.

 A reference to the handler is saved in an instance variable so
 that it will not be garbage collected.  Subsequent calls to
 #handler_install will displace this reference.  A call to
 #handler_remove will remove the reference.

 @param [String] prompt

 @yield [String] a handler taking the text of the line as the sole
 argument, called when a complete line of input has been entered.