From 95eaf45ddfd6ea639c1d31ff7627c48601f74594 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Fri, 18 Dec 2020 11:29:28 +0000 Subject: [PATCH] Save match data in flymake-diag-region (bug#29193) * lisp/progmodes/flymake.el (flymake-diag-region): Move save-match-data up. --- lisp/progmodes/flymake.el | 68 +++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index da026da86a2..dfb4f18cff7 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -418,40 +418,40 @@ region is invalid." (let ((line (min (max line 1) (line-number-at-pos (point-max) 'absolute)))) (save-excursion - (goto-char (point-min)) - (forward-line (1- line)) - (cl-flet ((fallback-bol - () - (back-to-indentation) - (if (eobp) - (line-beginning-position 0) - (point))) - (fallback-eol - (beg) - (progn - (end-of-line) - (skip-chars-backward " \t\f\n" beg) - (if (eq (point) beg) - (line-beginning-position 2) - (point))))) - (if (and col (cl-plusp col)) - (let* ((beg (progn (forward-char (1- col)) - (point))) - (sexp-end (or (ignore-errors (end-of-thing 'sexp)) - (save-match-data - (ignore-errors (end-of-thing 'symbol))))) - (end (or (and sexp-end - (not (= sexp-end beg)) - sexp-end) - (and (< (goto-char (1+ beg)) (point-max)) - (point))))) - (if end - (cons beg end) - (cons (setq beg (fallback-bol)) - (fallback-eol beg)))) - (let* ((beg (fallback-bol)) - (end (fallback-eol beg))) - (cons beg end))))))) + (save-match-data + (goto-char (point-min)) + (forward-line (1- line)) + (cl-flet ((fallback-bol + () + (back-to-indentation) + (if (eobp) + (line-beginning-position 0) + (point))) + (fallback-eol + (beg) + (progn + (end-of-line) + (skip-chars-backward " \t\f\n" beg) + (if (eq (point) beg) + (line-beginning-position 2) + (point))))) + (if (and col (cl-plusp col)) + (let* ((beg (progn (forward-char (1- col)) + (point))) + (sexp-end (or (ignore-errors (end-of-thing 'sexp)) + (ignore-errors (end-of-thing 'symbol)))) + (end (or (and sexp-end + (not (= sexp-end beg)) + sexp-end) + (and (< (goto-char (1+ beg)) (point-max)) + (point))))) + (if end + (cons beg end) + (cons (setq beg (fallback-bol)) + (fallback-eol beg)))) + (let* ((beg (fallback-bol)) + (end (fallback-eol beg))) + (cons beg end)))))))) (error (flymake-log :warning "Invalid region line=%s col=%s" line col) nil))) -- 2.39.2