emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/chess 324ff9d: Enable lexical scoping


From: Stefan Monnier
Subject: [elpa] externals/chess 324ff9d: Enable lexical scoping
Date: Sat, 17 Oct 2020 14:55:27 -0400 (EDT)

branch: externals/chess
commit 324ff9d1a095b2768f8566e765cbd778544ad3e6
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    Enable lexical scoping
    
    Set lexical-binding is all files.  Fix corresponding warnings.
    Remove redundant :group args.
    
    * chess-common.el (chess-with-temp-file): Use `declare`.
    
    * chess-display.el (chess-display-kill-board, chess-display-yank-board):
    obey the user's wishes w.r.t `x-select-enable-clipboard`.
    Merge code common to two `if` branches.
    (event-point): Don't define.
    (chess-display-mouse-set-piece): Test `xemacs` feature.
    
    * chess-game.el (chess-game-move): Move let-binding to inside the
    `cl-assert` so it doesn't signal a warning when the assert is removed.
    
    * chess-ics.el (chess-ics-matcher-alist, chess-ics): Don't use `setq` on
    `comint-preoutput-filter-functions`.
    (comint-preoutput-filter-functions): Don't force it to buffer-local.
    
    * chess-module.el (chess-with-current-buffer): Use `declare`.
    
    * chess-pgn.el (chess-pgn-mouse-show-position): Test `xemacs` feature.
    
    * chess-plain.el (chess-plain-draw): Use \s instead of a SPC char.
    
    * chess-ply.el (chess-ply): Define as a type.
    
    * chess-uci.el, chess-sjeng.el: Require `chess`.
    
    * chess.el (font-lock-add-keywords): Don't highlight
    `chess-with-current-buffer` specially since it's already done by
    default nowadays.
---
 chess-ai.el        | 16 +++-----------
 chess-algebraic.el |  6 +++---
 chess-announce.el  |  4 ++--
 chess-autosave.el  | 14 ++++++------
 chess-chat.el      |  4 ++--
 chess-clock.el     |  4 ++--
 chess-common.el    |  9 ++++----
 chess-crafty.el    | 11 +++++-----
 chess-database.el  | 15 ++++++-------
 chess-display.el   | 62 ++++++++++++++++++++++--------------------------------
 chess-eco.el       |  9 ++++----
 chess-engine.el    |  6 +++---
 chess-epd.el       |  4 ++--
 chess-fen.el       |  4 ++--
 chess-file.el      |  6 +++---
 chess-fruit.el     | 11 +++++-----
 chess-game.el      |  7 +++---
 chess-german.el    |  4 ++--
 chess-glaurung.el  | 11 +++++-----
 chess-gnuchess.el  | 11 +++++-----
 chess-ics.el       | 40 +++++++++++++++--------------------
 chess-ics1.el      | 27 ++++++++++--------------
 chess-images.el    | 57 +++++++++++++++++++------------------------------
 chess-input.el     |  5 ++---
 chess-irc.el       | 16 ++++++--------
 chess-kibitz.el    |  4 ++--
 chess-link.el      | 11 +++++-----
 chess-log.el       |  6 +++---
 chess-message.el   | 13 ++++++------
 chess-module.el    | 16 +++++++-------
 chess-network.el   |  4 ++--
 chess-none.el      |  4 ++--
 chess-perft.el     |  2 +-
 chess-pgn.el       | 18 ++++++++--------
 chess-phalanx.el   |  9 ++++----
 chess-plain.el     | 35 +++++++++++-------------------
 chess-ply.el       |  9 ++++----
 chess-polyglot.el  |  6 ++----
 chess-pos.el       |  2 +-
 chess-puzzle.el    | 11 +++++-----
 chess-random.el    |  4 ++--
 chess-scid.el      |  4 ++--
 chess-sjeng.el     | 12 +++++------
 chess-sound.el     | 27 ++++++++++--------------
 chess-stockfish.el | 11 +++++-----
 chess-test.el      |  4 ++--
 chess-transport.el |  6 +++---
 chess-tutorial.el  |  6 +++---
 chess-ucb.el       |  9 ++++----
 chess-uci.el       |  5 +++--
 chess-var.el       |  4 ++--
 chess.el           | 23 ++++++++------------
 52 files changed, 273 insertions(+), 355 deletions(-)

