pub trait Completer { fn complete(&self, line: &str, pos: usize) -> Vec<(Span, String)>; }
A trait that defines how to convert a line and position to a list of potential completions in that position.
the action that will take the line and position and convert it to a vector of completions, which include the span to replace and the contents of that replacement