diff --git a/README.md b/README.md index 5424c97..ea83c28 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,7 @@ Julia JSON JSX Kotlin +Lean LESS LD Script LISP diff --git a/src/lib/language/language_type.rs b/src/lib/language/language_type.rs index 49d6cc0..690c271 100644 --- a/src/lib/language/language_type.rs +++ b/src/lib/language/language_type.rs @@ -97,6 +97,8 @@ pub enum LanguageType { Jsx, /// Kotlin Kotlin, + /// Lean + Lean, /// Less Less, /// LinkerScript @@ -236,6 +238,7 @@ impl LanguageType { Jsx => "JSX", Julia => "Julia", Kotlin => "Kotlin", + Lean => "Lean", Less => "LESS", LinkerScript => "LD Script", Lisp => "LISP", @@ -335,6 +338,7 @@ impl LanguageType { "jsx" => Some(Jsx), "kt" | "kts" => Some(Kotlin), "lds" => Some(LinkerScript), + "lean" | "hlean" => Some(Lean), "less" => Some(Less), "lua" => Some(Lua), "m" => Some(ObjectiveC), @@ -439,6 +443,7 @@ impl<'a> From<&'a str> for LanguageType { "Json" => Json, "Jsx" => Jsx, "Kotlin" => Kotlin, + "Lean" => Lean, "Less" => Less, "LinkerScript" => LinkerScript, "Lisp" => Lisp, diff --git a/src/lib/language/languages.rs b/src/lib/language/languages.rs index 7f2ec96..1106105 100644 --- a/src/lib/language/languages.rs +++ b/src/lib/language/languages.rs @@ -321,6 +321,7 @@ impl Languages { .set_quotes(vec![("\"", "\""), ("\"\"\"", "\"\"\"")]), Kotlin => Language::new_c().nested() .set_quotes(vec![("\"", "\""), ("\"\"\"", "\"\"\"")]), + Lean => Language::new(vec!["--"], vec![("/-", "-/")]).nested(), Less => Language::new_c(), LinkerScript => Language::new_c(), Lisp => Language::new(vec![";"], vec![("#|", "|#")]).nested(), diff --git a/src/lib/utils/multi_line.rs b/src/lib/utils/multi_line.rs index 81b7cbc..6dc2fc1 100644 --- a/src/lib/utils/multi_line.rs +++ b/src/lib/utils/multi_line.rs @@ -66,9 +66,11 @@ pub fn handle_multi_line(line: &str, } - for comment in &language.line_comment { - if window.starts_with(comment) { - break 'window; + if stack.is_empty() { + for comment in &language.line_comment { + if window.starts_with(comment) { + break 'window; + } } } @@ -117,6 +119,15 @@ mod tests { assert_eq!(stack.len(), 0); } + #[test] + fn single_comment_in_multi() { + let mut stack = vec![]; + let mut quote = None; + let language = Language::new_c(); + handle_multi_line("Hello /* // */ world", &language, &mut stack, &mut quote); + assert_eq!(stack.len(), 0); + } + #[test] fn comment_start() { let mut stack = vec![];