[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-26 e286b33: Fix more flymake-diag-region eob corner
From: |
João Távora |
Subject: |
[Emacs-diffs] emacs-26 e286b33: Fix more flymake-diag-region eob corner cases and add tests (bug#29201) |
Date: |
Sat, 11 Nov 2017 18:52:53 -0500 (EST) |
branch: emacs-26
commit e286b3381fa1be64174832560da963b1c0191640
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>
Fix more flymake-diag-region eob corner cases and add tests (bug#29201)
* lisp/progmodes/flymake.el (flymake-diag-region): Correct
more eob corner cases.
* test/lisp/progmodes/flymake-tests.el
(eob-region-and-trailing-newline): New test.
---
lisp/progmodes/flymake.el | 16 ++++++++++------
test/lisp/progmodes/flymake-tests.el | 32 ++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 6 deletions(-)
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index b4ab7f2..241ea00 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -318,7 +318,11 @@ region is invalid."
(goto-char (point-min))
(forward-line (1- line))
(cl-flet ((fallback-bol
- () (progn (back-to-indentation) (point)))
+ ()
+ (back-to-indentation)
+ (if (eobp)
+ (line-beginning-position 0)
+ (point)))
(fallback-eol
(beg)
(progn
@@ -335,11 +339,11 @@ region is invalid."
(not (= sexp-end beg))
sexp-end)
(and (< (goto-char (1+ beg)) (point-max))
- (point))))
- (safe-end (or end
- (fallback-eol beg))))
- (cons (if end beg (fallback-bol))
- safe-end))
+ (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)))))))
diff --git a/test/lisp/progmodes/flymake-tests.el
b/test/lisp/progmodes/flymake-tests.el
index 05214e7..bc194b6 100644
--- a/test/lisp/progmodes/flymake-tests.el
+++ b/test/lisp/progmodes/flymake-tests.el
@@ -333,6 +333,38 @@ SEVERITY-PREDICATE is used to setup
(should-error (flymake-goto-prev-error nil nil t))
)))))
+(ert-deftest eob-region-and-trailing-newline ()
+ "`flymake-diag-region' at eob with varying trailing newlines."
+ (cl-flet ((diag-region-substring
+ (line col)
+ (pcase-let
+ ((`(,a . ,b) (flymake-diag-region (current-buffer) line
col)))
+ (buffer-substring a b))))
+ (with-temp-buffer
+ (insert "beg\nmmm\nend")
+ (should (equal
+ (diag-region-substring 3 3)
+ "d"))
+ (should (equal
+ (diag-region-substring 3 nil)
+ "end"))
+ (insert "\n")
+ (should (equal
+ (diag-region-substring 4 1)
+ "end"))
+ (should (equal
+ (diag-region-substring 4 nil)
+ "end"))
+ (insert "\n")
+ (should (equal
+ (diag-region-substring 5 1)
+ "\n"))
+ (should (equal
+ (diag-region-substring 5 nil)
+ "\n")))))
+
+
+
(provide 'flymake-tests)
;;; flymake.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-26 e286b33: Fix more flymake-diag-region eob corner cases and add tests (bug#29201),
João Távora <=