emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master d3aac3b: Use lexical-binding in lpr.el and add rudimentary tests


From: Stefan Kangas
Subject: master d3aac3b: Use lexical-binding in lpr.el and add rudimentary tests
Date: Tue, 30 Mar 2021 17:16:03 -0400 (EDT)

branch: master
commit d3aac3b34cc730b8a30ede34b0c77864f8f5a4b5
Author: Stefan Kangas <stefan@marxist.se>
Commit: Stefan Kangas <stefan@marxist.se>

    Use lexical-binding in lpr.el and add rudimentary tests
    
    * lisp/lpr.el: Use lexical-binding.  Remove redundant :group args.
    (print-region-function): Declare MS-Windows specific function.
    * test/lisp/lpr-tests.el: New file.
---
 lisp/lpr.el            | 39 +++++++++++++++------------------------
 test/lisp/lpr-tests.el | 41 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+), 24 deletions(-)

diff --git a/lisp/lpr.el b/lisp/lpr.el
index 012d251..29a0fd8 100644
--- a/lisp/lpr.el
+++ b/lisp/lpr.el
@@ -1,4 +1,4 @@
-;;; lpr.el --- print Emacs buffer on line printer
+;;; lpr.el --- print Emacs buffer on line printer  -*- lexical-binding: t -*-
 
 ;; Copyright (C) 1985, 1988, 1992, 1994, 2001-2021 Free Software
 ;; Foundation, Inc.
@@ -39,12 +39,10 @@
   (memq system-type '(usg-unix-v hpux))
   "Non-nil if running on a system type that uses the \"lp\" command.")
 
-
 (defgroup lpr nil
   "Print Emacs buffer on line printer."
   :group 'text)
 
-
 ;;;###autoload
 (defcustom printer-name
   (and (eq system-type 'ms-dos) "PRN")
@@ -65,8 +63,7 @@ file.  If you want to discard the printed output, set this to 
\"NUL\"."
                 :tag "Printer Name"
                 (const :tag "Default" nil)
                 ;; could use string but then we lose completion for files.
-                (file :tag "Name"))
-  :group 'lpr)
+                 (file :tag "Name")))
 
 ;;;###autoload
 (defcustom lpr-switches nil
@@ -74,16 +71,14 @@ file.  If you want to discard the printed output, set this 
to \"NUL\"."
 It is recommended to set `printer-name' instead of including an explicit
 switch on this list.
 See `lpr-command'."
-  :type '(repeat (string :tag "Argument"))
-  :group 'lpr)
+  :type '(repeat (string :tag "Argument")))
 
 (defcustom lpr-add-switches (memq system-type '(berkeley-unix gnu/linux))
   "Non-nil means construct `-T' and `-J' options for the printer program.
 These are made assuming that the program is `lpr';
 if you are using some other incompatible printer program,
 this variable should be nil."
-  :type 'boolean
-  :group 'lpr)
+  :type 'boolean)
 
 (defcustom lpr-printer-switch
   (if lpr-lp-system
@@ -94,8 +89,7 @@ This switch is used in conjunction with `printer-name'."
   :type '(choice :menu-tag "Printer Name Switch"
                 :tag "Printer Name Switch"
                 (const :tag "None" nil)
-                (string :tag "Printer Switch"))
-  :group 'lpr)
+                 (string :tag "Printer Switch")))
 
 ;;;###autoload
 (defcustom lpr-command
@@ -116,8 +110,7 @@ Windows NT and Novell Netware respectively) are handled 
specially, using
 `printer-name' as the destination for output; any other program is
 treated like `lpr' except that an explicit filename is given as the last
 argument."
-  :type 'string
-  :group 'lpr)
+  :type 'string)
 
 ;; Default is nil, because that enables us to use pr -f
 ;; which is more reliable than pr with no args, which is what lpr -p does.
@@ -127,22 +120,21 @@ If nil, we run `lpr-page-header-program' to make page 
headings
 and print the result."
   :type '(choice (const nil)
                 (string :tag "Single argument")
-                (repeat :tag "Multiple arguments" (string :tag "Argument")))
-  :group 'lpr)
+                 (repeat :tag "Multiple arguments" (string :tag "Argument"))))
 
 (defcustom print-region-function
   (if (memq system-type '(ms-dos windows-nt))
-      #'w32-direct-print-region-function
+      (progn
+        (declare-function w32-direct-print-region-function "w32-fns")
+        #'w32-direct-print-region-function)
     #'call-process-region)
   "Function to call to print the region on a printer.
 See definition of `print-region-1' for calling conventions."
-  :type 'function
-  :group 'lpr)
+  :type 'function)
 
 (defcustom lpr-page-header-program "pr"
   "Name of program for adding page headers to a file."
-  :type 'string
-  :group 'lpr)
+  :type 'string)
 
 ;; Berkeley systems support -F, and GNU pr supports both -f and -F,
 ;; So it looks like -F is a better default.
@@ -151,8 +143,7 @@ See definition of `print-region-1' for calling conventions."
 If `%s' appears in any of the strings, it is substituted by the page title.
 Note that for correct quoting, `%s' should normally be a separate element.
 The variable `lpr-page-header-program' specifies the program to use."
-  :type '(repeat string)
-  :group 'lpr)
+  :type '(repeat string))
 
 ;;;###autoload
 (defun lpr-buffer ()
@@ -248,7 +239,7 @@ for further customization of the printer command."
              nil
            ;; Run a separate program to get page headers.
            (let ((new-coords (print-region-new-buffer start end)))
-             (apply 'call-process-region (car new-coords) (cdr new-coords)
+              (apply #'call-process-region (car new-coords) (cdr new-coords)
                     lpr-page-header-program t t nil
                     (mapcar (lambda (e) (format e name))
                             lpr-page-header-switches)))
@@ -270,7 +261,7 @@ for further customization of the printer command."
       (let ((retval
              (let ((tempbuf (current-buffer)))
                (with-current-buffer buf
-                 (apply (or print-region-function 'call-process-region)
+                 (apply (or print-region-function #'call-process-region)
                         start end lpr-command
                         nil tempbuf nil
                         (nconc (and name lpr-add-switches
diff --git a/test/lisp/lpr-tests.el b/test/lisp/lpr-tests.el
new file mode 100644
index 0000000..bc31982
--- /dev/null
+++ b/test/lisp/lpr-tests.el
@@ -0,0 +1,41 @@
+;;; lpr-tests.el --- Tests for lpr.el  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2021 Free Software Foundation, Inc.
+
+;; 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 'ert)
+(require 'lpr)
+
+(ert-deftest lpr-test-printify-region ()
+  (with-temp-buffer
+    (insert "foo\^@-\^h\^k\^n-\^_\177bar")
+    (printify-region (point-min) (point-max))
+    (should (equal (buffer-string) "foo\\^@-\\^H\\^K\\^N-\\^_\\7fbar"))))
+
+(ert-deftest lpr-test-lpr-eval-switch ()
+  (should (equal (lpr-eval-switch "foo") "foo"))
+  (should (equal (lpr-eval-switch (lambda () "foo")) "foo"))
+  (let ((v "foo"))
+    (should (equal (lpr-eval-switch v) "foo")))
+  (should (equal (lpr-eval-switch (list #'identity "foo")) "foo"))
+  (should (equal (lpr-eval-switch 1) nil)))
+
+;;; lpr-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]