branch: master commit 08e2981a2a8a2fe816194f1e9ea5021c92c7b754 Author: Jackson Ray Hamilton <jack...@jacksonrayhamilton.com> Commit: Jackson Ray Hamilton <jack...@jacksonrayhamilton.com>
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 ()