]> git.eshelyaron.com Git - emacs.git/commitdiff
Use lexical-binding in elide-head.el and add tests
authorSimen Heggestøyl <simenheg@gmail.com>
Sun, 19 Apr 2020 06:03:21 +0000 (08:03 +0200)
committerSimen Heggestøyl <simenheg@gmail.com>
Sun, 19 Apr 2020 06:04:57 +0000 (08:04 +0200)
* lisp/elide-head.el: Use lexical-binding.
(elide-head-headers-to-hide): Remove redundant :group arg.
(elide-head-overlay): Use `defvar-local'.
(elide-head-show): Fix docstring.

* test/lisp/elide-head-tests.el: New file with tests for
elide-head.el.

lisp/elide-head.el
test/lisp/elide-head-tests.el [new file with mode: 0644]

index 2c42a191e0a5527cc80e376b2af12d4e02c8fb72..a892754d723da665ce677fcf9628b2af2b3349e3 100644 (file)
@@ -1,4 +1,4 @@
-;;; elide-head.el --- hide headers in files
+;;; elide-head.el --- hide headers in files  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1999, 2001-2020 Free Software Foundation, Inc.
 
@@ -63,12 +63,10 @@ The cars of elements of the list are searched for in order.  Text is
 elided with an invisible overlay from the end of the line where the
 first match is found to the end of the match for the corresponding
 cdr."
-  :group 'elide-head
   :type '(alist :key-type  (regexp :tag "Start regexp")
                :value-type (regexp :tag "End regexp")))
 
-(defvar elide-head-overlay nil)
-(make-variable-buffer-local 'elide-head-overlay)
+(defvar-local elide-head-overlay nil)
 
 ;;;###autoload
 (defun elide-head (&optional arg)
@@ -108,7 +106,7 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks."
            (overlay-put elide-head-overlay 'after-string "...")))))))
 
 (defun elide-head-show ()
-  "Show a header elided current buffer by \\[elide-head]."
+  "Show a header in the current buffer elided by \\[elide-head]."
   (interactive)
   (if (and (overlayp elide-head-overlay)
           (overlay-buffer elide-head-overlay))
diff --git a/test/lisp/elide-head-tests.el b/test/lisp/elide-head-tests.el
new file mode 100644 (file)
index 0000000..c9ef26a
--- /dev/null
@@ -0,0 +1,62 @@
+;;; elide-head-tests.el --- Tests for elide-head.el  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2020 Free Software Foundation, Inc.
+
+;; Author: Simen Heggestøyl <simenheg@gmail.com>
+;; Keywords:
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(require 'elide-head)
+(require 'ert)
+
+(ert-deftest elide-head-tests-elide-head ()
+  (let ((elide-head-headers-to-hide '(("START" . "END"))))
+    (with-temp-buffer
+      (insert "foo\nSTART\nHIDDEN\nEND\nbar")
+      (elide-head)
+      (let ((o (car (overlays-at 14))))
+        (should (= (overlay-start o) 10))
+        (should (= (overlay-end o) 21))
+        (should (overlay-get o 'invisible))
+        (should (overlay-get o 'evaporate))))))
+
+(ert-deftest elide-head-tests-elide-head-with-prefix-arg ()
+  (let ((elide-head-headers-to-hide '(("START" . "END"))))
+    (with-temp-buffer
+      (insert "foo\nSTART\nHIDDEN\nEND\nbar")
+      (elide-head)
+      (should (overlays-at 14))
+      (elide-head t)
+      (should-not (overlays-at 14)))))
+
+(ert-deftest elide-head-tests-show ()
+  (let ((elide-head-headers-to-hide '(("START" . "END"))))
+    (with-temp-buffer
+      (insert "foo\nSTART\nHIDDEN\nEND\nbar")
+      (elide-head)
+      (should (overlays-at 14))
+      (elide-head-show)
+      (should-not (overlays-at 14)))))
+
+(provide 'elide-head-tests)
+;;; elide-head-tests.el ends here