message: Cleanup repl loop a little
diff: @@ -83,16 +83,21 @@ pub fn run(options: Options) -> Result<(), Box<dyn Error>> {
  let mut state = surface_to_core::State::new(&globals);
  loop {
  - match editor.readline(&options.prompt) {
  - Ok(line) => {
  + let file = match editor.readline(&options.prompt) {
  + Ok(line) => SimpleFile::new("<input>", line),
  + Err(ReadlineError::Interrupted) => {
  + println!("Interrupted!");
  + continue;
  + }
  + Err(ReadlineError::Eof) => break,
  + Err(error) => return Err(error.into()),
  + };
  +
  if !options.no_history {
  - editor.add_history_entry(&line);
  + editor.add_history_entry(file.source());
  }
  // TODO: Parse REPL commands
  -
  - let file = SimpleFile::new("<input>", line);
  -
  let surface_term = match surface::Term::from_str(file.source()) {
  Ok(surface_term) => surface_term,
  Err(error) => {
  @@ -112,8 +117,7 @@ pub fn run(options: Options) -> Result<(), Box<dyn Error>> {
  &reporting_config,
  &file,
  &diagnostic,
  - )
  - .unwrap();
  + )?;
  }
  } else {
  let ann_term = core::Term::Ann(
  @@ -126,11 +130,6 @@ pub fn run(options: Options) -> Result<(), Box<dyn Error>> {
  println!("{}", doc.1.pretty(term_width()));
  }
  }
  - Err(ReadlineError::Interrupted) => println!("Interrupted!"),
  - Err(ReadlineError::Eof) => break,
  - Err(error) => return Err(error.into()),
  - }
  - }
  if !options.no_history && !editor.history().is_empty() {
  let history_path = xdg_dirs.place_data_file(HISTORY_FILE_NAME)?;
  