aboutsummaryrefslogtreecommitdiff
path: root/tests/test-flyspell-and-abbrev.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-flyspell-and-abbrev.el')
-rw-r--r--tests/test-flyspell-and-abbrev.el40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/test-flyspell-and-abbrev.el b/tests/test-flyspell-and-abbrev.el
index ef8cc637..b4be6ab3 100644
--- a/tests/test-flyspell-and-abbrev.el
+++ b/tests/test-flyspell-and-abbrev.el
@@ -17,6 +17,7 @@
(require 'ert)
(require 'cl-lib)
+(require 'user-constants) ;; org-dir, read by the ispell :config below
(require 'flyspell)
(require 'flyspell-and-abbrev)
@@ -27,6 +28,23 @@
(overlay-put o 'face 'flyspell-incorrect)
o))
+;; ------------------------- org src-block skip entry ---------------------------
+
+(ert-deftest test-flyspell-ispell-skip-entry-matches-src-block-lines ()
+ "Normal: the ispell skip entry matches real org src-block delimiters.
+The old entry used \"#+\" (one-or-more #), which matches no real
+begin_src line, so ispell spell-checked inside every org code block."
+ (require 'ispell)
+ (let ((entry (seq-find (lambda (e)
+ (and (consp e) (stringp (car e))
+ (string-match-p "BEGIN_SRC" (car e))))
+ ispell-skip-region-alist)))
+ (should entry)
+ (let ((case-fold-search t))
+ (should (string-match-p (car entry) "#+BEGIN_SRC emacs-lisp"))
+ (should (string-match-p (car entry) "#+begin_src python"))
+ (should (string-match-p (cdr entry) "#+end_src")))))
+
;; ------------------------ cj/--require-spell-checker -------------------------
(ert-deftest test-flyspell-require-spell-checker-present ()
@@ -97,5 +115,27 @@
(cj/flyspell-on-for-buffer-type)))
(should mode-called)))
+;; --------------------------- cj/flyspell-then-abbrev -------------------------
+
+(ert-deftest test-flyspell-then-abbrev-enables-mode-not-bare-rescan ()
+ "Regression: cj/flyspell-then-abbrev routes the initial scan through
+cj/flyspell-on-for-buffer-type, which enables flyspell-mode so it sticks.
+The bare flyspell-buffer it replaced never turned the mode on, so the guard
+never tripped and every C-' press re-scanned the whole buffer (O(buffer) per
+keypress in large files)."
+ (let (on-called scan-called)
+ (cl-letf (((symbol-function 'cj/--require-spell-checker) #'ignore)
+ ((symbol-function 'cj/flyspell-on-for-buffer-type)
+ (lambda () (setq on-called t)))
+ ((symbol-function 'flyspell-buffer)
+ (lambda (&rest _) (setq scan-called t)))
+ ((symbol-function 'cj/flyspell-goto-previous-misspelling)
+ (lambda (&rest _) nil)))
+ (with-temp-buffer
+ (text-mode)
+ (cj/flyspell-then-abbrev nil)))
+ (should on-called)
+ (should-not scan-called)))
+
(provide 'test-flyspell-and-abbrev)
;;; test-flyspell-and-abbrev.el ends here