[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-source-highlight] [PATCH] Add Rust support
From: |
Tom Tromey |
Subject: |
[Help-source-highlight] [PATCH] Add Rust support |
Date: |
Sun, 11 Nov 2018 10:37:28 -0700 |
This adds a rust.lang and changes lang.map so that .rs is recognized
as Rust source.
---
ChangeLog | 5 +++++
src/lang.map | 1 +
src/rust.lang | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 40 insertions(+)
create mode 100644 src/rust.lang
diff --git a/ChangeLog b/ChangeLog
index 0b45fa8..5188f53 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-10-13 Tom Tromey <address@hidden>
+
+ * src/lang.map: Add .rs.
+ * src/rust.lang: New file.
+
2012-11-09 bettini <address@hidden>
* src/lang.map: .f mapped to fotran
diff --git a/src/lang.map b/src/lang.map
index e84ded8..6a2ca0c 100644
--- a/src/lang.map
+++ b/src/lang.map
@@ -169,3 +169,4 @@ ly = lilypond.lang
groovy = groovy.lang
json = json.lang
feature = feature.lang
+rs = rust.lang
diff --git a/src/rust.lang b/src/rust.lang
new file mode 100644
index 0000000..bc74eb1
--- /dev/null
+++ b/src/rust.lang
@@ -0,0 +1,34 @@
+# Rust
+
+environment comment start "//" begin
+ include "url.lang"
+ include "todo.lang"
+end
+
+# Strings.
+string delim `(?<!r)b?\"` "\"" escape "\\"
+string delim `b?r(#*)\"` "\"" + @{1} multiline
+
+vardef common_escape = `(?:[\\nrt0']|x[a-fA-F0-9]{2})`
+vardef unicode_escape = `u\{[a-fA-F0-9]{6}\}`
+
+string = `b?'(?:[^\\']|\\(?:` + $common_escape + `|` + $unicode_escape + `))'`
+
+# Not exactly Rust syntax.
+include "number.lang"
+
+# Reserved keywords aren't listed.
+keyword = "as|box|break|const|continue|crate|else|enum|extern",
+ "false|fn|for|if|impl|in|let|loop",
+ "match|mod|move|mut|pub|ref|return",
+ "self|static|struct|super|trait|true|type",
+ "union|unsafe|use|where|while"
+
+type = "i8|u8|i16|u16|i32|u32|i64|u64|i128|u128|isize|usize",
+ "bool|char|Self|f32|f64|&str"
+
+include "symbols.lang"
+
+cbracket = "{|}"
+
+include "function.lang"
--
2.17.2