From: Simen Heggestøyl Date: Sun, 19 Apr 2020 06:03:21 +0000 (+0200) Subject: Use lexical-binding in elide-head.el and add tests X-Git-Tag: emacs-28.0.90~7543 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=65990f47ccd6f1a3558910d71701a6f029c35433;p=emacs.git Use lexical-binding in elide-head.el and add tests * 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. --- diff --git a/lisp/elide-head.el b/lisp/elide-head.el index 2c42a191e0a..a892754d723 100644 --- a/lisp/elide-head.el +++ b/lisp/elide-head.el @@ -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 index 00000000000..c9ef26a8181 --- /dev/null +++ b/test/lisp/elide-head-tests.el @@ -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 +;; 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 . + +;;; 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