blob: e8a9742b57753ab824465d8633101bc26b58b70c [file] [log] [blame]
//! Syntax highlighting
use config::CompletionType;
use std::borrow::Cow::{self, Borrowed};
/// Syntax highlighter with [ansi color](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters).
/// Rustyline will try to handle escape sequence for ansi color on windows
/// when not supported natively (windows <10).
///
/// Currently, the highlighted version *must* have the same display width as
/// the original input.
pub trait Highlighter {
/// Takes the currently edited `line` with the cursor `pos`ition and
/// returns the highlighted version (with ANSI color).
///
/// For example, you can implement
/// [blink-matching-paren](https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html).
fn highlight<'l>(&self, line: &'l str, pos: usize) -> Cow<'l, str> {
let _ = pos;
Borrowed(line)
}
/// Takes the `prompt` and
/// returns the highlighted version (with ANSI color).
fn highlight_prompt<'p>(&self, prompt: &'p str) -> Cow<'p, str> {
Borrowed(prompt)
}
/// Takes the dynamic `prompt` and
/// returns the highlighted version (with ANSI color).
#[deprecated(
since = "2.0.1",
note = "please use `highlight_prompt` instead"
)]
fn highlight_dynamic_prompt<'p>(&self, prompt: &'p str) -> Cow<'p, str> {
Borrowed(prompt)
}
/// Takes the `hint` and
/// returns the highlighted version (with ANSI color).
fn highlight_hint<'h>(&self, hint: &'h str) -> Cow<'h, str> {
Borrowed(hint)
}
/// Takes the completion `canditate` and
/// returns the highlighted version (with ANSI color).
///
/// Currently, used only with `CompletionType::List`.
fn highlight_candidate<'c>(
&self,
candidate: &'c str,
completion: CompletionType,
) -> Cow<'c, str> {
let _ = completion;
Borrowed(candidate)
}
/// Tells if the `ch`ar needs to be highlighted when typed or when cursor
/// is moved under.
///
/// Used to optimize refresh when a character is inserted or the cursor is
/// moved.
fn highlight_char(&self, grapheme: &str) -> bool {
let _ = grapheme;
false
}
}
impl Highlighter for () {}