@@ -16,31 +16,33 @@ use crate::{
1616 FileId ,
1717} ;
1818
19- const HIGHLIGHT_TAG_FIELD : & ' static str = "field" ;
20- const HIGHLIGHT_TAG_FUNCTION : & ' static str = "function" ;
21- const HIGHLIGHT_TAG_MODULE : & ' static str = "module" ;
22- const HIGHLIGHT_TAG_TYPE : & ' static str = "type" ;
23- const HIGHLIGHT_TAG_CONSTANT : & ' static str = "constant" ;
24- const HIGHLIGHT_TAG_MACRO : & ' static str = "macro" ;
25- const HIGHLIGHT_TAG_VARIABLE : & ' static str = "variable" ;
26- const HIGHLIGHT_TAG_VARIABLE_MUT : & ' static str = "variable.mut" ;
27- const HIGHLIGHT_TAG_TEXT : & ' static str = "text" ;
28-
29- const HIGHLIGHT_TAG_TYPE_BUILTIN : & ' static str = "type.builtin" ;
30- const HIGHLIGHT_TAG_TYPE_SELF : & ' static str = "type.self" ;
31- const HIGHLIGHT_TAG_TYPE_PARAM : & ' static str = "type.param" ;
32- const HIGHLIGHT_TAG_TYPE_LIFETIME : & ' static str = "type.lifetime" ;
33-
34- const HIGHLIGHT_TAG_LITERAL_BYTE : & ' static str = "literal.byte" ;
35- const HIGHLIGHT_TAG_LITERAL_NUMERIC : & ' static str = "literal.numeric" ;
36- const HIGHLIGHT_TAG_LITERAL_CHAR : & ' static str = "literal.char" ;
37- const HIGHLIGHT_TAG_LITERAL_COMMENT : & ' static str = "comment" ;
38- const HIGHLIGHT_TAG_LITERAL_STRING : & ' static str = "string" ;
39- const HIGHLIGHT_TAG_LITERAL_ATTRIBUTE : & ' static str = "attribute" ;
40-
41- const HIGHLIGHT_TAG_KEYWORD_UNSAFE : & ' static str = "keyword.unsafe" ;
42- const HIGHLIGHT_TAG_KEYWORD_CONTROL : & ' static str = "keyword.control" ;
43- const HIGHLIGHT_TAG_KEYWORD : & ' static str = "keyword" ;
19+ pub mod tags {
20+ pub ( crate ) const FIELD : & ' static str = "field" ;
21+ pub ( crate ) const FUNCTION : & ' static str = "function" ;
22+ pub ( crate ) const MODULE : & ' static str = "module" ;
23+ pub ( crate ) const TYPE : & ' static str = "type" ;
24+ pub ( crate ) const CONSTANT : & ' static str = "constant" ;
25+ pub ( crate ) const MACRO : & ' static str = "macro" ;
26+ pub ( crate ) const VARIABLE : & ' static str = "variable" ;
27+ pub ( crate ) const VARIABLE_MUT : & ' static str = "variable.mut" ;
28+ pub ( crate ) const TEXT : & ' static str = "text" ;
29+
30+ pub ( crate ) const TYPE_BUILTIN : & ' static str = "type.builtin" ;
31+ pub ( crate ) const TYPE_SELF : & ' static str = "type.self" ;
32+ pub ( crate ) const TYPE_PARAM : & ' static str = "type.param" ;
33+ pub ( crate ) const TYPE_LIFETIME : & ' static str = "type.lifetime" ;
34+
35+ pub ( crate ) const LITERAL_BYTE : & ' static str = "literal.byte" ;
36+ pub ( crate ) const LITERAL_NUMERIC : & ' static str = "literal.numeric" ;
37+ pub ( crate ) const LITERAL_CHAR : & ' static str = "literal.char" ;
38+ pub ( crate ) const LITERAL_COMMENT : & ' static str = "comment" ;
39+ pub ( crate ) const LITERAL_STRING : & ' static str = "string" ;
40+ pub ( crate ) const LITERAL_ATTRIBUTE : & ' static str = "attribute" ;
41+
42+ pub ( crate ) const KEYWORD_UNSAFE : & ' static str = "keyword.unsafe" ;
43+ pub ( crate ) const KEYWORD_CONTROL : & ' static str = "keyword.control" ;
44+ pub ( crate ) const KEYWORD : & ' static str = "keyword" ;
45+ }
4446
4547#[ derive( Debug ) ]
4648pub struct HighlightedRange {
@@ -97,9 +99,9 @@ pub(crate) fn highlight(db: &RootDatabase, file_id: FileId) -> Vec<HighlightedRa
9799 bindings_shadow_count. clear ( ) ;
98100 continue ;
99101 }
100- COMMENT => HIGHLIGHT_TAG_LITERAL_COMMENT ,
101- STRING | RAW_STRING | RAW_BYTE_STRING | BYTE_STRING => HIGHLIGHT_TAG_LITERAL_STRING ,
102- ATTR => HIGHLIGHT_TAG_LITERAL_ATTRIBUTE ,
102+ COMMENT => tags :: LITERAL_COMMENT ,
103+ STRING | RAW_STRING | RAW_BYTE_STRING | BYTE_STRING => tags :: LITERAL_STRING ,
104+ ATTR => tags :: LITERAL_ATTRIBUTE ,
103105 NAME_REF => {
104106 if node. ancestors ( ) . any ( |it| it. kind ( ) == ATTR ) {
105107 continue ;
@@ -116,7 +118,7 @@ pub(crate) fn highlight(db: &RootDatabase, file_id: FileId) -> Vec<HighlightedRa
116118 }
117119 } ;
118120
119- name_kind. map_or ( HIGHLIGHT_TAG_TEXT , |it| highlight_name ( db, it) )
121+ name_kind. map_or ( tags :: TEXT , |it| highlight_name ( db, it) )
120122 }
121123 NAME => {
122124 let name = node. as_node ( ) . cloned ( ) . and_then ( ast:: Name :: cast) . unwrap ( ) ;
@@ -133,25 +135,21 @@ pub(crate) fn highlight(db: &RootDatabase, file_id: FileId) -> Vec<HighlightedRa
133135
134136 match name_kind {
135137 Some ( name_kind) => highlight_name ( db, name_kind) ,
136- None => {
137- name. syntax ( ) . parent ( ) . map_or ( HIGHLIGHT_TAG_FUNCTION , |x| match x. kind ( ) {
138- STRUCT_DEF | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS_DEF => {
139- HIGHLIGHT_TAG_TYPE
140- }
141- TYPE_PARAM => HIGHLIGHT_TAG_TYPE_PARAM ,
142- RECORD_FIELD_DEF => HIGHLIGHT_TAG_FIELD ,
143- _ => HIGHLIGHT_TAG_FUNCTION ,
144- } )
145- }
138+ None => name. syntax ( ) . parent ( ) . map_or ( tags:: FUNCTION , |x| match x. kind ( ) {
139+ STRUCT_DEF | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS_DEF => tags:: TYPE ,
140+ TYPE_PARAM => tags:: TYPE_PARAM ,
141+ RECORD_FIELD_DEF => tags:: FIELD ,
142+ _ => tags:: FUNCTION ,
143+ } ) ,
146144 }
147145 }
148- INT_NUMBER | FLOAT_NUMBER => HIGHLIGHT_TAG_LITERAL_NUMERIC ,
149- BYTE => HIGHLIGHT_TAG_LITERAL_BYTE ,
150- CHAR => HIGHLIGHT_TAG_LITERAL_CHAR ,
151- LIFETIME => HIGHLIGHT_TAG_TYPE_LIFETIME ,
152- T ! [ unsafe ] => HIGHLIGHT_TAG_KEYWORD_UNSAFE ,
153- k if is_control_keyword ( k) => HIGHLIGHT_TAG_KEYWORD_CONTROL ,
154- k if k. is_keyword ( ) => HIGHLIGHT_TAG_KEYWORD ,
146+ INT_NUMBER | FLOAT_NUMBER => tags :: LITERAL_NUMERIC ,
147+ BYTE => tags :: LITERAL_BYTE ,
148+ CHAR => tags :: LITERAL_CHAR ,
149+ LIFETIME => tags :: TYPE_LIFETIME ,
150+ T ! [ unsafe ] => tags :: KEYWORD_UNSAFE ,
151+ k if is_control_keyword ( k) => tags :: KEYWORD_CONTROL ,
152+ k if k. is_keyword ( ) => tags :: KEYWORD ,
155153 _ => {
156154 if let Some ( macro_call) = node. as_node ( ) . cloned ( ) . and_then ( ast:: MacroCall :: cast) {
157155 if let Some ( path) = macro_call. path ( ) {
@@ -168,7 +166,7 @@ pub(crate) fn highlight(db: &RootDatabase, file_id: FileId) -> Vec<HighlightedRa
168166 }
169167 res. push ( HighlightedRange {
170168 range : TextRange :: from_to ( range_start, range_end) ,
171- tag : HIGHLIGHT_TAG_MACRO ,
169+ tag : tags :: MACRO ,
172170 binding_hash : None ,
173171 } )
174172 }
@@ -244,29 +242,29 @@ pub(crate) fn highlight_as_html(db: &RootDatabase, file_id: FileId, rainbow: boo
244242
245243fn highlight_name ( db : & RootDatabase , name_kind : NameKind ) -> & ' static str {
246244 match name_kind {
247- Macro ( _) => HIGHLIGHT_TAG_MACRO ,
248- Field ( _) => HIGHLIGHT_TAG_FIELD ,
249- AssocItem ( hir:: AssocItem :: Function ( _) ) => HIGHLIGHT_TAG_FUNCTION ,
250- AssocItem ( hir:: AssocItem :: Const ( _) ) => HIGHLIGHT_TAG_CONSTANT ,
251- AssocItem ( hir:: AssocItem :: TypeAlias ( _) ) => HIGHLIGHT_TAG_TYPE ,
252- Def ( hir:: ModuleDef :: Module ( _) ) => HIGHLIGHT_TAG_MODULE ,
253- Def ( hir:: ModuleDef :: Function ( _) ) => HIGHLIGHT_TAG_FUNCTION ,
254- Def ( hir:: ModuleDef :: Adt ( _) ) => HIGHLIGHT_TAG_TYPE ,
255- Def ( hir:: ModuleDef :: EnumVariant ( _) ) => HIGHLIGHT_TAG_CONSTANT ,
256- Def ( hir:: ModuleDef :: Const ( _) ) => HIGHLIGHT_TAG_CONSTANT ,
257- Def ( hir:: ModuleDef :: Static ( _) ) => HIGHLIGHT_TAG_CONSTANT ,
258- Def ( hir:: ModuleDef :: Trait ( _) ) => HIGHLIGHT_TAG_TYPE ,
259- Def ( hir:: ModuleDef :: TypeAlias ( _) ) => HIGHLIGHT_TAG_TYPE ,
260- Def ( hir:: ModuleDef :: BuiltinType ( _) ) => HIGHLIGHT_TAG_TYPE_BUILTIN ,
261- SelfType ( _) => HIGHLIGHT_TAG_TYPE_SELF ,
262- TypeParam ( _) => HIGHLIGHT_TAG_TYPE_PARAM ,
245+ Macro ( _) => tags :: MACRO ,
246+ Field ( _) => tags :: FIELD ,
247+ AssocItem ( hir:: AssocItem :: Function ( _) ) => tags :: FUNCTION ,
248+ AssocItem ( hir:: AssocItem :: Const ( _) ) => tags :: CONSTANT ,
249+ AssocItem ( hir:: AssocItem :: TypeAlias ( _) ) => tags :: TYPE ,
250+ Def ( hir:: ModuleDef :: Module ( _) ) => tags :: MODULE ,
251+ Def ( hir:: ModuleDef :: Function ( _) ) => tags :: FUNCTION ,
252+ Def ( hir:: ModuleDef :: Adt ( _) ) => tags :: TYPE ,
253+ Def ( hir:: ModuleDef :: EnumVariant ( _) ) => tags :: CONSTANT ,
254+ Def ( hir:: ModuleDef :: Const ( _) ) => tags :: CONSTANT ,
255+ Def ( hir:: ModuleDef :: Static ( _) ) => tags :: CONSTANT ,
256+ Def ( hir:: ModuleDef :: Trait ( _) ) => tags :: TYPE ,
257+ Def ( hir:: ModuleDef :: TypeAlias ( _) ) => tags :: TYPE ,
258+ Def ( hir:: ModuleDef :: BuiltinType ( _) ) => tags :: TYPE_BUILTIN ,
259+ SelfType ( _) => tags :: TYPE_SELF ,
260+ TypeParam ( _) => tags :: TYPE_PARAM ,
263261 Local ( local) => {
264262 if local. is_mut ( db) {
265- HIGHLIGHT_TAG_VARIABLE_MUT
263+ tags :: VARIABLE_MUT
266264 } else if local. ty ( db) . is_mutable_reference ( ) {
267- HIGHLIGHT_TAG_VARIABLE_MUT
265+ tags :: VARIABLE_MUT
268266 } else {
269- HIGHLIGHT_TAG_VARIABLE
267+ tags :: VARIABLE
270268 }
271269 }
272270 }
0 commit comments