Remove compatibility code in csharp-mode

* lisp/progmodes/csharp-mode.el (c-basic-matchers-before): Remove
invalid string check for Emacs 27.
(version=): Remove compatibility hack for string handling in CC Mode
in Emacs 27.1.  (Bug#59602)
This commit is contained in:
Theodor Thornhill 2022-11-26 20:10:58 +01:00 committed by Stefan Kangas
parent 8cda625b22
commit ea2f2f1e71

View file

@ -319,12 +319,7 @@
(c-lang-defconst c-basic-matchers-before
csharp `(
;; Warning face on unclosed strings
,@(if (version< emacs-version "27.0")
;; Taken from 26.1 branch
`(,(c-make-font-lock-search-function
(concat ".\\(" c-string-limit-regexp "\\)")
'((c-font-lock-invalid-string))))
`(("\\s|" 0 font-lock-warning-face t nil)))
("\\s|" 0 font-lock-warning-face t nil)
;; Invalid single quotes
c-font-lock-invalid-single-quotes
@ -346,7 +341,6 @@
nil
(goto-char (match-end 0)))))
;; Negation character
(eval . (list "\\(!\\)[^=]" 1 c-negation-char-face-name))
@ -375,8 +369,7 @@
(eval . (list (concat "\\<catch\\> *( *"
csharp--regex-type-name-matcher
" *) *")
1 font-lock-type-face))
))
1 font-lock-type-face))))
(c-lang-defconst c-basic-matchers-after
csharp (append
@ -505,70 +498,6 @@ compilation and evaluation time conflicts."
;;; End of new syntax constructs
;;; Fix for strings on version 27.1
(when (version= emacs-version "27.1")
;; See:
;; https://github.com/emacs-csharp/csharp-mode/issues/175
;; https://github.com/emacs-csharp/csharp-mode/issues/151
;; for the full story.
(defun c-pps-to-string-delim (end)
(let* ((start (point))
(no-st-s `(0 nil nil ?\" nil nil 0 nil ,start nil nil))
(st-s `(0 nil nil t nil nil 0 nil ,start nil nil))
no-st-pos st-pos
)
(parse-partial-sexp start end nil nil no-st-s 'syntax-table)
(setq no-st-pos (point))
(goto-char start)
(while (progn
(parse-partial-sexp (point) end nil nil st-s 'syntax-table)
(unless (bobp)
(c-clear-syn-tab (1- (point))))
(setq st-pos (point))
(and (< (point) end)
(not (eq (char-before) ?\")))))
(goto-char (min no-st-pos st-pos))
nil))
(defun c-multiline-string-check-final-quote ()
(let (pos-ll pos-lt)
(save-excursion
(goto-char (point-max))
(skip-chars-backward "^\"")
(while
(and
(not (bobp))
(cond
((progn
(setq pos-ll (c-literal-limits)
pos-lt (c-literal-type pos-ll))
(memq pos-lt '(c c++)))
;; In a comment.
(goto-char (car pos-ll)))
((save-excursion
(backward-char) ; over "
(c-is-escaped (point)))
;; At an escaped string.
(backward-char)
t)
(t
;; At a significant "
(c-clear-syn-tab (1- (point)))
(setq pos-ll (c-literal-limits)
pos-lt (c-literal-type pos-ll))
nil)))
(skip-chars-backward "^\""))
(cond
((bobp))
((eq pos-lt 'string)
(c-put-syn-tab (1- (point)) '(15)))
(t nil))))))
;;; End of fix for strings on version 27.1
;; When invoked by MSBuild, cscs errors look like this:
;; subfolder\file.cs(6,18): error CS1006: Name of constructor must
;; match name of class [c:\Users\user\project.csproj]