mirror of
https://github.com/golang/go
synced 2024-11-11 22:20:22 -07:00
misc/emacs: ignore backquote in comment or string
go-mode on Emacs 23 wrongly recognizes a backquote in a comment or a string as a start of a raw string literal. Below is an example that go-mode does not work well. This patch is to fix that issue. // ` var x = 1 // ` LGTM=dominik.honnef R=golang-codereviews, dominik.honnef, adonovan CC=golang-codereviews https://golang.org/cl/84900043
This commit is contained in:
parent
95ee7d6414
commit
3d63ec240e
@ -294,7 +294,7 @@ For mode=set, all covered lines will have this weight."
|
||||
(defconst go--font-lock-syntactic-keywords
|
||||
;; Override syntax property of raw string literal contents, so that
|
||||
;; backslashes have no special meaning in ``. Used in Emacs 23 or older.
|
||||
'(("\\(`\\)\\([^`]*\\)\\(`\\)"
|
||||
'((go--match-raw-string-literal
|
||||
(1 (7 . ?`))
|
||||
(2 (15 . nil)) ;; 15 = "generic string"
|
||||
(3 (7 . ?`)))))
|
||||
@ -367,6 +367,18 @@ STOP-AT-STRING is not true, over strings."
|
||||
(- (point-max)
|
||||
(point-min))))
|
||||
|
||||
(defun go--match-raw-string-literal (end)
|
||||
"Search for a raw string literal. Set point to the end of the
|
||||
occurence found on success. Returns nil on failure."
|
||||
(when (search-forward "`" end t)
|
||||
(goto-char (match-beginning 0))
|
||||
(if (go-in-string-or-comment-p)
|
||||
(progn (goto-char (match-end 0))
|
||||
(go--match-raw-string-literal end))
|
||||
(when (looking-at "\\(`\\)\\([^`]*\\)\\(`\\)")
|
||||
(goto-char (match-end 0))
|
||||
t))))
|
||||
|
||||
(defun go-previous-line-has-dangling-op-p ()
|
||||
"Returns non-nil if the current line is a continuation line."
|
||||
(let* ((cur-line (line-number-at-pos))
|
||||
|
Loading…
Reference in New Issue
Block a user