branch: master
commit 08e2981a2a8a2fe816194f1e9ea5021c92c7b754
Author: Jackson Ray Hamilton <[email protected]>
Commit: Jackson Ray Hamilton <[email protected]>
Swallow scan errors.
---
context-coloring.el | 44 +++++++++++++++++--------------
test/context-coloring-test.el | 6 ++++
test/fixtures/unbalanced-parenthesis.el | 2 +
3 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/context-coloring.el b/context-coloring.el
index b57cfb3..d296f0d 100644
--- a/context-coloring.el
+++ b/context-coloring.el
@@ -948,26 +948,30 @@ scopes and variables."
(interactive)
(with-silent-modifications
(save-excursion
- (cond
- ;; Just colorize the changed region.
- (context-coloring-changed-p
- (let* (;; Prevent `beginning-of-defun' from making poor assumptions.
- (open-paren-in-column-0-is-defun-start nil)
- ;; Seek the beginning and end of the previous and next offscreen
- ;; defuns, so just enough is colored.
- (start (progn (goto-char context-coloring-changed-start)
- (while (and (< (point-min) (point))
- (pos-visible-in-window-p))
- (beginning-of-defun))
- (point)))
- (end (progn (goto-char context-coloring-changed-end)
- (while (and (> (point-max) (point))
- (pos-visible-in-window-p))
- (end-of-defun))
- (point))))
- (context-coloring-elisp-colorize-region-initially start end)))
- (t
- (context-coloring-elisp-colorize-region-initially (point-min)
(point-max)))))))
+ (condition-case nil
+ (cond
+ ;; Just colorize the changed region.
+ (context-coloring-changed-p
+ (let* (;; Prevent `beginning-of-defun' from making poor
assumptions.
+ (open-paren-in-column-0-is-defun-start nil)
+ ;; Seek the beginning and end of the previous and next
+ ;; offscreen defuns, so just enough is colored.
+ (start (progn (goto-char context-coloring-changed-start)
+ (while (and (< (point-min) (point))
+ (pos-visible-in-window-p))
+ (beginning-of-defun))
+ (point)))
+ (end (progn (goto-char context-coloring-changed-end)
+ (while (and (> (point-max) (point))
+ (pos-visible-in-window-p))
+ (end-of-defun))
+ (point))))
+ (context-coloring-elisp-colorize-region-initially start end)))
+ (t
+ (context-coloring-elisp-colorize-region-initially (point-min)
(point-max))))
+ ;; Scan errors can happen virtually anywhere if parenthesis are
+ ;; unbalanced. Just swallow them. (`progn' for test coverage.)
+ (scan-error (progn))))))
;;; Shell command scopification / colorization
diff --git a/test/context-coloring-test.el b/test/context-coloring-test.el
index deb40fb..95a081d 100644
--- a/test/context-coloring-test.el
+++ b/test/context-coloring-test.el
@@ -1245,6 +1245,12 @@ nnnn n nnn nnnnnnnn
0000
nnnnn n nnn nnnnnnnn")))
+(context-coloring-test-deftest-emacs-lisp unbalanced-parenthesis
+ (lambda ()
+ (context-coloring-test-assert-coloring "
+1111 111
+nnnn nn")))
+
(provide 'context-coloring-test)
;;; context-coloring-test.el ends here
diff --git a/test/fixtures/unbalanced-parenthesis.el
b/test/fixtures/unbalanced-parenthesis.el
new file mode 100644
index 0000000..caaf7e2
--- /dev/null
+++ b/test/fixtures/unbalanced-parenthesis.el
@@ -0,0 +1,2 @@
+(let ())
+(let ()