diff options
| author | Micah Chalmer <micah@micahchalmer.net> | 2015-02-07 21:21:00 -0500 |
|---|---|---|
| committer | Micah Chalmer <micah@micahchalmer.net> | 2015-02-07 21:21:00 -0500 |
| commit | a653c6b23138a264c6f263ae5ffc1b09888d3b88 (patch) | |
| tree | 573a85cadd3253706166ce6fc2d0d7272d4a8e53 /rust-mode.el | |
| parent | 19bc0e9ef1dd72bfde10644037a13719a38777fc (diff) | |
| download | rust-mode-a653c6b23138a264c6f263ae5ffc1b09888d3b88.tar.gz | |
Highlight raw strings correctly
Diffstat (limited to 'rust-mode.el')
| -rw-r--r-- | rust-mode.el | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/rust-mode.el b/rust-mode.el index 43afd9a..fe9660b 100644 --- a/rust-mode.el +++ b/rust-mode.el @@ -51,6 +51,13 @@ table)) +(defvar rust-mode-inside-raw-string-syntax-table + (let ((table (make-syntax-table rust-mode-syntax-table))) + (modify-syntax-entry ?\" "_" table) + (modify-syntax-entry ?\\ "_" table) + + table)) + (defgroup rust-mode nil "Support for Rust code." :link '(url-link "http://www.rust-lang.org/") @@ -312,12 +319,17 @@ ("static" . font-lock-constant-face))))) (defvar rust-mode-font-lock-syntactic-keywords - (mapcar (lambda (re) (list re '(1 "\"") '(2 "\""))) - '("\\('\\)[^']\\('\\)" - "\\('\\)\\\\['nrt]\\('\\)" - "\\('\\)\\\\x[[:xdigit:]]\\{2\\}\\('\\)" - "\\('\\)\\\\u[[:xdigit:]]\\{4\\}\\('\\)" - "\\('\\)\\\\U[[:xdigit:]]\\{8\\}\\('\\)"))) + (append + ;; Handle single quoted character literals: + (mapcar (lambda (re) (list re '(1 "\"") '(2 "\""))) + '("\\('\\)[^']\\('\\)" + "\\('\\)\\\\['nrt]\\('\\)" + "\\('\\)\\\\x[[:xdigit:]]\\{2\\}\\('\\)" + "\\('\\)\\\\u[[:xdigit:]]\\{4\\}\\('\\)" + "\\('\\)\\\\U[[:xdigit:]]\\{8\\}\\('\\)")) + ;; Handle raw strings: + `(("\\(r\\)\"\\([^\"]*\\)\\(\"\\)" (1 "|") (2 ,rust-mode-inside-raw-string-syntax-table) (3 "|")) + ("\\(r\\)#\\(#*\\)\\(\"[^#]*\"\\2\\)\\(#\\)" (1 "|") (3 ,rust-mode-inside-raw-string-syntax-table) (4 "|"))))) (defun rust-fill-prefix-for-comment-start (line-start) "Determine what to use for `fill-prefix' based on what is at the beginning of a line." |
