1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-15 09:47:20 +00:00

CC Mode: Remove unused code from c-maybe-re-mark-raw-string

Acknowledge that when the function is called, it is always at the start of a
string, never in the middle or at the end of one.

* lisp/progmodes/cc-engine.el (c-maybe-re-mark-raw-string): Reformulate the
cond form into a `when' form, with all but the first arm of the cond
discarded.
This commit is contained in:
Alan Mackenzie 2019-05-20 12:46:37 +00:00
parent ec2e5a54b3
commit 9813905f83

View File

@ -7245,78 +7245,33 @@ comment at the start of cc-engine.el for more info."
(c-depropertize-raw-strings-in-region found-beg (point))))))
(defun c-maybe-re-mark-raw-string ()
;; When this function is called, point is immediately after a ". If this "
;; is the characteristic " of of a raw string delimiter, apply the pertinent
;; `syntax-table' text properties to the entire raw string (when properly
;; terminated) or just the delimiter (otherwise).
;; When this function is called, point is immediately after a " which opens
;; a string. If this " is the characteristic " of of a raw string
;; opener, apply the pertinent `syntax-table' text properties to the
;; entire raw string (when properly terminated) or just the delimiter
;; (otherwise). In either of these cases, return t, otherwise return nil.
;;
;; If the " is in any way part of a raw string, return non-nil. Otherwise
;; return nil.
(let ((here (point))
in-macro macro-end id Rquote found)
(cond
((and
(eq (char-before (1- (point))) ?R)
(looking-at "\\([^ ()\\\n\r\t]\\{0,16\\}\\)("))
(when
(and
(eq (char-before (1- (point))) ?R)
(looking-at "\\([^ ()\\\n\r\t]\\{0,16\\}\\)("))
(save-excursion
(setq in-macro (c-beginning-of-macro))
(setq macro-end (when in-macro
(c-end-of-macro)
(point) ;; (min (1+ (point)) (point-max))
)))
(if (not
(when
(not
(c-propertize-raw-string-opener
(match-string-no-properties 1) ; id
(1- (point)) ; open quote
(match-end 1) ; open paren
macro-end)) ; bound (end of macro) or nil.
(goto-char (or macro-end (point-max))))
t)
((save-excursion
(and
(search-backward-regexp ")\\([^ ()\\\n\r\t]\\{0,16\\}\\)\"\\="
(c-point 'bol) t)
(setq id (match-string-no-properties 1))
(let* ((quoted-id (regexp-quote id))
(quoted-id-depth (regexp-opt-depth quoted-id)))
(while
(and
;; Search back for an opening delimiter with identifier `id'.
;; A closing delimiter with `id' "blocks" our search.
(search-backward-regexp ; This could be slow.
(concat "\\(R\"" quoted-id "(\\)"
"\\|"
"\\()" quoted-id "\"\\)")
nil t)
(setq found t)
(if (eq (c-in-literal) 'string)
(match-beginning 1)
(match-beginning (+ 2 quoted-id-depth)))))
(and found
(null (c-in-literal))
(match-beginning 1)))
(setq Rquote (point))))
(save-excursion
(goto-char Rquote)
(setq in-macro (c-beginning-of-macro))
(setq macro-end (when in-macro
(c-end-of-macro)
(point))))
(if (or (not in-macro)
(<= here macro-end))
(progn
(c-propertize-raw-string-opener
id (1+ (point)) (match-end 1) macro-end)
(goto-char here)
t)
(goto-char here)
nil))
(t
;; If the " is in another part of a raw string (whether as part of the
;; identifier, or in the string itself) the `syntax-table' text
;; properties on the raw string will be current. So, we can use...
(c-raw-string-pos)))))
(goto-char (or macro-end (point-max))))
t)))
;; Handling of small scale constructs like types and names.