]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix defining inverse abbrevs on previous words (Bug#36243)
authorAllen Li <darkfeline@felesatra.moe>
Sun, 16 Jun 2019 10:32:02 +0000 (03:32 -0700)
committerNoam Postavsky <npostavs@gmail.com>
Sat, 22 Jun 2019 23:25:44 +0000 (19:25 -0400)
* lisp/abbrev.el (inverse-add-abbrev): Skip trailing nonword
characters when defining abbrev.

* test/lisp/abbrev-tests.el (abbrev-edit-save-to-file-test): Add
regression tests.

lisp/abbrev.el
test/lisp/abbrev-tests.el

index 3c88ec661a914bf845ae92dafd7fbb1258eec2d9..3d0a843e375a1527dfddfef81713800396e78fb4 100644 (file)
@@ -352,6 +352,7 @@ Expands the abbreviation after defining it."
   (let (name exp start end)
     (save-excursion
       (forward-word (1+ (- arg)))
+      (skip-syntax-backward "^w")
       (setq end (point))
       (backward-word 1)
       (setq start (point)
index 3b8acf5519af8abef8ab9ca37e6e8bf00b83edcc..2750e9a6263d82ec1d3ff3b0d1757b72fadc30d2 100644 (file)
                      (abbrev-expansion "s-a-t" ert-save-test-table)))
       (delete-file temp-test-file))))
 
+(ert-deftest inverse-add-abbrev-skips-trailing-nonword ()
+  "Test that adding an inverse abbrev skips trailing nonword characters."
+  (let ((table (make-abbrev-table)))
+    (with-temp-buffer
+      (insert "some text foo ")
+      (cl-letf (((symbol-function 'read-string) (lambda (&rest _) "bar")))
+        (inverse-add-abbrev table "Global" 1)))
+    (should (string= (abbrev-expansion "foo" table) "bar"))))
+
+(ert-deftest inverse-add-abbrev-skips-trailing-nonword/postiive-arg ()
+  "Test that adding an inverse abbrev skips trailing nonword characters."
+  (let ((table (make-abbrev-table)))
+    (with-temp-buffer
+      (insert "some text foo ")
+      (cl-letf (((symbol-function 'read-string) (lambda (&rest _) "bar")))
+        (inverse-add-abbrev table "Global" 2)))
+    (should (string= (abbrev-expansion "text" table) "bar"))))
+
+(ert-deftest inverse-add-abbrev-skips-trailing-nonword/negative-arg ()
+  "Test that adding an inverse abbrev skips trailing nonword characters."
+  (let ((table (make-abbrev-table)))
+    (with-temp-buffer
+      (insert "some     text foo")
+      (goto-char (point-min))
+      (cl-letf (((symbol-function 'read-string) (lambda (&rest _) "bar")))
+        (inverse-add-abbrev table "Global" -1)))
+    (should (string= (abbrev-expansion "text" table) "bar"))))
+
 (provide 'abbrev-tests)
 
 ;;; abbrev-tests.el ends here