use smallvec::SmallVec;
use super::Span;
pub(crate) type Highlights<const H: usize> = SmallVec<Highlight, H>;
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Highlight {
kind: HighlightKind,
span: Span,
}
impl Highlight {
pub(crate) fn new(kind: HighlightKind, span: Span) -> Self {
Self { kind, span }
}
pub fn kind(&self) -> &HighlightKind {
&self.kind
}
pub fn span(&self) -> Span {
self.span
}
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum HighlightKind {
None = 0,
Word = 1,
Keyword = 2,
Number = 3,
Concept = 4,
Comment = 5,
Error = 6,
Noop = 7,
}