diff --git a/chess-ai.el b/chess-ai.el
index 75e5047..dc1e0df 100644
--- a/chess-ai.el
+++ b/chess-ai.el
@@ -1,6 +1,6 @@
-;;; chess-ai.el --- A native Emacs Lisp Chess playing module
+;;; chess-ai.el --- A native Emacs Lisp Chess playing module  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020  Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 
@@ -50,52 +50,42 @@ reply moves.  You can only specify the search depth (see 
`chess-ai-depth')."
 
 If `chess-ai-quiescence' is non-nil, quiescence search will be performed after
 this ply depth limit has been reached."
-  :group 'chess-ai
   :type 'integer)
 
 (defcustom chess-ai-quiescence-depth 2
   "Search depth for quiescence search."
-  :group 'chess-ai
   :type 'integer)
 
 (defcustom chess-ai-pawn-value 100
   "Value of a Pawn."
-  :group 'chess-ai
   :type 'integer)
 
 (defcustom chess-ai-knight-value 300
   "Value of a Knight."
-  :group 'chess-ai
   :type 'integer)
 
 (defcustom chess-ai-bishop-value 300
   "Value of a Bishop."
-  :group 'chess-ai
   :type 'integer)
 
 (defcustom chess-ai-rook-value 500
   "Value of a Rook."
-  :group 'chess-ai
   :type 'intger)
 
 (defcustom chess-ai-queen-value 900
   "Value of a Queen."
-  :group 'chess-ai
   :type 'integer)
 
 (defcustom chess-ai-passed-pawn 50
   "Extra score for a passed Pawn."
-  :group 'chess-ai
   :type 'integer)
 
 (defcustom chess-ai-mobility t
   "Non-nil if piece mobility should be considered during static evaluation."
-  :group 'chess-ai
   :type 'boolean)
 
 (defcustom chess-ai-quiescence t
   "Non-nil if quiescence search should be performed."
-  :group 'chess-ai
   :type 'boolean)
 
 ;;;; Static evaluation
@@ -335,7 +325,7 @@ DEPTH defaults to the value of `chess-ai-depth'."
                                                     position))
                       (chess-ai-best-move position))))))
 
-     (t (apply 'chess-common-handler game event args)))))
+     (t (apply #'chess-common-handler game event args)))))
 
 (provide 'chess-ai)
 ;;; chess-ai.el ends here
diff --git a/chess-algebraic.el b/chess-algebraic.el
index 3a07310..8db57a8 100644
--- a/chess-algebraic.el
+++ b/chess-algebraic.el
@@ -1,6 +1,6 @@
-;;; chess-algebraic.el --- Convert a ply to/from standard chess algebraic 
notation
+;;; chess-algebraic.el --- Convert a ply to/from standard chess algebraic 
notation  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2008, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -171,7 +171,7 @@ This regexp matches short, long and figurine notation.")
            (nconc changes (list type move)))
 
          (condition-case err
-             (apply 'chess-ply-create position trust changes)
+             (apply #'chess-ply-create position trust changes)
            (error
             (chess-error 'at-move-string
                          move (error-message-string err)))))))))
diff --git a/chess-announce.el b/chess-announce.el
index 36803f8..3d6ef3b 100644
--- a/chess-announce.el
+++ b/chess-announce.el
@@ -1,6 +1,6 @@
-;;; chess-announce.el --- Scheme to verbally announce chess moves
+;;; chess-announce.el --- Scheme to verbally announce chess moves  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
diff --git a/chess-autosave.el b/chess-autosave.el
index aa8661f..f41cbfc 100644
--- a/chess-autosave.el
+++ b/chess-autosave.el
@@ -1,6 +1,6 @@
-;;; chess-autosave.el --- A special kind of display that merely autosaves the 
game
+;;; chess-autosave.el --- A special kind of display that merely autosaves the 
game  -*- lexical-binding: t; -*-
 ;;
-;; Copyright (C) 2002, 2004, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -32,8 +32,7 @@
 
 (defcustom chess-autosave-file "~/.chess-save"
   "Filename in which to autosave chess games."
-  :type '(choice file (const :tag "Do not auto-save" nil))
-  :group 'chess-autosave)
+  :type '(choice file (const :tag "Do not auto-save" nil)))
 
 (defcustom chess-autosave-database nil
   "If non-nil, a chess database file in which completed games are appended.
@@ -42,8 +41,7 @@ work of saving the game object to whichever database(s) it 
chooses.
 Whether it closes those databases or caches them for later use is up
 to the user."
   :type '(choice (const :tag "Do not save completed games" nil)
-                file function)
-  :group 'chess-autosave)
+                file function))
 
 (chess-message-catalog 'english
   '((chess-read-autosave    . "There is a chess autosave file, read it? ")
@@ -115,7 +113,7 @@ to the user."
        (setq changes (cdr changes)))))
   (insert ")"))
 
-(defun chess-autosave-write (game file)
+(defun chess-autosave-write (game _file)
   "Write a chess GAME to FILE as raw Lisp." ;FIXME: `file' is not used!
   (let ((index (chess-game-index game)))
     (if (or (= 1 index) (and (bobp) (eobp)))
@@ -135,7 +133,7 @@ to the user."
     (basic-save-buffer)
     (message nil)))
 
-(defun chess-autosave-read (game file)
+(defun chess-autosave-read (game _file)
   "Read a chess game as raw Lisp from FILE." ;FIXME: `file' is not used!
   (goto-char (point-min))
   (chess-game-set-tags game (read (current-buffer)))
diff --git a/chess-chat.el b/chess-chat.el
index 7dec279..d2489e0 100644
--- a/chess-chat.el
+++ b/chess-chat.el
@@ -1,6 +1,6 @@
-;;; chess-chat.el --- Very much like kibitzing, but not saved.
+;;; chess-chat.el --- Very much like kibitzing, but not saved.  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
diff --git a/chess-clock.el b/chess-clock.el
index c7b4d95..2fe7167 100644
--- a/chess-clock.el
+++ b/chess-clock.el
@@ -1,6 +1,6 @@
-;;; chess-clock.el --- Implements a chess clock
+;;; chess-clock.el --- Implements a chess clock  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
diff --git a/chess-common.el b/chess-common.el
index a574288..3e1dd35 100644
--- a/chess-common.el
+++ b/chess-common.el
@@ -1,6 +1,6 @@
-;;; chess-common.el --- Handler functions common to xboard based engine 
protocols
+;;; chess-common.el --- Handler functions common to xboard based engine 
protocols  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -40,14 +40,13 @@
 (make-variable-buffer-local 'chess-common-temp-files)
 
 (defmacro chess-with-temp-file (&rest body)
+  (declare (indent 1) (debug t))
   `(let ((file (make-temp-file "chess")))
      (with-temp-file file
        ,@body)
      (push file chess-common-temp-files)
      file))
 
-(put 'chess-with-temp-file 'lisp-indent-function 1)
-
 (chess-message-catalog 'english
   '((starting-engine      . "Starting chess program '%s'...")
     (starting-engine-done  . "Starting chess program '%s'...done")
@@ -106,7 +105,7 @@
     (chess-error 'not-yet-implemented))
 
    ((eq event 'undo)
-    (dotimes (i (car args))
+    (dotimes (_ (car args))
       (chess-engine-send nil "undo\n"))
     (if (= 1 (mod (car args) 2))
        (chess-engine-send nil "go\n"))
diff --git a/chess-crafty.el b/chess-crafty.el
index 3335f8e..052dd7a 100644
--- a/chess-crafty.el
+++ b/chess-crafty.el
@@ -1,6 +1,6 @@
-;;; chess-crafty.el --- Play against crafty!
+;;; chess-crafty.el --- Play against crafty!  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -33,9 +33,8 @@
 
 (defcustom chess-crafty-path (or (executable-find "crafty")
                                 (executable-find "wcrafty"))
-  "*The path to the crafty executable."
-  :type 'file
-  :group 'chess-crafty)
+  "The path to the crafty executable."
+  :type 'file)
 
 (defvar chess-crafty-evaluation nil)
 
@@ -176,7 +175,7 @@
               (= 1 (mod (car args) 2)))
          (error "Cannot undo until after crafty moves"))
 
-      (apply 'chess-common-handler game event args)))))
+      (apply #'chess-common-handler game event args)))))
 
 (provide 'chess-crafty)
 
diff --git a/chess-database.el b/chess-database.el
index 0e29593..3a9748b 100644
--- a/chess-database.el
+++ b/chess-database.el
@@ -1,6 +1,6 @@
-;;; chess-database.el --- Basic code for manipulating game databases
+;;; chess-database.el --- Basic code for manipulating game databases  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2008  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -29,8 +29,7 @@
 
 (defcustom chess-database-modules '(chess-scid chess-file)
   "List of database modules to try when `chess-database-open' is called."
-  :type '(repeat (symbol :tag "Module"))
-  :group 'chess-database)
+  :type '(repeat (symbol :tag "Module")))
 
 (defvar chess-database-handler nil)
 
@@ -50,8 +49,8 @@
        (when buffer
          (with-current-buffer buffer
            (setq chess-database-handler handler)
-           (add-hook 'kill-buffer-hook 'chess-database-close nil t)
-           (add-hook 'after-revert-hook 'chess-database-rescan nil t)
+           (add-hook 'kill-buffer-hook #'chess-database-close nil t)
+           (add-hook 'after-revert-hook #'chess-database-rescan nil t)
            (current-buffer)))))))
 
 (defun chess-database-open (file &optional module)
@@ -74,7 +73,7 @@
   (let ((buf (or database (current-buffer))))
     (when (buffer-live-p buf)
       (with-current-buffer buf
-       (remove-hook 'kill-buffer-hook 'chess-database-close t))
+       (remove-hook 'kill-buffer-hook #'chess-database-close t))
       (chess-database-save buf)
       (chess-database-command buf 'close)
       (kill-buffer buf))))
@@ -111,7 +110,7 @@
 TERMS is partly dependent on the chess-database module in use.
 chess-scid:
  tree-search GAME: Perform a tree search on the last position of GAME."
-  (apply 'chess-database-command database 'query terms))
+  (apply #'chess-database-command database 'query terms))
 
 (provide 'chess-database)
 
diff --git a/chess-display.el b/chess-display.el
index 8820383..0a84912 100644
--- a/chess-display.el
+++ b/chess-display.el
@@ -1,6 +1,6 @@
-;;; chess-display.el --- Code shared by all chess displays
+;;; chess-display.el --- Code shared by all chess displays  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2005, 2008, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -40,20 +40,17 @@
 (defcustom chess-display-popup t
   "If non-nil (the default), popup displays whenever a significant event
 occurs."
-  :type 'boolean
-  :group 'chess-display)
+  :type 'boolean)
 
 (make-variable-buffer-local 'chess-display-popup)
 
 (defcustom chess-display-highlight-legal t
   "If non-nil, highlight legal target squares when a piece is selected."
-  :type 'boolean
-  :group 'chess-display)
+  :type 'boolean)
 
 (defcustom chess-display-highlight-last-move nil
   "If non-nil, highlight the last move made on the game."
-  :type 'boolean
-  :group 'chess-display)
+  :type 'boolean)
 
 (chess-message-catalog 'english
   '((mode-white     . "White")
@@ -79,18 +76,15 @@ occurs."
                  (concat " " (match-string 1 date))))) ")")
   "The format of a chess display's modeline.
 See `mode-line-format' for syntax details."
-  :type 'sexp
-  :group 'chess-display)
+  :type 'sexp)
 
 (defface chess-display-black-face
   '((t (:background "Black" :foreground "White")))
-  "*The face used for the word Black in the mode-line."
-  :group 'chess-display)
+  "The face used for the word Black in the mode-line.")
 
 (defface chess-display-white-face
   '((t (:background "White" :foreground "Black")))
-  "*The face used for the word White in the mode-line."
-  :group 'chess-display)
+  "The face used for the word White in the mode-line.")
 
 ;;; Code:
 
@@ -525,16 +519,14 @@ that is supported by most displays, and is the default 
mode."
 (defcustom chess-display-interesting-events
   '(set-index)
   "Events which will cause a display refresh."
-  :type '(repeat symbol)
-  :group 'chess-display)
+  :type '(repeat symbol))
 
 (defcustom chess-display-momentous-events
   '(orient post-undo setup-game pass move resign abort)
   "Events that will refresh, and cause 'main' displays to popup.
 These are displays for which `chess-display-set-main' has been
 called."
-  :type '(repeat symbol)
-  :group 'chess-display)
+  :type '(repeat symbol))
 
 (defun chess-display-handler (game event &rest args)
   "This display module presents a standard chessboard.
@@ -706,7 +698,7 @@ The key bindings available in this mode are:
        (function
         (lambda ()
           (chess-display-position nil))))
-  (setq chess-input-move-function 'chess-display-move))
+  (setq chess-input-move-function #'chess-display-move))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
@@ -728,20 +720,21 @@ The key bindings available in this mode are:
 (defun chess-display-kill-board (&optional arg)
   "Send the current board configuration to the user."
   (interactive "P")
-  (let ((x-select-enable-clipboard t)
+  (let (;; (x-select-enable-clipboard t)  ;; It's already the default!
        (game chess-module-game))
-    (if arg
-       (kill-new (with-temp-buffer
-                   (chess-game-to-pgn game)
-                   (buffer-string)))
-      (kill-new (chess-pos-to-fen (chess-display-position nil) t)))))
+    (kill-new
+     (if arg
+        (with-temp-buffer
+          (chess-game-to-pgn game)
+          (buffer-string))
+       (chess-pos-to-fen (chess-display-position nil) t)))))
 
 (declare-function chess-pgn-to-game "chess-pgn" (&optional string))
 
 (defun chess-display-yank-board ()
   "Send the current board configuration to the user."
   (interactive)
-  (let ((x-select-enable-clipboard t)
+  (let (;; (x-select-enable-clipboard t)  ;; It's already the default!
        (display (current-buffer))
        (text (current-kill 0)))
     (with-temp-buffer
@@ -754,14 +747,12 @@ The key bindings available in this mode are:
        ((search-forward "[Event " nil t)
        (goto-char (match-beginning 0))
        (chess-game-copy-game display (chess-pgn-to-game)))
-       ((looking-at (concat chess-algebraic-regexp "$"))
-       (let ((move (buffer-string)))
-         (with-current-buffer display
-           (chess-display-manual-move move))))
        (t
-       (let ((fen (buffer-string)))
+        (let ((f (if (looking-at (concat chess-algebraic-regexp "$"))
+                     #'chess-display-manual-move #'chess-display-set-from-fen))
+              (str (buffer-string)))
          (with-current-buffer display
-           (chess-display-set-from-fen fen))))))))
+           (funcall f str))))))))
 
 (defvar chess-display-search-map
   (let ((map (copy-keymap minibuffer-local-map)))
@@ -994,7 +985,7 @@ The key bindings available in this mode are:
     (ding)))
 
 (defun chess-display-list-buffers ()
-  "List all buffders related to this display's current game."
+  "List all buffers related to this display's current game."
   (interactive)
   (let ((chess-game chess-module-game)
         (lb-command (lookup-key ctl-x-map [(control ?b)])))
@@ -1147,13 +1138,10 @@ to the end or beginning."
       (chess-display-draw-square nil index
                                 (or piece last-command-event) (point)))))
 
-(unless (fboundp 'event-window)
-  (defalias 'event-point 'ignore))
-
 (defun chess-display-mouse-set-piece (event)
   "Select the piece the user clicked on."
   (interactive "e")
-  (if (fboundp 'event-window)          ; XEmacs
+  (if (featurep 'xemacs)
       (progn
        (set-buffer (window-buffer (event-window event)))
        (and (event-point event) (goto-char (event-point event))))
diff --git a/chess-eco.el b/chess-eco.el
index 7485650..78d8aae 100644
--- a/chess-eco.el
+++ b/chess-eco.el
@@ -1,6 +1,6 @@
-;;; chess-eco.el --- Chess opening classification
+;;; chess-eco.el --- Chess opening classification  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2004, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2004-2020  Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: games
@@ -31,8 +31,7 @@
   :group 'chess)
 
 (defcustom chess-eco-max-index 36
-  "*Index at which to stop chess opening announcements."
-  :group 'chess-eco
+  "Index at which to stop chess opening announcements."
   :type 'integer)
 
 (defvar chess-eco-hash-table
@@ -69,7 +68,7 @@
                           (car entry) (cadr entry))
                  (let ((pos (chess-pos-create)))
                    (mapc (lambda (move)
-                           (apply 'chess-pos-move
+                           (apply #'chess-pos-move
                                   pos (chess-ply-changes
                                        (chess-algebraic-to-ply pos move))))
                          (split-string (car (cddr entry)) " " t))
diff --git a/chess-engine.el b/chess-engine.el
index a825a61..c3e0969 100644
--- a/chess-engine.el
+++ b/chess-engine.el
@@ -1,6 +1,6 @@
-;;; chess-engine.el --- Obtain movements and other information from an engine
+;;; chess-engine.el --- Obtain movements and other information from an engine  
-*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
@@ -310,7 +310,7 @@ If conversion fails, this function fired an 'illegal event."
                                 &rest handler-ctor-args)
   "Create a new chess engine MODULE (a symbol) associated with GAME.
 Optionally supply a new RESPONSE-HANDLER."
-  (let* ((engine (apply 'chess-module-create module game nil
+  (let* ((engine (apply #'chess-module-create module game nil
                        handler-ctor-args)))
     (when engine
       (with-current-buffer engine
diff --git a/chess-epd.el b/chess-epd.el
index 1c4a643..c956647 100644
--- a/chess-epd.el
+++ b/chess-epd.el
@@ -1,6 +1,6 @@
-;;; chess-epd.el --- Extended Position Description Format
+;;; chess-epd.el --- Extended Position Description Format  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2004  Free Software Foundation, Inc.
+;; Copyright (C) 2004-2020  Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 
diff --git a/chess-fen.el b/chess-fen.el
index 52bdf9e..675a03d 100644
--- a/chess-fen.el
+++ b/chess-fen.el
@@ -1,6 +1,6 @@
-;;; chess-fen.el --- Convert a chess position to/from FEN notation
+;;; chess-fen.el --- Convert a chess position to/from FEN notation  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
diff --git a/chess-file.el b/chess-file.el
index 95a5e9e..585ef7b 100644
--- a/chess-file.el
+++ b/chess-file.el
@@ -1,6 +1,6 @@
-;;; chess-file.el --- Handle chess databases stored in PGN or EPD files
+;;; chess-file.el --- Handle chess databases stored in PGN or EPD files  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -106,7 +106,7 @@ inbetween of individual records.")
     (goto-char (point-max))
     (while (memq (char-before) '(?  ?\t ?\n ?\r))
       (delete-char -1))
-    (apply 'insert (nth 4 (assq chess-file-type chess-file-types)))
+    (apply #'insert (nth 4 (assq chess-file-type chess-file-types)))
     (push (point) chess-file-locations)
     (funcall (nth 3 (assq chess-file-type chess-file-types)) (car args))
     (1- (chess-file-handler 'count)))
diff --git a/chess-fruit.el b/chess-fruit.el
index 4794817..01181a1 100644
--- a/chess-fruit.el
+++ b/chess-fruit.el
@@ -1,6 +1,6 @@
-;;; chess-fruit.el --- Play against fruit!
+;;; chess-fruit.el --- Play against fruit!  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020  Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: games, processes
@@ -28,9 +28,8 @@
   :link '(url-link "http://www.fruitchess.com/";))
 
 (defcustom chess-fruit-path (executable-find "fruit")
-  "*The path to the fruit executable."
-  :type 'file
-  :group 'chess-fruit)
+  "The path to the fruit executable."
+  :type 'file)
 
 (defvar chess-fruit-regexp-alist chess-uci-regexp-alist
   "Patterns used to match engine output.")
@@ -50,7 +49,7 @@
               (= 1 (mod (car args) 2)))
          (error "Cannot undo until after fruit moves"))
 
-      (apply 'chess-uci-handler game event args)))))
+      (apply #'chess-uci-handler game event args)))))
 
 (provide 'chess-fruit)
 
diff --git a/chess-game.el b/chess-game.el
index c0b6079..5616048 100644
--- a/chess-game.el
+++ b/chess-game.el
@@ -1,4 +1,4 @@
-;;; chess-game.el --- Maintain a chess game that is being played or viewed
+;;; chess-game.el --- Maintain a chess game that is being played or viewed  
-*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
@@ -295,11 +295,12 @@ progress (nil), if it is drawn, resigned, mate, etc."
   (cl-assert game)
   (cl-assert (listp ply))
   (let ((current-ply (chess-game-ply game))
-       (position (chess-ply-pos ply))
        (changes (chess-ply-changes ply)))
 
     (cl-assert current-ply)
-    (cl-assert (and position (eq position (chess-ply-pos current-ply))))
+    (cl-assert
+     (let ((position (chess-ply-pos ply)))
+       (and position (eq position (chess-ply-pos current-ply)))))
     (cl-assert changes)
 
     (if (chess-ply-final-p current-ply)
diff --git a/chess-german.el b/chess-german.el
index 881ddaa..54e87d5 100644
--- a/chess-german.el
+++ b/chess-german.el
@@ -1,6 +1,6 @@
-;;; chess-german.el --- German translation of the chess.el message catalog
+;;; chess-german.el --- German translation of the chess.el message catalog  
-*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: games, i18n
diff --git a/chess-glaurung.el b/chess-glaurung.el
index 04e5c3f..b842bd5 100644
--- a/chess-glaurung.el
+++ b/chess-glaurung.el
@@ -1,6 +1,6 @@
-;;; chess-glaurung.el --- Play against glaurung!
+;;; chess-glaurung.el --- Play against glaurung!  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020  Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: games, processes
@@ -29,9 +29,8 @@
   :link '(url-link "http://www.glaurungchess.com/";))
 
 (defcustom chess-glaurung-path (executable-find "glaurung")
-  "*The path to the glaurung executable."
-  :type 'file
-  :group 'chess-glaurung)
+  "The path to the glaurung executable."
+  :type 'file)
 
 (defvar chess-glaurung-regexp-alist chess-uci-regexp-alist
   "Patterns used to match engine output.")
@@ -51,7 +50,7 @@
               (= 1 (mod (car args) 2)))
          (error "Cannot undo until after glaurung moves"))
 
-      (apply 'chess-uci-handler game event args)))))
+      (apply #'chess-uci-handler game event args)))))
 
 (provide 'chess-glaurung)
 
diff --git a/chess-gnuchess.el b/chess-gnuchess.el
index db23b19..decb3aa 100644
--- a/chess-gnuchess.el
+++ b/chess-gnuchess.el
@@ -1,6 +1,6 @@
-;;; chess-gnuchess.el --- Play against gnuchess!
+;;; chess-gnuchess.el --- Play against gnuchess!  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -33,9 +33,8 @@
 
 (defcustom chess-gnuchess-path (let ((exec-path (cons "/usr/games" exec-path)))
                                 (executable-find "gnuchess"))
-  "*The path to the gnuchess executable."
-  :type 'file
-  :group 'chess-gnuchess)
+  "The path to the gnuchess executable."
+  :type 'file)
 
 (defvar chess-gnuchess-bad-board nil)
 (make-variable-buffer-local 'chess-gnuchess-bad-board)
@@ -98,7 +97,7 @@
        (setq chess-gnuchess-bad-board nil)))
 
      (t
-      (apply 'chess-common-handler game event args)))))
+      (apply #'chess-common-handler game event args)))))
 
 (provide 'chess-gnuchess)
 
diff --git a/chess-ics.el b/chess-ics.el
index ca2aaab..2d53bec 100644
--- a/chess-ics.el
+++ b/chess-ics.el
@@ -1,6 +1,6 @@
-;;; chess-ics.el --- Play on Internet Chess Servers
+;;; chess-ics.el --- Play on Internet Chess Servers  -*- lexical-binding: t; 
-*-
 
-;; Copyright (C) 2002, 2003, 2004, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -66,8 +66,7 @@ The format of each entry is:
                       (choice (const :tag "Direct connection" nil)
                               (file :tag "Command"))
                       (choice (const :tag "No arguments" nil)
-                              (repeat string))))
-  :group 'chess-ics)
+                              (repeat string)))))
 
 
 
@@ -93,15 +92,13 @@ The format is (SERVER COMMANDS...) where SERVER is either 
the server-name
 \(see `chess-ics-server-list') or nil, which is the default to use for all
 servers which do not have a specialized entry in this list.  COMMAND is a
 string which should be sent (newline characters will be added automatically.)"
-  :group 'chess-ics
   :type '(repeat
          (list :tag "Initialisation for"
                (choice (string :tag "Server Name") (const :tag "Default" nil))
                (repeat :inline t (string :tag "Command")))))
 
 (defcustom chess-ics-prompt-regexp "\\(?:[0-2][0-9]:[0-6][0-9]_\\)?[af]ics% $"
-  "*Regexp which matches an ICS prompt."
-  :group 'chess-ics
+  "Regexp which matches an ICS prompt."
   :type 'regexp)
 
 (defvar chess-ics-server nil
@@ -127,8 +124,7 @@ and ICC.")
 (make-variable-buffer-local 'chess-ics-server-type)
 
 (defcustom chess-ics-icc-datagrams '(22 23 26 33 50 51 56 110 111)
-  "*A list of datagrams to request when connecting to ICC."
-  :group 'chess-ics
+  "A list of datagrams to request when connecting to ICC."
   :type '(repeat (choice (const :tag "DG_SEND_MOVES" 24)
                         (const :tag "DG_KIBITZ" 26)
                         (const :tag "DG_MOVE_ALGEBRAIC" 33)
@@ -213,9 +209,9 @@ standard position).  In those cases, this variable should 
be set to nil.")
         (function
          (lambda ()
            (when chess-ics-handling-login
-             (setq chess-ics-server-type 'ICC
-                   comint-preoutput-filter-functions
-                   '(chess-icc-preoutput-filter)))
+             (setq chess-ics-server-type 'ICC)
+             (add-hook 'comint-preoutput-filter-functions
+                       #'chess-icc-preoutput-filter nil t))
            'once)))
    (cons "\\(ogin\\|name\\):"
         (function
@@ -224,7 +220,7 @@ standard position).  In those cases, this variable should 
be set to nil.")
              (chess-ics-send
               (format "level2settings=%s"
                       (let ((str (make-string
-                                  (1+ (apply 'max chess-ics-icc-datagrams))
+                                  (1+ (apply #'max chess-ics-icc-datagrams))
                                   ?0)))
                         (dolist (dg chess-ics-icc-datagrams str)
                           (aset str dg ?1))))))
@@ -260,7 +256,7 @@ standard position).  In those cases, this variable should 
be set to nil.")
         (function
          (lambda ()
            (chess-ics-send
-            (mapconcat 'identity
+            (mapconcat #'identity
                        (cdr
                         (or
                          (assoc chess-ics-server chess-ics-initial-commands)
@@ -682,17 +678,14 @@ See `chess-ics-game'.")
 
 (defcustom chess-ics-popup-sought t
   "If non-nil, display the sought buffer automatically."
-  :group 'chess-ics
   :type 'boolean)
 
 (defcustom chess-ics-sought-buffer-name "*chess-ics-sought*"
   "The name of the buffer which accumulates seek ads."
-  :group 'chess-ics
   :type 'string)
 
 (define-derived-mode chess-ics-ads-mode tabulated-list-mode "ICSAds"
   "Mode for displaying sought games from Internet Chess Servers."
-  :group 'chess-ics
   (setq tabulated-list-format [("Player" 20 t)
                               ("Rating" 10 t :right-align t)
                               ("Rated" 5 nil :right-align t)
@@ -778,7 +771,8 @@ This function should be put on 
`comint-preoutput-filter-functions'."
                (tabulated-list-revert))))))))
   string)
 
-(make-variable-buffer-local 'comint-preoutput-filter-functions)
+;; FIXME: This is evil!
+;;(make-variable-buffer-local 'comint-preoutput-filter-functions)
 
 ;;;###autoload
 (defun chess-ics (server port &optional handle password-or-filename
@@ -801,7 +795,7 @@ This function should be put on 
`comint-preoutput-filter-functions'."
     (setq handle "guest"))
   (chess-message 'ics-connecting server)
   (let ((buf (if helper
-                (apply 'make-comint "chess-ics" helper nil helper-args)
+                (apply #'make-comint "chess-ics" helper nil helper-args)
               (make-comint "chess-ics" (cons server port)))))
     (chess-message 'ics-connected server)
     (set-buffer buf)
@@ -818,9 +812,9 @@ This function should be put on 
`comint-preoutput-filter-functions'."
          chess-engine-regexp-alist (copy-alist chess-ics-matcher-alist)
          comint-prompt-regexp "^[^%\n]*% *"
          comint-scroll-show-maximum-output t)
-    (add-hook 'comint-output-filter-functions 'chess-engine-filter t t)
-    (setq comint-preoutput-filter-functions
-         '(chess-ics-ads-removed chess-ics-seeking))
+    (add-hook 'comint-output-filter-functions #'chess-engine-filter t t)
+    (add-hook 'comint-preoutput-filter-functions #'chess-ics-seeking nil t)
+    (add-hook 'comint-preoutput-filter-functions #'chess-ics-ads-removed nil t)
     (let ((ntimes 50))
       (while (and chess-ics-handling-login
                  (> (setq ntimes (1- ntimes)) 0))
@@ -1091,7 +1085,7 @@ This function should be put on 
`comint-preoutput-filter-functions'."
       (chess-ics-send "resign" (chess-game-data game 'ics-buffer)))
 
      (t
-      (apply 'chess-network-handler game event args)))))
+      (apply #'chess-network-handler game event args)))))
 
 (provide 'chess-ics)
 
diff --git a/chess-ics1.el b/chess-ics1.el
index 4be5e60..b985bfb 100644
--- a/chess-ics1.el
+++ b/chess-ics1.el
@@ -1,6 +1,6 @@
-;;; chess-ics1.el --- Classic ICS1 style chessboard display
+;;; chess-ics1.el --- Classic ICS1 style chessboard display  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2005, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Keywords: games
@@ -30,31 +30,26 @@
   '((((class color) (background light)) (:foreground "Green"))
     (((class color) (background dark)) (:foreground "Green"))
     (t (:bold t)))
-  "*The face used for black pieces on the ASCII display."
-  :group 'chess-ics1)
+  "The face used for black pieces on the ASCII display.")
 
 (defface chess-ics1-white-face
   '((((class color) (background light)) (:foreground "Yellow"))
     (((class color) (background dark)) (:foreground "Yellow"))
     (t (:bold t)))
-  "*The face used for white pieces on the ASCII display."
-  :group 'chess-ics1)
+  "The face used for white pieces on the ASCII display.")
 
 (defface chess-ics1-highlight-face
   '((((class color) (background light)) (:background "#add8e6"))
     (((class color) (background dark)) (:background "#add8e6")))
-  "Face to use for highlighting pieces that have been selected."
-  :group 'chess-ics1)
+  "Face to use for highlighting pieces that have been selected.")
 
-(defcustom chess-ics1-popup-function 'chess-ics1-popup
+(defcustom chess-ics1-popup-function #'chess-ics1-popup
   "The function used to popup a chess-ics1 display."
-  :type 'function
-  :group 'chess-ics1)
+  :type 'function)
 
 (defcustom chess-ics1-separate-frame nil
   "If non-nil, display the chessboard in its own frame."
-  :type 'boolean
-  :group 'chess-ics1)
+  :type 'boolean)
 
 ;;; Code:
 
@@ -66,13 +61,13 @@
     (funcall chess-ics1-popup-function))
 
    ((eq event 'draw)
-    (apply 'chess-ics1-draw args))
+    (apply #'chess-ics1-draw args))
 
    ((eq event 'draw-square)
-    (apply 'chess-ics1-draw-square args))
+    (apply #'chess-ics1-draw-square args))
 
    ((eq event 'highlight)
-    (apply 'chess-ics1-highlight args))))
+    (apply #'chess-ics1-highlight args))))
 
 (defun chess-ics1-popup ()
   (if chess-ics1-separate-frame
diff --git a/chess-images.el b/chess-images.el
index f2e0f03..f7abed0 100644
--- a/chess-images.el
+++ b/chess-images.el
@@ -1,6 +1,6 @@
-;;; chess-images.el --- Chessboard display style using graphical images
+;;; chess-images.el --- Chessboard display style using graphical images  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2005, 2008, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Keywords: games
@@ -54,8 +54,7 @@
 
 (defcustom chess-images-separate-frame (display-multi-frame-p)
   "If non-nil, display the chessboard in its own frame."
-  :type 'boolean
-  :group 'chess-images)
+  :type 'boolean)
 
 (defcustom chess-images-directory
   (if (file-directory-p "/usr/share/games/xboard/pixmaps")
@@ -83,8 +82,7 @@ for all squares.  If you want really custom pieces, you can 
use the
 symbolic colors dark_square, light_square and dark_piece and
 light_piece."
   :type 'directory
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
 (defcustom chess-images-default-size nil
   "The default pixel width to use for chess pieces.
@@ -92,8 +90,7 @@ If this width is not available, then next smallest will be 
chosen.
 If there is none smaller, then the best size available will be chosen.
 If `chess-images-default-size' is nil (the default), then the best
 width for the current display is calculated used."
-  :type '(choice integer (const :tag "Best fit" nil))
-  :group 'chess-images)
+  :type '(choice integer (const :tag "Best fit" nil)))
 
 (defcustom chess-images-background-image "blank"
   "The name of the file used for background squares.
@@ -101,69 +98,59 @@ This file is optional.  If there is no file available by 
this name, a
 solid color square will be created and used.  This option exists so
 that specialized squares may be used such as marble tiles, etc."
   :type 'file
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
 (defcustom chess-images-border-color (cdr (assq 'background-color
                                                (frame-parameters)))
   "Color to use for the border around pieces."
   :type 'color
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
 (defcustom chess-images-dark-color
   (if (display-color-p) "#77a26d" "gray60")
   "Color to use for \"dark\" background squares."
   :type 'color
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
 (defcustom chess-images-light-color
   (if (display-color-p) "#c8c365" "gray80")
   "Color to use for \"light\" background squares."
   :type 'color
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
 (defcustom chess-images-black-color
   (if (display-color-p) "#202020" "gray0")
   "Color to use for \"black\" pieces."
   :type 'color
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
 (defcustom chess-images-white-color
   (if (display-color-p) "#ffffcc" "gray100")
   "Color to use for \"white\" pieces."
   :type 'color
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
 (defcustom chess-images-highlight-color
   (if (display-color-p) "#add8e6" "gray90")
   "Color to use for highlighting pieces that have been selected."
   :type 'color
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
 (defcustom chess-images-extension "xpm"
   "The file extension used for chess display bitmaps."
   :type 'file
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
 (defcustom chess-images-border-width 2
   "This defines the width of the border that surrounds each piece."
   :type '(choice integer (const :tag "No border" nil))
-  :set 'chess-images-clear-image-cache
-  :group 'chess-images)
+  :set #'chess-images-clear-image-cache)
 
-(defcustom chess-images-popup-function 'chess-images-popup
+(defcustom chess-images-popup-function #'chess-images-popup
   "The function used to popup a chess-images display.
 The current-buffer is set to the display buffer when this function is
 called."
-  :type 'function
-  :group 'chess-images)
+  :type 'function)
 
 ;;; Code:
 
@@ -192,13 +179,13 @@ called."
     (funcall chess-images-popup-function))
 
    ((eq event 'draw)
-    (apply 'chess-images-draw args))
+    (apply #'chess-images-draw args))
 
    ((eq event 'draw-square)
-    (apply 'chess-images-draw-square args))
+    (apply #'chess-images-draw-square args))
 
    ((eq event 'highlight)
-    (apply 'chess-images-highlight args))
+    (apply #'chess-images-highlight args))
 
    ((eq event 'start-edit)
     (setq cursor-type t))
@@ -419,7 +406,7 @@ They are returned in ascending order, or nil for no sizes 
available."
     (insert "\"  c red s void\",\n")
     (insert "\". c red s background\",\n")
     (insert "/* pixels */\n")
-    (dotimes (i height)
+    (dotimes (_ height)
       (insert ?\" (make-string (or width height) ?.) ?\" ?, ?\n))
     (delete-char -2)
     (insert "\n};\n")
@@ -455,9 +442,9 @@ This is necessary for bizzare Emacs reasons."
          (forward-line (1+ colors))
          (while (looking-at "/\\*")
            (forward-line))
-         (dotimes (i add-height)
+         (dotimes (_ add-height)
            (insert "\"")
-           (dotimes (j width)
+           (dotimes (_ width)
              (insert color-char))
            (insert "\",\n"))))
     (buffer-string)))
diff --git a/chess-input.el b/chess-input.el
index 4a43c7d..ba0a7a3 100644
--- a/chess-input.el
+++ b/chess-input.el
@@ -1,6 +1,6 @@
-;;; chess-input.el --- Keyboard entry of algebraic notation, using shortcut 
notation
+;;; chess-input.el --- Keyboard entry of algebraic notation, using shortcut 
notation  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2005, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -54,7 +54,6 @@
 
 (defcustom chess-input-notation-type :san
   "Define the notation type to use for move input."
-  :group 'chess-input
   :type '(choice (const :tag "Standard (short) algebraic notation" :san)
                 (const :tag "Numeric notation" :numeric)))
 
diff --git a/chess-irc.el b/chess-irc.el
index d29e3d3..b52994c 100644
--- a/chess-irc.el
+++ b/chess-irc.el
@@ -1,6 +1,6 @@
-;;; chess-irc.el --- This transport uses an IRC bot to send/receive moves.
+;;; chess-irc.el --- This transport uses an IRC bot to send/receive moves.  
-*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
@@ -19,6 +19,7 @@
 
 ;;; Code:
 
+(require 'chess)                        ;For `chess-full-name'
 (require 'chess-network)
 
 (defgroup chess-irc nil
@@ -27,18 +28,15 @@
 
 (defcustom chess-irc-server "irc.openprojects.net"
   "The IRC host to connect your chess-irc engine to."
-  :type 'string
-  :group 'chess-irc)
+  :type 'string)
 
 (defcustom chess-irc-port 6667
   "The port of the IRC host specified by `chess-irc-server'."
-  :type 'string
-  :group 'chess-irc)
+  :type 'string)
 
 (defcustom chess-irc-nick (user-login-name)
   "The nick you wish to use for sending/receiving IRC chess moves."
-  :type 'string
-  :group 'chess-irc)
+  :type 'string)
 
 ;;; Code:
 
@@ -113,7 +111,7 @@
                             (format "PRIVMSG %s :%s\n"
                                     chess-irc-opponent (car args)))))
      (t
-      (apply 'chess-network-handler game event args)))))
+      (apply #'chess-network-handler game event args)))))
 
 ;; This filter translates IRC syntax into basic chess-network protocol
 (defun chess-irc-filter (proc string)
diff --git a/chess-kibitz.el b/chess-kibitz.el
index 7fbcaab..15b9243 100644
--- a/chess-kibitz.el
+++ b/chess-kibitz.el
@@ -1,6 +1,6 @@
-;;; chess-kibitz.el --- Chess kibitzing, stored as annotations
+;;; chess-kibitz.el --- Chess kibitzing, stored as annotations  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
diff --git a/chess-link.el b/chess-link.el
index afc5607..ebd1bfe 100644
--- a/chess-link.el
+++ b/chess-link.el
@@ -1,6 +1,6 @@
-;;; chess-link.el --- Connect two engines
+;;; chess-link.el --- Connect two engines  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
@@ -42,13 +42,14 @@
      (t
       (let ((chess-engine-inhibit-auto-pass t))
        (setq return-value
-             (apply 'chess-engine-default-handler event args)))
+             (apply #'chess-engine-default-handler event args)))
 
       ;; but now transfer the event to the other engine
-      (apply 'chess-engine-command
+      (apply #'chess-engine-command
             (if (eq (current-buffer) first-engine)
                 second-engine
-              first-engine) event args)
+              first-engine)
+            event args)
 
       return-value))))
 
diff --git a/chess-log.el b/chess-log.el
index c13ff27..a2f3609 100644
--- a/chess-log.el
+++ b/chess-log.el
@@ -1,6 +1,6 @@
-;;; chess-log.el --- Log chess events, as an aid to debugging
+;;; chess-log.el --- Log chess events, as an aid to debugging  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
@@ -27,7 +27,7 @@
 
 (defun chess-log (&rest args)
   (with-current-buffer (get-buffer-create "*Chess Log*")
-    (insert (apply 'format args) ?\n)))
+    (insert (apply #'format args) ?\n)))
 
 (provide 'chess-log)
 
diff --git a/chess-message.el b/chess-message.el
index 42bdc75..98da7e1 100644
--- a/chess-message.el
+++ b/chess-message.el
@@ -1,6 +1,6 @@
-;;; chess-message.el --- Code shared by all chess displays
+;;; chess-message.el --- Code shared by all chess displays  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
@@ -25,8 +25,7 @@
 
 (defcustom chess-message-language 'english
   "The language to use when reporting messages."
-  :type 'symbol
-  :group 'chess-message)
+  :type 'symbol)
 
 ;;; Code:
 
@@ -46,14 +45,14 @@
   (let* ((entry (assq chess-message-language chess-message-catalog))
         (msg (and entry (cdr (assq key (cdr entry))))))
     (if msg
-       (apply 'format msg arguments)
+       (apply #'format msg arguments)
       (format "Message not found: %s" key))))
 
 (defsubst chess-message (key &rest arguments)
-  (message (apply 'chess-string key arguments)))
+  (message (apply #'chess-string key arguments)))
 
 (defsubst chess-error (key &rest arguments)
-  (error (apply 'chess-string key arguments)))
+  (error (apply #'chess-string key arguments)))
 
 (put 'chess-message-catalog 'lisp-indent-function 1)
 
diff --git a/chess-module.el b/chess-module.el
index c581844..19df0be 100644
--- a/chess-module.el
+++ b/chess-module.el
@@ -1,6 +1,6 @@
-;;; chess-module.el --- Basic module support code underlying all chess.el 
modules
+;;; chess-module.el --- Basic module support code underlying all chess.el 
modules  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2008, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Keywords: games
@@ -36,14 +36,14 @@
   '((no-such-module . "There is no module named '%s'")))
 
 (defmacro chess-with-current-buffer (buffer &rest body)
+  ;; FIXME: Beware, this doubles the code size!
+  (declare (debug t) (indent 1))
   `(let ((buf ,buffer))
      (if buf
         (with-current-buffer buf
           ,@body)
        ,@body)))
 
-(put 'chess-with-current-buffer 'lisp-indent-function 1)
-
 (defun chess-module-create (derived game &optional buffer-name
                                    &rest ctor-args)
   (let* ((name (symbol-name derived))
@@ -56,7 +56,7 @@
       (if (not (apply handler game 'initialize ctor-args))
          (ignore
           (kill-buffer (current-buffer)))
-       (add-hook 'kill-buffer-hook 'chess-module-destroy nil t)
+       (add-hook 'kill-buffer-hook #'chess-module-destroy nil t)
        (setq chess-module-event-handler handler)
        (chess-module-set-game* nil game)
        (current-buffer)))))
@@ -72,7 +72,7 @@
 (defun chess-module-detach-game (module)
   (chess-with-current-buffer module
     (chess-game-remove-hook chess-module-game
-                           'chess-module-event-handler
+                           #'chess-module-event-handler
                            (or module (current-buffer)))
     ;; if we are the leader, shutdown the game we were attached to
     ;; previously
@@ -90,7 +90,7 @@
     (if chess-module-game
        (chess-module-detach-game nil))
     (setq chess-module-game game)
-    (chess-game-add-hook game 'chess-module-event-handler
+    (chess-game-add-hook game #'chess-module-event-handler
                         (or module (current-buffer)))))
 
 (defsubst chess-module-leader-p (module)
@@ -109,7 +109,7 @@
   (let ((buf (or module (current-buffer))))
     (when (buffer-live-p buf)
       (with-current-buffer buf
-       (remove-hook 'kill-buffer-hook 'chess-module-destroy t)
+       (remove-hook 'kill-buffer-hook #'chess-module-destroy t)
        (chess-module-detach-game nil))
       (kill-buffer buf))))
 
diff --git a/chess-network.el b/chess-network.el
index 4d51666..6de694e 100644
--- a/chess-network.el
+++ b/chess-network.el
@@ -1,4 +1,4 @@
-;;; chess-network.el --- Play against an opponent over the network
+;;; chess-network.el --- Play against an opponent over the network  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
@@ -236,7 +236,7 @@
       (chess-common-handler game 'flag-fell))
 
      (t
-      (apply 'chess-common-handler game event args)))))
+      (apply #'chess-common-handler game event args)))))
 
 (provide 'chess-network)
 
diff --git a/chess-none.el b/chess-none.el
index 1d8977a..9af94dc 100644
--- a/chess-none.el
+++ b/chess-none.el
@@ -1,6 +1,6 @@
-;;; chess-none.el --- Null engine
+;;; chess-none.el --- Null engine  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
diff --git a/chess-perft.el b/chess-perft.el
index a24d584..71b6c56 100644
--- a/chess-perft.el
+++ b/chess-perft.el
@@ -1,6 +1,6 @@
 ;;; chess-perft.el --- Perft tests for emacs-chess   -*- lexical-binding: t; 
-*-
 
-;; Copyright (C) 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020  Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: games
diff --git a/chess-pgn.el b/chess-pgn.el
index 575e8fd..8021229 100644
--- a/chess-pgn.el
+++ b/chess-pgn.el
@@ -1,6 +1,6 @@
-;;; chess-pgn.el --- Convert a chess game to/from Portable Game Notation (PGN)
+;;; chess-pgn.el --- Convert a chess game to/from Portable Game Notation (PGN) 
 -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2008, 2014, 2017  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -181,7 +181,7 @@ Optionally use the supplied STRING instead of the current 
buffer."
       (chess-pgn-insert-plies game index ann))))
 
 (defun chess-pgn-insert-plies (game index plies &optional
-                                    for-black indented no-annotations)
+                                    for-black _indented no-annotations)
   "NYI: Still have to implement INDENTED argument."
   (while plies
     (unless for-black
@@ -232,7 +232,7 @@ PGN text."
              tags (cdr tags))))
     index))
 
-(defun chess-insert-pgn (game &optional indented)
+(defun chess-insert-pgn (game &optional _indented)
   (let ((fen (chess-game-tag game "FEN"))
        (first-pos (chess-game-pos game 0)))
     (when (and fen (not (string= fen (chess-pos-to-fen first-pos))))
@@ -323,11 +323,11 @@ PGN text."
   (if (fboundp 'font-lock-mode)
       (font-lock-mode 1))
   (set (make-local-variable 'pcomplete-default-completion-function)
-       'chess-pgn-completions)
+       #'chess-pgn-completions)
   (set (make-local-variable 'pcomplete-command-completion-function)
-       'chess-pgn-completions)
+       #'chess-pgn-completions)
   (set (make-local-variable 'pcomplete-parse-arguments-function)
-       'chess-pgn-current-word))
+       #'chess-pgn-current-word))
 
 ;;;###autoload
 (defalias 'pgn-mode 'chess-pgn-mode)
@@ -362,7 +362,7 @@ PGN text."
   (let ((position (chess-game-pos chess-pgn-current-game
                                  chess-pgn-current-index)))
     (while (pcomplete-here
-           (mapcar 'chess-ply-to-algebraic
+           (mapcar #'chess-ply-to-algebraic
                    (chess-legal-plies position :color
                                       (chess-pos-side-to-move position)))))))
 
@@ -469,7 +469,7 @@ This does not require that the buffer be in PGN mode."
 
 (defun chess-pgn-mouse-show-position (event)
   (interactive "e")
-  (if (fboundp 'event-window)          ; XEmacs
+  (if (featurep 'xemacs)
       (progn
        (set-buffer (window-buffer (event-window event)))
        (and (event-point event) (goto-char (event-point event))))
diff --git a/chess-phalanx.el b/chess-phalanx.el
index 5d39b28..82e4ef5 100644
--- a/chess-phalanx.el
+++ b/chess-phalanx.el
@@ -1,6 +1,6 @@
-;;; chess-phalanx.el --- Play chess against phalanx!
+;;; chess-phalanx.el --- Play chess against phalanx!  -*- lexical-binding: t; 
-*-
 
-;; Copyright (C) 2002, 2004  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -30,8 +30,7 @@
 
 (defcustom chess-phalanx-path (executable-find "phalanx")
   "The path to the phalanx executable."
-  :type 'file
-  :group 'chess-phalanx)
+  :type 'file)
 
 (defvar chess-phalanx-regexp-alist
   (list
@@ -61,7 +60,7 @@
       (chess-game-set-data game 'active nil))
 
      (t
-      (apply 'chess-common-handler game event args)))))
+      (apply #'chess-common-handler game event args)))))
 
 (provide 'chess-phalanx)
 
diff --git a/chess-plain.el b/chess-plain.el
index 190d263..500f8a3 100644
--- a/chess-plain.el
+++ b/chess-plain.el
@@ -1,6 +1,6 @@
-;;; chess-plain.el --- Plain ASCII chess display
+;;; chess-plain.el --- Plain ASCII chess display  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002-2005, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -40,7 +40,6 @@
 
 (defcustom chess-plain-border-style [?+ ?- ?+ ?| ?| ?+ ?- ?+]
   "If non-nil, a vector describing the border characters."
-  :group 'chess-plain
   :type '(choice (const :tag "No border" nil)
                 (vector :tag "Plain ASCII"
                         (const :value ?+ :tag "Upper left corner: +")
@@ -72,12 +71,10 @@
 
 (defcustom chess-plain-black-square-char ?.
   "Character used to indicate empty black squares."
-  :group 'chess-plain
   :type 'character)
 
 (defcustom chess-plain-white-square-char ?.
   "Character used to indicate empty white squares."
-  :group 'chess-plain
   :type 'character)
 
 (defcustom chess-plain-piece-chars '((?K . ?K)
@@ -95,7 +92,6 @@
   "Alist of pieces and their corresponding characters.
 Characters defined here should make sense in respect to the current setting
 of `chess-plain-upcase-indicates'."
-  :group 'chess-plain
   :type '(choice (list :tag "White has uppercase english letters and black has 
lowercase english letters"
                       (const :tag "White King: K"   (?K . ?K))
                       (const :tag "White Queen: Q"  (?Q . ?Q))
@@ -195,44 +191,37 @@ lowercase char a black piece.  Possible values: 'color 
(default),
 'square-color.  If set to 'square-color, a uppercase character
 indicates a piece on a black square. (Note that you also need to
 modify `chess-plain-piece-chars' to avoid real confusion.)"
-  :group 'chess-plain
   :type '(choice (const :tag "Upcase indicates white piece" color)
                 (const :tag "Upcase indicates black square" square-color)))
 
 (defcustom chess-plain-spacing 1
   "Number of spaces between files."
-  :group 'chess-plain
   :type 'integer)
 
 (defface chess-plain-black-face
   '((((class color) (background light)) (:foreground "Black"))
     (((class color) (background dark)) (:foreground "Green"))
     (t (:bold t)))
-  "The face used for black pieces on the ASCII display."
-  :group 'chess-plain)
+  "The face used for black pieces on the ASCII display.")
 
 (defface chess-plain-white-face
   '((((class color) (background light)) (:foreground "Blue"))
     (((class color) (background dark)) (:foreground "Yellow"))
     (t (:bold t)))
-  "The face used for white pieces on the ASCII display."
-  :group 'chess-plain)
+  "The face used for white pieces on the ASCII display.")
 
 (defface chess-plain-highlight-face
   '((((class color) (background light)) (:background "#add8e6"))
     (((class color) (background dark)) (:background "#add8e6")))
-  "Face to use for highlighting pieces that have been selected."
-  :group 'chess-plain)
+  "Face to use for highlighting pieces that have been selected.")
 
-(defcustom chess-plain-popup-function 'chess-plain-popup
+(defcustom chess-plain-popup-function #'chess-plain-popup
   "The function used to popup a chess-plain display."
-  :type 'function
-  :group 'chess-plain)
+  :type 'function)
 
 (defcustom chess-plain-separate-frame nil
   "If non-nil, display the chessboard in its own frame."
-  :type 'boolean
-  :group 'chess-plain)
+  :type 'boolean)
 
 ;;; Code:
 
@@ -314,14 +303,14 @@ PERSPECTIVE is t for white or nil for black."
        (setq file (if inverted 7 0)
              rank (if inverted (1- rank) (1+ rank))))
       (if chess-plain-border-style
-         (insert ?  (aref chess-plain-border-style 5)
+         (insert ?\s (aref chess-plain-border-style 5)
                  (make-string (+ 8 (* 7 chess-plain-spacing))
                               (aref chess-plain-border-style 6))
                  (aref chess-plain-border-style 7) ?\n
-                 ? ?  
+                 ?\s ?\s
                  (let ((string (if (not inverted) "abcdefgh" "hgfedcba")))
-                   (mapconcat 'string (string-to-list string) 
-                              (make-string chess-plain-spacing ? )))))
+                   (mapconcat #'string (string-to-list string)
+                              (make-string chess-plain-spacing ?\s)))))
       (set-buffer-modified-p nil)
       (goto-char pos))))
 
diff --git a/chess-ply.el b/chess-ply.el
index 5490013..f38d8e7 100644
--- a/chess-ply.el
+++ b/chess-ply.el
@@ -1,6 +1,6 @@
-;;; chess-ply.el --- Routines for manipulating chess plies
+;;; chess-ply.el --- Routines for manipulating chess plies  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2008, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -69,6 +69,7 @@
 
 (defsubst chess-ply-p (ply)
   (and (consp ply) (chess-pos-p (car ply))))
+(cl-deftype chess-ply () '(satisfies chess-ply-p))
 
 (defsubst chess-ply-pos (ply)
   "Returns the base position associated with PLY."
@@ -147,7 +148,7 @@ If KEYWORD is the last element of the changes of ply, `t' 
is returned."
   "Return the position that results from executing PLY."
   (cl-check-type ply chess-ply)
   (or (chess-ply-keyword ply :next-pos)
-      (let ((position (apply 'chess-pos-move
+      (let ((position (apply #'chess-pos-move
                             (chess-pos-copy (chess-ply-pos ply))
                             (chess-ply-changes ply))))
        (chess-pos-set-preceding-ply position ply)
@@ -333,7 +334,7 @@ position object passed in."
    ((memq :any keywords)
     (let ((chess-ply-throw-if-any t))
       (catch 'any-found
-       (apply 'chess-legal-plies position (delq :any keywords)))))
+       (apply #'chess-legal-plies position (delq :any keywords)))))
    ((memq :color keywords)
     (let ((plies (list t)))
       (dolist (p (apply #'chess-pos-search* position (if (cadr (memq :color 
keywords))
diff --git a/chess-polyglot.el b/chess-polyglot.el
index 09fc6a0..57ee802 100644
--- a/chess-polyglot.el
+++ b/chess-polyglot.el
@@ -1,6 +1,6 @@
 ;;; chess-polyglot.el --- Polyglot chess book access for Emacs  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2014, 2020-2020  Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: data, games
@@ -56,7 +56,6 @@ A value above 1.0 means to prefer known good moves while a 
value below
 1.0 means to penalize known good moves.  0.0 will force uniform
 distribution of move weights.  For reasons of numerical overflow,
 this should be strictly less than 4.0."
-  :group 'chess-polyglot
   :type '(float :match (lambda (widget value) (and (>= value 0) (< value 4)))))
 
 (defvar chess-polyglot-book nil
@@ -541,8 +540,7 @@ distribute the probability that a move gets picked."
   "Path to default polyglot book file.
 
 This is used by UCI based engines as well as the internal AI."
-  :group 'chess-polyglot
-  :set 'chess-polyglot-book-reload
+  :set #'chess-polyglot-book-reload
   :type '(file :must-match t))
 
 (provide 'chess-polyglot)
diff --git a/chess-pos.el b/chess-pos.el
index 4416766..9c23536 100644
--- a/chess-pos.el
+++ b/chess-pos.el
@@ -1,4 +1,4 @@
-;;; chess-pos.el --- Routines for manipulating chess positions
+;;; chess-pos.el --- Routines for manipulating chess positions  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
diff --git a/chess-puzzle.el b/chess-puzzle.el
index 8b4da35..6428bc9 100644
--- a/chess-puzzle.el
+++ b/chess-puzzle.el
@@ -1,6 +1,6 @@
-;;; chess-puzzle.el --- Support for viewing and solving chess puzzles
+;;; chess-puzzle.el --- Support for viewing and solving chess puzzles  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2008, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -41,8 +41,7 @@
 
 (defcustom chess-puzzle-auto-next nil
   "If non-nil, move to the next puzzle once the position is won."
-  :type 'boolean
-  :group 'chess-puzzle)
+  :type 'boolean)
 
 (defvar chess-puzzle-indices nil)
 (defvar chess-puzzle-position nil)
@@ -55,7 +54,7 @@
     (end-of-puzzles . "There are no more puzzles in this collection")))
 
 ;;;###autoload
-(defun chess-puzzle (file &optional index) ;FIXME: index not used!
+(defun chess-puzzle (file &optional _index) ;FIXME: index not used!
   "Pick a random puzzle from FILE, and solve it against the default engine.
 The spacebar in the display buffer is bound to `chess-puzzle-next',
 making it easy to go on to the next puzzle once you've solved one."
@@ -71,7 +70,7 @@ making it easy to go on to the next puzzle once you've solved 
one."
        (chess-game-set-data (chess-display-game nil) 'database database)
        (if chess-puzzle-auto-next
            (chess-game-add-hook (chess-display-game nil)
-                                'chess-puzzle-handler display))
+                                #'chess-puzzle-handler display))
        (define-key (current-local-map) [? ] 'chess-puzzle-next)
        (define-key (current-local-map) [??] 'chess-puzzle-show-solution)
        (let ((count (chess-database-count database)))
diff --git a/chess-random.el b/chess-random.el
index a1a7bcf..ab8765c 100644
--- a/chess-random.el
+++ b/chess-random.el
@@ -1,6 +1,6 @@
-;;; chess-random.el --- Generate Fischer Random style positions
+;;; chess-random.el --- Generate Fischer Random style positions  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
diff --git a/chess-scid.el b/chess-scid.el
index 58ca27a..6614bed 100644
--- a/chess-scid.el
+++ b/chess-scid.el
@@ -1,6 +1,6 @@
-;;; chess-scid.el --- A game database that uses SCID for storage/retrieval
+;;; chess-scid.el --- A game database that uses SCID for storage/retrieval  
-*- lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2008  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
diff --git a/chess-sjeng.el b/chess-sjeng.el
index 4e2bc41..d27d692 100644
--- a/chess-sjeng.el
+++ b/chess-sjeng.el
@@ -1,6 +1,6 @@
-;;; chess-sjeng.el --- Play against sjeng!
+;;; chess-sjeng.el --- Play against sjeng!  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2004  Free Software Foundation, Inc.
+;; Copyright (C) 2004-2020  Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: games, processes
@@ -20,6 +20,7 @@
 
 ;;; Code:
 
+(require 'chess)                        ;For `chess-full-name'
 (require 'chess-common)
 (require 'chess-fen)
 (require 'chess-pgn)
@@ -31,9 +32,8 @@
   :link '(url-link "http://sjeng.sourceforge.net";))
 
 (defcustom chess-sjeng-path (executable-find "sjeng")
-  "*The path to the sjeng executable."
-  :type 'file
-  :group 'chess-sjeng)
+  "The path to the sjeng executable."
+  :type 'file)
 
 (defvar chess-sjeng-evaluation nil)
 
@@ -115,7 +115,7 @@
               (= 1 (mod (car args) 2)))
          (error "Cannot undo until after sjeng moves"))
 
-      (apply 'chess-common-handler game event args)))))
+      (apply #'chess-common-handler game event args)))))
 
 (provide 'chess-sjeng)
 
diff --git a/chess-sound.el b/chess-sound.el
index 8397c79..f071afe 100644
--- a/chess-sound.el
+++ b/chess-sound.el
@@ -1,6 +1,6 @@
-;;; chess-sound.el --- Announce chess moves with pre-recorded sound files
+;;; chess-sound.el --- Announce chess moves with pre-recorded sound files  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2008, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -37,31 +37,26 @@
                    (file-name-directory
                     (or load-file-name buffer-file-name)))
   "The directory where chess sounds can be found."
-  :type 'directory
-  :group 'chess-sound)
+  :type 'directory)
 
 (defcustom chess-sound-play-function (if (fboundp 'play-sound-file)
-                                        'play-sound-file
-                                      'chess-sound-play)
+                                        #'play-sound-file
+                                      #'chess-sound-play)
   "Non-nil if chess-sound should play sounds ."
-  :type 'function
-  :group 'chess-sound)
+  :type 'function)
 
 (defcustom chess-sound-program (or (executable-find "esdplay")
                                   (executable-find "play"))
   "Program used to play sounds, if `play-sound-file' does not exist."
-  :type 'file
-  :group 'chess-sound)
+  :type 'file)
 
 (defcustom chess-sound-args nil
   "Additional args to pass to `chess-sound-program', before the .WAV file."
-  :type '(repeat string)
-  :group 'chess-sound)
+  :type '(repeat string))
 
 (defcustom chess-sound-my-moves nil
   "If non-nil, plays the move.wav sound whenever you make a move."
-  :type 'boolean
-  :group 'chess-sound)
+  :type 'boolean)
 
 (defsubst chess-sound (file)
   (ignore-errors
@@ -70,7 +65,7 @@
                               chess-sound-directory))))
 
 (defsubst chess-sound-play (file)
-  (apply 'call-process chess-sound-program
+  (apply #'call-process chess-sound-program
         nil nil nil (append chess-sound-args (list file))))
 
 (defun chess-sound-handler (game event &rest _args)
@@ -79,7 +74,7 @@
     (and (file-directory-p chess-sound-directory)
         (file-readable-p (expand-file-name "move.wav"
                                            chess-sound-directory))
-        (or (eq chess-sound-play-function 'play-sound-file)
+        (or (eq chess-sound-play-function #'play-sound-file)
             (and chess-sound-program
                  (file-executable-p chess-sound-program)))))
 
diff --git a/chess-stockfish.el b/chess-stockfish.el
index 9a4480a..d1fbb92 100644
--- a/chess-stockfish.el
+++ b/chess-stockfish.el
@@ -1,6 +1,6 @@
-;;; chess-stockfish.el --- Play against stockfish!
+;;; chess-stockfish.el --- Play against stockfish!  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020  Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: games, processes
@@ -29,9 +29,8 @@
   :link '(url-link "http://www.stockfishchess.com";))
 
 (defcustom chess-stockfish-path (executable-find "stockfish")
-  "*The path to the stockfish executable."
-  :type 'file
-  :group 'chess-stockfish)
+  "The path to the stockfish executable."
+  :type 'file)
 
 (defvar chess-stockfish-regexp-alist
   (append
@@ -62,7 +61,7 @@
               (= 1 (mod (car args) 2)))
          (error "Cannot undo until after stockfish moves"))
 
-      (apply 'chess-uci-handler game event args)))))
+      (apply #'chess-uci-handler game event args)))))
 
 (provide 'chess-stockfish)
 
diff --git a/chess-test.el b/chess-test.el
index 5d95195..e8e560b 100644
--- a/chess-test.el
+++ b/chess-test.el
@@ -1,6 +1,6 @@
-;;; chess-test.el --- Put Emacs Chess through an enormous battery of tests
+;;; chess-test.el --- Put Emacs Chess through an enormous battery of tests  
-*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
diff --git a/chess-transport.el b/chess-transport.el
index d5a80e7..75c160d 100644
--- a/chess-transport.el
+++ b/chess-transport.el
@@ -1,6 +1,6 @@
-;;; chess-transport.el --- Example generic transport
+;;; chess-transport.el --- Example generic transport  -*- lexical-binding: t; 
-*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
@@ -51,7 +51,7 @@
 
      (t
       ;; Pass all other events down to chess-network
-      (apply 'chess-network-handler game event args)))))
+      (apply #'chess-network-handler game event args)))))
 
 ;; Call `(chess-engine-submit engine STRING)' for text that arrives
 ;; from the inbound transport
diff --git a/chess-tutorial.el b/chess-tutorial.el
index d7d3cc4..b6a2d37 100644
--- a/chess-tutorial.el
+++ b/chess-tutorial.el
@@ -1,6 +1,6 @@
-;;; chess-tutorial.el --- A simple chess training display
+;;; chess-tutorial.el --- A simple chess training display  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2004, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020  Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -61,7 +61,7 @@
   (with-current-buffer (chess-create-display t)
     (chess-module-set-leader nil)
     (chess-display-set-from-fen "8/3p1p/2p3p/4q/2p3p/3p1p/8/N w - -")
-    (chess-game-add-hook (chess-display-game nil) 'chess-tutorial-knight-1)
+    (chess-game-add-hook (chess-display-game nil) #'chess-tutorial-knight-1)
     (setq chess-pos-always-white t)
     (chess-display-popup nil)
     (chess-message 'knight-1-done)))
diff --git a/chess-ucb.el b/chess-ucb.el
index 4ca2bf1..07a394e 100644
--- a/chess-ucb.el
+++ b/chess-ucb.el
@@ -1,6 +1,6 @@
-;;; chess-ucb.el --- Engine interface to the Novag Universal Chess Board
+;;; chess-ucb.el --- Engine interface to the Novag Universal Chess Board  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2002, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -35,8 +35,7 @@
 
 (defcustom chess-ucb-device "/dev/ttyS0"
   "The serial device used to talk to the Novag UCB."
-  :type 'file
-  :group 'chess-ucb)
+  :type 'file)
 
 (defvar chess-ucb-handling-event nil)
 
@@ -84,7 +83,7 @@
        nil))
 
      ((eq event 'undo)
-      (dotimes (i (car args))
+      (dotimes (_ (car args))
        (chess-engine-send nil "T\r\n"))
       ;; prevent us from handling the `undo' event which this triggers
       (let ((chess-engine-handling-event t))
diff --git a/chess-uci.el b/chess-uci.el
index e10e133..58f4095 100644
--- a/chess-uci.el
+++ b/chess-uci.el
@@ -1,4 +1,4 @@
-;;; chess-uci.el --- Common functions for the Universal Chess Interface 
protocol
+;;; chess-uci.el --- Common functions for the Universal Chess Interface 
protocol  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2014-2020  Free Software Foundation, Inc.
 
@@ -26,6 +26,7 @@
 ;;; Code:
 
 (eval-when-compile (require 'cl-lib))
+(require 'chess)                        ;For `chess-full-name'
 (require 'chess-common)
 (require 'chess-polyglot)
 
@@ -135,7 +136,7 @@ If conversion fails, this function fired an 'illegal event."
          (chess-engine-send nil (concat (chess-uci-position game) "go\n")))))
 
      (t
-      (apply 'chess-common-handler game event args)))))
+      (apply #'chess-common-handler game event args)))))
 
 (provide 'chess-uci)
 
diff --git a/chess-var.el b/chess-var.el
index 58c1c7b..5b7419a 100644
--- a/chess-var.el
+++ b/chess-var.el
@@ -1,6 +1,6 @@
-;;; chess-var.el --- Manipulate variations
+;;; chess-var.el --- Manipulate variations  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 ;; This 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
diff --git a/chess.el b/chess.el
index 96d23f9..f21da87 100644
--- a/chess.el
+++ b/chess.el
@@ -1,6 +1,6 @@
-;;; chess.el --- Play chess in GNU Emacs
+;;; chess.el --- Play chess in GNU Emacs  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2001, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2020 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Maintainer: Mario Lang <mlang@delysid.org>
@@ -97,8 +97,7 @@
   "Default display to be used when starting a chess session.
 A list indicates a series of alternatives if the first display is
 not available."
-  :type '(choice symbol (repeat symbol))
-  :group 'chess)
+  :type '(choice symbol (repeat symbol)))
 
 (defcustom chess-default-modules
   '((chess-sound chess-announce)
@@ -111,8 +110,7 @@ not available."
 A sublist indicates a series of alternatives, if the first is not
 available.
 These can do just about anything."
-  :type '(repeat (choice symbol (repeat symbol)))
-  :group 'chess)
+  :type '(repeat (choice symbol (repeat symbol))))
 
 (defcustom chess-default-engine
   '(chess-crafty
@@ -122,19 +120,16 @@ These can do just about anything."
   "Default engine to be used when starting a chess session.
 A list indicates a series of alternatives if the first engine is not
 available."
-  :type '(choice symbol (repeat symbol))
-  :group 'chess)
+  :type '(choice symbol (repeat symbol)))
 
 (defcustom chess-full-name (user-full-name)
   "The full name to use when playing chess."
-  :type 'string
-  :group 'chess)
+  :type 'string)
 
 (and (fboundp 'font-lock-add-keywords)
      (font-lock-add-keywords
       'emacs-lisp-mode
-      '(("(\\(chess-error\\)\\>"              1 font-lock-warning-face)
-       ("(\\(chess-with-current-buffer\\)\\>" 1 font-lock-keyword-face))))
+      '(("(\\(chess-error\\)\\>"              1 font-lock-warning-face))))
 
 (defun chess--create-display (module game my-color disable-popup)
   (let ((display (chess-display-create game module my-color)))
@@ -145,7 +140,7 @@ available."
       display)))
 
 (defun chess--create-engine (module game response-handler ctor-args)
-  (let ((engine (apply 'chess-engine-create module game
+  (let ((engine (apply #'chess-engine-create module game
                       response-handler ctor-args)))
     (when engine
       ;; for the sake of engines which are ready to play now, and
@@ -208,7 +203,7 @@ Otherwise use `chess-default-engine' to determine the 
engine."
                                        'chess--create-display
                                        game my-color disable-popup))
     (when (car objects)
-      (mapc 'chess-display-update objects)
+      (mapc #'chess-display-update objects)
       (chess-module-set-leader (car objects))
       (unless disable-popup
        (chess-display-popup (car objects))))



reply via email to

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