Introduce Highlighter trait
diff --git a/examples/example.rs b/examples/example.rs
index e249f51..3e75024 100644
--- a/examples/example.rs
+++ b/examples/example.rs
@@ -5,6 +5,7 @@
 
 use rustyline::completion::{Completer, FilenameCompleter, Pair};
 use rustyline::error::ReadlineError;
+use rustyline::highlight::Highlighter;
 use rustyline::hint::Hinter;
 use rustyline::{Cmd, CompletionType, Config, EditMode, Editor, Helper, KeyPress};
 
@@ -41,6 +42,8 @@
     }
 }
 
+impl Highlighter for MyHelper {}
+
 impl Helper for MyHelper {}
 
 fn main() {
diff --git a/src/config.rs b/src/config.rs
index f5199a8..86c04dc 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -214,7 +214,7 @@
     /// Forces colorization on or off.
     ///
     /// By default, colorization is on except if stdout is not a tty.
-    pub fn colors_enabled(mut self, color_mode: ColorMode) -> Builder {
+    pub fn color_mode(mut self, color_mode: ColorMode) -> Builder {
         self.p.color_mode = color_mode;
         self
     }
diff --git a/src/highlight.rs b/src/highlight.rs
new file mode 100644
index 0000000..8e9c972
--- /dev/null
+++ b/src/highlight.rs
@@ -0,0 +1,30 @@
+///! Syntax highlighting
+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). TODO to be used
+pub trait Highlighter {
+    /// Takes the currently edited `line` with the cursor `_pos`ition and
+    /// returns the highlighted version (with ANSI color).
+    fn highlight<'l>(&self, line: &'l str, _pos: usize) -> Cow<'l, str> {
+        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 `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).
+    fn highlight_canidate<'c>(&self, candidate: &'c str) -> Cow<'c, str> {
+        Borrowed(candidate)
+    }
+}
+
+impl Highlighter for () {}
diff --git a/src/lib.rs b/src/lib.rs
index 9cd6a16..5e76b3a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -33,6 +33,7 @@
 mod consts;
 mod edit;
 pub mod error;
+pub mod highlight;
 pub mod hint;
 pub mod history;
 mod keymap;
@@ -42,7 +43,6 @@
 
 mod tty;
 
-use std::borrow::Cow::{self, Borrowed};
 use std::collections::HashMap;
 use std::fmt;
 use std::io::{self, Write};
@@ -57,6 +57,7 @@
 pub use config::{CompletionType, Config, EditMode, HistoryDuplicates};
 pub use consts::KeyPress;
 use edit::State;
+use highlight::Highlighter;
 use hint::Hinter;
 use history::{Direction, History};
 pub use keymap::{Anchor, At, CharSearch, Cmd, Movement, RepeatCount, Word};
@@ -628,13 +629,8 @@
 where
     Self: Completer,
     Self: Hinter,
+    Self: Highlighter,
 {
-    /// Decorate `line` 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). TODO to be used
-    fn highligh(line: &str) -> Cow<str> {
-        Borrowed(line)
-    }
 }
 
 impl Helper for () {}