oak_java/lsp/highlighter/
mod.rs1use crate::JavaTokenType;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum HighlightKind {
8 Keyword,
10 Literal,
12 Identifier,
14 Comment,
16 Operator,
18 Punctuation,
20 Function,
22 Type,
24}
25
26pub struct JavaHighlighter;
28
29impl JavaHighlighter {
30 pub fn highlight(&self, kind: JavaTokenType) -> Option<HighlightKind> {
32 match kind {
33 JavaTokenType::Abstract
34 | JavaTokenType::Assert
35 | JavaTokenType::Boolean
36 | JavaTokenType::Break
37 | JavaTokenType::Byte
38 | JavaTokenType::Case
39 | JavaTokenType::Catch
40 | JavaTokenType::Char
41 | JavaTokenType::Class
42 | JavaTokenType::Const
43 | JavaTokenType::Continue
44 | JavaTokenType::Default
45 | JavaTokenType::Do
46 | JavaTokenType::Double
47 | JavaTokenType::Else
48 | JavaTokenType::Enum
49 | JavaTokenType::Extends
50 | JavaTokenType::Final
51 | JavaTokenType::Finally
52 | JavaTokenType::Float
53 | JavaTokenType::For
54 | JavaTokenType::If
55 | JavaTokenType::Goto
56 | JavaTokenType::Implements
57 | JavaTokenType::Import
58 | JavaTokenType::Instanceof
59 | JavaTokenType::Int
60 | JavaTokenType::Interface
61 | JavaTokenType::Long
62 | JavaTokenType::Native
63 | JavaTokenType::New
64 | JavaTokenType::Package
65 | JavaTokenType::Private
66 | JavaTokenType::Protected
67 | JavaTokenType::Public
68 | JavaTokenType::Return
69 | JavaTokenType::Short
70 | JavaTokenType::Static
71 | JavaTokenType::Strictfp
72 | JavaTokenType::Super
73 | JavaTokenType::Switch
74 | JavaTokenType::Synchronized
75 | JavaTokenType::This
76 | JavaTokenType::Throw
77 | JavaTokenType::Throws
78 | JavaTokenType::Transient
79 | JavaTokenType::Try
80 | JavaTokenType::Void
81 | JavaTokenType::Volatile
82 | JavaTokenType::While => Some(HighlightKind::Keyword),
83
84 JavaTokenType::IntegerLiteral | JavaTokenType::FloatingPointLiteral | JavaTokenType::BooleanLiteral | JavaTokenType::CharacterLiteral | JavaTokenType::StringLiteral | JavaTokenType::NullLiteral => Some(HighlightKind::Literal),
85
86 JavaTokenType::Identifier => Some(HighlightKind::Identifier),
87
88 JavaTokenType::LineComment | JavaTokenType::BlockComment => Some(HighlightKind::Comment),
89
90 JavaTokenType::Assign
91 | JavaTokenType::GreaterThan
92 | JavaTokenType::LessThan
93 | JavaTokenType::Bang
94 | JavaTokenType::Tilde
95 | JavaTokenType::Question
96 | JavaTokenType::Colon
97 | JavaTokenType::Equals
98 | JavaTokenType::LessThanEquals
99 | JavaTokenType::GreaterThanEquals
100 | JavaTokenType::BangEquals
101 | JavaTokenType::AmpersandAmpersand
102 | JavaTokenType::PipePipe
103 | JavaTokenType::PlusPlus
104 | JavaTokenType::MinusMinus
105 | JavaTokenType::Plus
106 | JavaTokenType::Minus
107 | JavaTokenType::Asterisk
108 | JavaTokenType::Slash
109 | JavaTokenType::Ampersand
110 | JavaTokenType::Pipe
111 | JavaTokenType::Caret
112 | JavaTokenType::Percent
113 | JavaTokenType::LeftShift
114 | JavaTokenType::RightShift
115 | JavaTokenType::UnsignedRightShift
116 | JavaTokenType::PlusEquals
117 | JavaTokenType::MinusEquals
118 | JavaTokenType::AsteriskEquals
119 | JavaTokenType::SlashEquals
120 | JavaTokenType::AmpersandEquals
121 | JavaTokenType::PipeEquals
122 | JavaTokenType::CaretEquals
123 | JavaTokenType::PercentEquals
124 | JavaTokenType::LeftShiftEquals
125 | JavaTokenType::RightShiftEquals
126 | JavaTokenType::UnsignedRightShiftEquals => Some(HighlightKind::Operator),
127
128 JavaTokenType::LeftParen
129 | JavaTokenType::RightParen
130 | JavaTokenType::LeftBrace
131 | JavaTokenType::RightBrace
132 | JavaTokenType::LeftBracket
133 | JavaTokenType::RightBracket
134 | JavaTokenType::Semicolon
135 | JavaTokenType::Comma
136 | JavaTokenType::Dot
137 | JavaTokenType::Ellipsis
138 | JavaTokenType::At
139 | JavaTokenType::DoubleColon => Some(HighlightKind::Punctuation),
140
141 _ => None,
142 }
143 }
144}