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

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

[elpa] externals/ergoemacs-mode 5450f4d: Address the many warnings emitt


From: Stefan Monnier
Subject: [elpa] externals/ergoemacs-mode 5450f4d: Address the many warnings emitted by the compiler
Date: Wed, 8 Aug 2018 12:22:56 -0400 (EDT)

branch: externals/ergoemacs-mode
commit 5450f4d057959406d6f7713657811642f732003c
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    Address the many warnings emitted by the compiler
    
    Move defvaraliases before the corresponding var declarations.
    Add `FIXME`s.
    Use lexical-binding also when calling `eval`.
    Adjust a few docstrings to use the imperative.
    Unquote lambdas.
    Remove unused vars.
    
    * ergoemacs-command-loop.el (ergoemacs-command-loop--spinner-display):
    Don't call `eval` when `cadr` does the trick.
    * ergoemacs-component.el (ergoemacs-component-struct--create-hooks):
    Only use `eval` for the part that needs it.
    * ergoemacs-functions.el (ergoemacs-emacs-exe): The invocation-name and
    invocation-directory functions are obsoleted in Emacs-27.
    (ergoemacs--default-dir-name): New function.
    (ergoemacs-shell-here-directory-change-hook, ergoemacs-shell-here)
    (ergoemacs-eshell-here): Use it.
    * ergoemacs-lib.el (ergoemacs-menu--filter): Use a closure instead of
    `(lambda ...).
    * ergoemacs-macros.el (ergoemacs-test-layout): Mark `macro` as
    a variable that might be left unused.
    (ergoemacs): Prefer `fboundp` tests; Simplify.
    * ergoemacs-mode.el (ergoemacs-load-aliases): Don't use `eval`.
    * ergoemacs-test.el: Use lexical-binding.  Use cl-lib.
    (ergoemacs-test-dired-sort-files): Reduce redundancy.
    Don't assume that two copies of the "same" function are `equal`.
    * ergoemacs-translate.el: Use cl-lib.
---
 ergoemacs-command-loop.el   |  30 +++---
 ergoemacs-component.el      |  33 +++---
 ergoemacs-functions.el      |  41 +++----
 ergoemacs-layouts.el        |  34 +++---
 ergoemacs-lib.el            |  52 ++++-----
 ergoemacs-macros.el         |  92 ++++++++--------
 ergoemacs-map-properties.el |  25 +++--
 ergoemacs-map.el            |  12 +--
 ergoemacs-mode.el           |  35 +++---
 ergoemacs-test.el           | 257 +++++++++++++++++++++-----------------------
 ergoemacs-theme-engine.el   |   3 +-
 ergoemacs-themes.el         |   3 +-
 ergoemacs-translate.el      |  14 +--
 13 files changed, 316 insertions(+), 315 deletions(-)

diff --git a/ergoemacs-command-loop.el b/ergoemacs-command-loop.el
index 9808459..7776f9e 100644
--- a/ergoemacs-command-loop.el
+++ b/ergoemacs-command-loop.el
@@ -106,11 +106,11 @@
   "Determines if mark was active before ergoemacs command loop.")
 
 
+(define-obsolete-variable-alias 'ergoemacs-universal-fns 
'ergoemacs-command-loop--universal-functions "Ergoemacs-v5.16")
+
 (defvar ergoemacs-command-loop--universal-functions '(universal-argument 
ergoemacs-universal-argument ergoemacs-command-loop--universal-argument)
   "List of `ergoemacs-mode' recognized functions.")
 
-(define-obsolete-variable-alias 'ergoemacs-universal-fns 
'ergoemacs-command-loop--universal-functions "Ergoemacs-v5.16")
-
 (defvar ergoemacs-command-loop--next-key-hash
   (let ((hash (make-hash-table)))
     (puthash 'event-apply-shift-modifier (list '(shift) :force) hash)
@@ -129,14 +129,14 @@
 
 (defvar ergoemacs-command-loop--help-last-key nil)
 
+(define-obsolete-variable-alias 'ergoemacs-read-key-delay 
'ergoemacs-command-loop--decode-event-delay "Ergoemacs-v5.16")
+
 (defvar ergoemacs-command-loop--decode-event-delay 0.01
   "Timeout for `ergoemacs-command-loop--decode-event'.
 This is to distinguish events in a terminal, like xterm.
 
 It needs to be less than `ergoemacs-command-loop-blink-rate'.")
 
-(define-obsolete-variable-alias 'ergoemacs-read-key-delay 
'ergoemacs-command-loop--decode-event-delay "Ergoemacs-v5.16")
-
 (defvar ergoemacs-command-loop--history nil
   "History of command loop locations.")
 
@@ -367,7 +367,7 @@ Ergoemacs-mode sets up: :ctl-to-alt :unchorded :normal."
                (next-key-is-control-meta (control meta))
                (next-key-is-meta-control (control meta))
                (next-key-is-quoted nil)))
-  (eval (macroexpand-all
+  (eval (macroexpand-all                ;FIXME: Why macroexpand-all?
          `(progn
             (defun ,(intern (concat "ergoemacs-command-loop--" (symbol-name 
(nth 0 arg)))) ()
               ,(format "Ergoemacs function to allow %s to be the emacs 
modifiers" (nth 1 arg))
@@ -382,7 +382,8 @@ Ergoemacs-mode sets up: :ctl-to-alt :unchorded :normal."
               (message "Dummy Function for %s" (ergoemacs :modifier-desc ,(nth 
1 arg))))
             (defalias ',(intern (concat "ergoemacs-read-key-force-" 
(symbol-name (nth 0 arg)))) ',(intern (concat "ergoemacs-command-loop--force-" 
(symbol-name (nth 0 arg)))))
             (puthash ',(intern (concat "ergoemacs-command-loop--force-" 
(symbol-name (nth 0 arg)))) '(,(nth 1 arg) :force) 
ergoemacs-command-loop--next-key-hash)
-            (puthash ',(intern (concat "ergoemacs-read-key-force-" 
(symbol-name (nth 0 arg)))) '(,(nth 1 arg) :force) 
ergoemacs-command-loop--next-key-hash)))))
+            (puthash ',(intern (concat "ergoemacs-read-key-force-" 
(symbol-name (nth 0 arg)))) '(,(nth 1 arg) :force) 
ergoemacs-command-loop--next-key-hash)))
+        t))
 
 (defvar ergoemacs-last-command-event nil
   "`ergoemacs-mode' command loop last read command.")
@@ -1556,10 +1557,10 @@ instead of `format'."
              (apply #'ergoemacs-command-loop--spinner-display args))
          (setq ergoemacs-command-loop--spinner-display :max)))
       (when (eq ergoemacs-message-level 
ergoemacs-command-loop--spinner-display)      
-       (let* ((string (or (and (listp string)
-                               (eq (car string) 'quote)
-                               (eval string))
-                          string))
+       (let* ((string (if (and (listp string)
+                               (eq (car string) 'quote))
+                          (cadr string)
+                        string))
               (rest (or (and (listp string)
                              (concat " " (apply #'format (apply 
#'ergoemacs-key-description--unicode-char string) args)))
                         (and (not string) "")
@@ -1568,9 +1569,12 @@ instead of `format'."
          (when (not ergoemacs-command-loop--spinner-list)
            (setq ergoemacs-command-loop--spinner-list (nth 1 (assoc 
ergoemacs-command-loop-spinner ergoemacs-command-loop-spinners))
                  ergoemacs-command-loop--spinner-i 0))
-         (ergoemacs-command-loop--message "%s%s" (nth (mod (setq 
ergoemacs-command-loop--spinner-i (+ 1 ergoemacs-command-loop--spinner-i))
-                                                           (length 
ergoemacs-command-loop--spinner-list)) ergoemacs-command-loop--spinner-list)
-                                          rest))))))
+         (ergoemacs-command-loop--message
+           "%s%s" (nth (mod (setq ergoemacs-command-loop--spinner-i
+                                  (+ 1 ergoemacs-command-loop--spinner-i))
+                           (length ergoemacs-command-loop--spinner-list))
+                       ergoemacs-command-loop--spinner-list)
+          rest))))))
 
 (defun ergoemacs-command-loop--spinner-end ()
   "Cancel the `ergoemacs-command-loop--spinner' timer."
diff --git a/ergoemacs-component.el b/ergoemacs-component.el
index 32bf32d..b49c4a5 100644
--- a/ergoemacs-component.el
+++ b/ergoemacs-component.el
@@ -1,6 +1,6 @@
 ;;; ergoemacs-component.el --- Ergoemacs map interface -*- lexical-binding: t 
-*-
 
-;; Copyright © 2013-2015  Free Software Foundation, Inc.
+;; Copyright © 2013-2018  Free Software Foundation, Inc.
 
 ;; Filename: ergoemacs-component.el
 ;; Description:
@@ -169,9 +169,9 @@ if the package is deferred."
           (unless (or defer (featurep package))
             (require package nil t))
           (when (and package (not (featurep package)) (numberp defer))
-            (run-with-idle-timer defer nil #'require package  ;; `(lambda()
-                           ;; (message ,(format "Defer: %s %s" package defer))
-                           ;; (require ,package)
+            (run-with-idle-timer defer nil #'require package  ;; (lambda()
+                           ;; (message (format "Defer: %s %s" package defer))
+                           ;; (require package)
                                  ;; (ergoemacs-component-struct--apply-inits))
                                 )
             )
@@ -432,7 +432,7 @@ Allows the component not to be calculated."
 (defvar ergoemacs-component-struct--define-key-temp-map nil)
 
 (defun ergoemacs-component-struct--define-key-get-def (def)
-  "Gets the `ergoemacs-mode' function definition for DEF."
+  "Get the `ergoemacs-mode' function definition for DEF."
   (let (tmp)
     (cond
      ((and (consp def) (memq (nth 0 def) '(kbd read-kbd-macro))
@@ -958,15 +958,19 @@ OBJ is the current object being modified, passed to
 
 (defvar ergoemacs-component-struct--create-hooks nil)
 (defun ergoemacs-component-struct--create-hooks (&optional obj)
-  "Gets a list of hooks that need to be defined eor OBJ."
+  "Get a list of hooks that need to be defined for OBJ."
   (dolist (hook (ergoemacs-component-struct--hooks obj))
-    (eval `(progn
-             (defun ,(intern (concat "ergoemacs--" (symbol-name hook))) ()
+    (let ((fun-name (intern (concat "ergoemacs--" (symbol-name hook)))))
+      ;; FIXME: Since Emacs-25 we could use a closure with a computed 
docstring,
+      ;; using (:documentation <exp>).
+      (eval `(defun ,fun-name ()
+               ;; FIXME: This describes a *function* (placed on a hook) and
+               ;; not a hook, AFAICT.
                ,(format "`ergoemacs-mode' hook for `%s'" (symbol-name hook))
                (ergoemacs-component-struct--composed-hook ',hook))
-             ;; (push )
-             (push ',hook ergoemacs-component-struct--create-hooks)
-             (add-hook ',hook #',(intern (concat "ergoemacs--" (symbol-name 
hook))))))))
+          t)
+      (push hook ergoemacs-component-struct--create-hooks)
+      (add-hook hook fun-name))))
 
 (defun ergoemacs-component-struct--rm-hooks ()
   "Remove hooks.
@@ -1112,7 +1116,10 @@ to prevent infinite recursion."
          ((and ensure (symbolp ensure))
           (ergoemacs-component-struct--ensure ensure defer autoloads))
         ((and (consp ensure) (memq (car ensure) '(memq member and or if when = 
string= not string< eq equal)))
-         (when (ignore-errors (eval ensure))
+          ;; FIXME: avoid `eval', e.g. by making
+          ;; ergoemacs-component-struct-ensure hold a function rather than
+          ;; an expression.
+         (when (ignore-errors (eval ensure t))
            (ergoemacs-component-struct--ensure package-name defer autoloads)))
          ((consp ensure)
           (dolist (elt ensure)
@@ -1192,7 +1199,7 @@ to prevent infinite recursion."
                           (nth 3 init))))
                  (t
                   (condition-case err
-                      (eval (nth 0 init))
+                      (eval (nth 0 init) t)
                     (error (progn
                             (ergoemacs-warn "%s while evaluating %s" err (nth 
0 init))
                             (debug err))))
diff --git a/ergoemacs-functions.el b/ergoemacs-functions.el
index 437c5d6..235f852 100644
--- a/ergoemacs-functions.el
+++ b/ergoemacs-functions.el
@@ -356,8 +356,12 @@ If TERMINAL is non-nil, run the terminal version"
 
 (defun ergoemacs-emacs-exe ()
   "Get the Emacs executable for testing purposes."
-  (let* ((emacs-exe (invocation-name))
-         (emacs-dir (invocation-directory))
+  (let* ((emacs-exe (if (fboundp 'invocation-name) (invocation-name)
+                      (if (boundp 'invocation-name) invocation-name)))
+         (emacs-dir (if (fboundp 'invocation-directory) (invocation-directory)
+                      (if (boundp 'invocation-directory) 
invocation-directory)))
+         ;; FIXME: The quotes can't be quite right; better use something like
+         ;; `shell-quote-argument'.
          (full-exe (concat "\"" (expand-file-name emacs-exe emacs-dir)
                            "\"")))
     full-exe))
@@ -1310,8 +1314,8 @@ Based on the value of `major-mode' and
 (defun ergoemacs-camelize-method (s &optional char)
   "Convert under_score string S to CamelCase string."
   (mapconcat 'identity (ergoemacs-mapcar-head
-                        '(lambda (word) (downcase word))
-                        '(lambda (word) (capitalize (downcase word)))
+                        #'downcase
+                        (lambda (word) (capitalize (downcase word)))
                         (split-string s (or char "_"))) ""))
 
 (defun ergoemacs-camel-bounds (camel-case-chars)
@@ -1581,7 +1585,7 @@ by `ergoemacs-maximum-number-of-files-to-open'.
                     (y-or-n-p (format "Open more than %s files? " 
ergoemacs-maximum-number-of-file-to-open)))))
     (when do-it
       (cond
-       ((eq system-type 'windows-nt)
+       ((fboundp 'w32-shell-execute)
         (dolist (f-path my-file-list)
           (w32-shell-execute
            "open" (replace-regexp-in-string "/" "\\" f-path t t))))
@@ -1597,13 +1601,14 @@ by `ergoemacs-maximum-number-of-files-to-open'.
   "Show current file in desktop (OS's file manager)."
   (interactive)
   (cond
-   ((eq system-type 'windows-nt)
+   ((fboundp 'w32-shell-execute)
     (w32-shell-execute "explore" (replace-regexp-in-string "/" "\\" 
default-directory t t)))
    ((eq system-type 'darwin) (shell-command "open ."))
    ((eq system-type 'gnu/linux)
     (let ((process-connection-type nil))
       (start-process "" nil "xdg-open" ".")))))
 
+;; FIXME: Why default to (cons nil nil) instead of just nil?
 (defvar ergoemacs-recently-closed-buffers (cons nil nil) "A list of recently 
closed buffers. The max number to track is controlled by the variable 
`ergoemacs-recently-closed-buffers-max'.")
 (defvar ergoemacs-recently-closed-buffers-max 30 "The maximum length for 
`ergoemacs-recently-closed-buffers'.")
 
@@ -1787,8 +1792,8 @@ true; otherwise it is an emacs buffer."
 
 ;;; helm-mode functions
 
-;;; This comes from https://github.com/emacs-helm/helm/pull/327, but
-;;; was reverted so it is added back here.
+;; This comes from https://github.com/emacs-helm/helm/pull/327, but
+;; was reverted so it is added back here.
 (defcustom ergoemacs-helm-ff-ido-style-backspace t
   "Use backspace to navigate with `helm-find-files'.
 You will have to restart Emacs or reeval `helm-find-files-map'
@@ -2419,14 +2424,18 @@ Guillemet -> quote, degree -> @, s-zed -> ss, 
upside-down ?! -> ?!."
 
 ;; Shell handling
 
+(defun ergoemacs--default-dir-name ()
+  (let ((afn (abbreviate-file-name default-directory)))
+    (if (fboundp 'w32-long-file-name)
+        (w32-long-file-name afn) ;; Fix case issues
+      afn)))
+
 (defun ergoemacs-shell-here-directory-change-hook ()
   "Renames buffer to reflect directory name."
   (let ((nbn (concat (cond
-                      ((eq major-mode 'eshell-mode) "*eshell@")
+                      ((derived-mode-p 'eshell-mode) "*eshell@")
                       (t (replace-regexp-in-string "\\(address@hidden@]\\).*" 
"\\1" (buffer-name) t)))
-                     (if (eq system-type 'windows-nt)
-                         (w32-long-file-name (abbreviate-file-name 
default-directory)) ;; Fix case issues
-                       (abbreviate-file-name default-directory)) "*")))
+                     (ergoemacs--default-dir-name) "*")))
     (unless (string= nbn (buffer-name))
       (setq nbn (generate-new-buffer-name nbn))
       (rename-buffer nbn))))
@@ -2462,9 +2471,7 @@ Sends shell prompt string to process, then turns on
   (interactive)
   (let* ((shell (or shell-program 'shell))
          (buf-prefix (or buffer-prefix (symbol-name shell)))
-         (name (concat "*" buf-prefix "@" (if (eq system-type 'windows-nt)
-                                              (w32-long-file-name 
(abbreviate-file-name default-directory)) ;; Fix case issues
-                                            (abbreviate-file-name 
default-directory)) "*")))
+         (name (concat "*" buf-prefix "@" (ergoemacs--default-dir-name) "*")))
     (set-buffer (get-buffer-create name))
     (funcall shell name)))
 
@@ -2486,9 +2493,7 @@ Sends shell prompt string to process, then turns on
   "Run/switch to an `eshell' process in the current directory"
   (interactive)
   (let* ((eshell-buffer-name
-          (concat "*eshell@" (if (eq system-type 'windows-nt)
-                                 (w32-long-file-name (abbreviate-file-name 
default-directory)) ;; Fix case issues
-                               (abbreviate-file-name default-directory)) "*"))
+          (concat "*eshell@" (ergoemacs--default-dir-name) "*"))
          (eshell-exists-p (get-buffer eshell-buffer-name)))
     (if eshell-exists-p
         (switch-to-buffer eshell-exists-p)
diff --git a/ergoemacs-layouts.el b/ergoemacs-layouts.el
index 3aa0b95..372a780 100644
--- a/ergoemacs-layouts.el
+++ b/ergoemacs-layouts.el
@@ -1,6 +1,6 @@
 ;;; ergoemacs-layouts.el --- keyboard layouts for ErgoEmacs -* 
lexical-binding: t -*-
 
-;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2018 Free Software Foundation, Inc.
 
 ;; Maintainer: Matthew L. Fidler
 ;; Keywords: convenience
@@ -44,6 +44,8 @@
 
 ;; From Baptiste Fouques
 ;; changed to bepo because it breaks how I run things (unfortunately)...
+(defvaralias 'ergoemacs-layout-bépo 'ergoemacs-layout-bepo)
+
 (defvar ergoemacs-layout-bepo
   '("" "$" "\"" "«" "»" "(" ")" "@" "+" "-" "/" "*" "=" "%" ""
     "" ""  "b" "é" "p" "o" "è" "^" "v" "d" "l" "j" "z" "w" ""
@@ -70,8 +72,6 @@
     "" ">"  "W" "X" "C" "V" "B" "N" "?" "." "/" "+" "" "" "")
   "Belgian AZERTY.")
 
-(defvaralias 'ergoemacs-layout-bépo 'ergoemacs-layout-bepo)
-
 (defvar ergoemacs-layout-colemak
   '("" "`" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" "-" "=" ""
     "" ""  "q" "w" "f" "p" "g" "j" "l" "u" "y" ";" "[" "]" "\\"
@@ -97,6 +97,8 @@
   "Danish layout.")
 
 ;; From Thomas Rikl
+(defvaralias 'ergoemacs-layout-ge 'ergoemacs-layout-de)
+
 (defvar ergoemacs-layout-de
   '("" "" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" "ß" "" ""
     "" ""  "q" "w" "e" "r" "t" "z" "u" "i" "o" "p" "ü" "+" ""
@@ -121,6 +123,8 @@
     "" "" "K" "Y" "Ö" "Ä" "Q" "J" "G" "W" "V" "Z" "" "" "")
   "German BU-TECK Layout.  URL `http://www.adnw.de'.")
 
+(defvaralias 'ergoemacs-layout-us_dvorak 'ergoemacs-layout-dv)
+
 (defvar ergoemacs-layout-dv
   '("" "`" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" "[" "]" ""
     "" ""  "'" "," "." "p" "y" "f" "g" "c" "r" "l" "/" "=" "\\"
@@ -157,6 +161,8 @@
     "" ""  "Z" "Ĉ" "C" "V" "B" "N" "M" ";" ":" "?" "" "" "")
   "Esperanto (displaced semicolon and quote, obsolete) layout.")
 
+(defvaralias 'ergoemacs-layout-sp 'ergoemacs-layout-es)
+
 (defvar ergoemacs-layout-es
   '("" "°" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" "'" "¡" ""
     "" ""  "q" "w" "e" "r" "t" "y" "u" "i" "o" "p" "`" "+" ""
@@ -230,8 +236,6 @@
     "" "|"  ":" "Q" "J" "K" "X" "B" "M" "W" "V" "Z" "" "" "")
   "UK Dvorak layout.")
 
-(defvaralias 'ergoemacs-layout-ge 'ergoemacs-layout-de)
-
 (defvar ergoemacs-layout-it
   '("" "\\" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" "'" "¡" ""
     "" ""  "q" "w" "e" "r" "t" "y" "u" "i" "o" "p" "è" "+" ""
@@ -292,8 +296,6 @@
     "" "»"  "Y" "Ç" "J" "B" "K" "Q" "V" "G" "F" "Z" "" "" "")
   "PT Nativo layout URL 
`http://xahlee.info/kbd/pt-nativo_keyboard_layout.html'.")
 
-(defvaralias 'ergoemacs-layout-sp 'ergoemacs-layout-es)
-
 (defvar ergoemacs-layout-sw
   '("" "½" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" "+" "’" ""
     "" ""  "q" "w" "e" "r" "t" "y" "u" "i" "o" "p" "å" "\"" ""
@@ -318,8 +320,6 @@
     "" ""  "Z" "X" "C" "V" "B" "N" "M" "<" ">" "?" "" "" "")
   "US English QWERTY layout.")
 
-(defvaralias 'ergoemacs-layout-us_dvorak 'ergoemacs-layout-dv)
-
 (defvar ergoemacs-layout-workman
   '("" "`" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" "-" "=" ""
     "" ""  "q" "d" "r" "w" "b" "j" "f" "u" "p" ";" "[" "]" "\\"
@@ -344,6 +344,8 @@
     "" ""  "Z" "X" "M" "C" "V" "K" "L" "<" ">" "?" "" "" "")
   "US Workman layout.  URL `http://www.workmanlayout.com/blog/'.")
 
+(defvaralias 'ergoemacs-layout-jcuken 'ergoemacs-layout-ru)
+
 (defvar ergoemacs-layout-ru
   '("" "" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" "-" "=" "\\"
     "" ""  "й" "ц" "у" "к" "е" "н" "г" "ш" "щ" "з" "х" "ъ" "" 
@@ -356,8 +358,6 @@
     "" "" "Я" "Ч" "С" "М" "И" "Т" "Ь" "Б" "Ю" "," "" "" "")
   "Russian/Cryllic jcuken layout.")
 
-(defvaralias 'ergoemacs-layout-jcuken 'ergoemacs-layout-ru)
-
 (require 'help-mode)
 (defvar quail-keyboard-layout-alist)
 (defvar ergoemacs-keyboard-layout)
@@ -395,11 +395,9 @@ If LAYOUT is unspecified, use `ergoemacs-keyboard-layout'."
                  (alias (condition-case nil
                             (indirect-variable variable)
                           (error variable)))
-                 (is-alias nil)
                  (doc nil))
             (setq doc (or (documentation-property variable 
'variable-documentation)
                           (progn
-                            (setq is-alias t)
                             (documentation-property alias 
'variable-documentation))))
             `(,variable
               menu-item ,(concat lay " - " doc)
@@ -541,12 +539,12 @@ Otherwise, `ergoemacs-mode' will try to adjust based on 
your layout."
 
 when BASE is non-nil, the regular expression shows the regular
 expression matching the base layout."
-  (let ((reg (regexp-opt (ergoemacs-layouts--list t) t))
-        (f1 "[\"`']\\(%s\\)[\"`']")
+  (let ((f1 "[\"`']\\(%s\\)[\"`']")
         (f2 "Base Layout: \\(%s\\)"))
     (format (cond
              (base f2)
-             (t f1)) (regexp-opt (ergoemacs-layouts--list) t))))
+             (t f1))
+            (regexp-opt (ergoemacs-layouts--list) t))))
 
 (defun ergoemacs-layout-describe (&optional layout)
   "Display the full documentation of an `ergoemacs-mode' LAYOUT.
@@ -560,14 +558,10 @@ LAYOUT can be either a symbol or string."
          (s (intern (concat "ergoemacs-layout-" layout)))
          (sv (and (boundp s) (symbol-value s)))
          (el-file (find-lisp-object-file-name s 'defvar))
-         (alias (condition-case nil
-                    (indirect-variable s)
-                  (error s)))
          (doc (or (documentation-property
                    s 'variable-documentation)
                   (documentation-property
                    s 'variable-documentation)))
-         pt
          png svg)
     (unless (featurep 'quail)
       (require 'quail))
diff --git a/ergoemacs-lib.el b/ergoemacs-lib.el
index ba74d4f..fffb58e 100644
--- a/ergoemacs-lib.el
+++ b/ergoemacs-lib.el
@@ -26,6 +26,7 @@
 ;; (require 'guide-key nil t)
 
 (require 'cl-lib)
+(require 'find-func)
 
 (eval-when-compile
   (require 'ergoemacs-macros))
@@ -478,7 +479,7 @@ All other modes are assumed to be minor modes or 
unimportant.
   "Put `ergoemacs-mode' key bindings on menus."
   (let ((menu (or (and (not fn) menu)
                   (funcall fn menu)))
-        tmp tmp2)
+        tmp2)
     ;; (when fn
     ;;   (message "%s:\n\t%s" fn menu))
     (if (not (ergoemacs-keymapp menu) )
@@ -502,36 +503,37 @@ All other modes are assumed to be minor modes or 
unimportant.
              ((and (ergoemacs-keymapp keymap) (ergoemacs-keymapp (cdr (cdr 
item))))
               ;; JIT processing
               `(,(nth 0 item) menu-item ,(nth 1 item) ,(cdr (cdr item))
-                :filter (lambda(bind) (ergoemacs-menu--filter bind nil 
',keymap))))
+                :filter ,(lambda(bind) (ergoemacs-menu--filter bind nil 
keymap))))
              ((ergoemacs-keymapp (cdr (cdr item)))
               ;; JIT processing
               `(,(nth 0 item) menu-item ,(nth 1 item) ,(cdr (cdr item))
                 :filter ergoemacs-menu--filter))
              ((ergoemacs-keymapp (car (cdr (cdr (cdr item)))))
               ;; (message "3:%s..." (substring (format "%s" item) 0 (min 
(length (format "%s" item)) 60)))
-              (if (setq tmp (plist-get item :filter))
-                  (mapcar
-                   (lambda(elt)
-                     (cond
-                      ((eq elt :filter)
-                       (setq tmp2 t)
-                       :filter)
-                      ((not tmp2)
-                       elt)
-                      ((eq elt 'ergoemacs-menu--filter)
-                       (setq tmp2 nil)
-                       'ergoemacs-menu--filter)
-                      ((ignore-errors
-                         (and (consp elt)
-                              (eq (nth 0 elt) 'lambda)
-                              (eq (nth 0 (nth 2 elt)) 
'ergoemacs-menu--filter)))
-                       (setq tmp2 nil)
-                       elt)
-                      (t
-                       (setq tmp2 nil)
-                       `(lambda(bind) (ergoemacs-menu--filter bind ',tmp 
',keymap)))))
-                   item)
-                `(,@item :filter ergoemacs-menu--filter)))
+              (let ((tmp (plist-get item :filter)))
+                (if tmp
+                    (mapcar
+                     (lambda(elt)
+                       (cond
+                        ((eq elt :filter)
+                         (setq tmp2 t)
+                         :filter)
+                        ((not tmp2)
+                         elt)
+                        ((eq elt 'ergoemacs-menu--filter)
+                         (setq tmp2 nil)
+                         'ergoemacs-menu--filter)
+                        ((ignore-errors
+                           (and (consp elt)
+                                (eq (nth 0 elt) 'lambda)
+                                (eq (nth 0 (nth 2 elt)) 
'ergoemacs-menu--filter)))
+                         (setq tmp2 nil)
+                         elt)
+                        (t
+                         (setq tmp2 nil)
+                         (lambda(bind) (ergoemacs-menu--filter bind tmp 
keymap)))))
+                     item)
+                  `(,@item :filter ergoemacs-menu--filter))))
              ((setq key (ergoemacs-menu--filter-key-menu-item item keymap))
               (append item (cons :keys (cons key nil))))
              (t item))))
diff --git a/ergoemacs-macros.el b/ergoemacs-macros.el
index a23e9fa..2ac7d68 100644
--- a/ergoemacs-macros.el
+++ b/ergoemacs-macros.el
@@ -176,7 +176,7 @@ distinguish from the ASCII equivalents:
                `(ergoemacs-component-struct--define-key 'global-map 
,(ergoemacs-theme-component--parse-key (nth 1 elt)) nil))
               ((ignore-errors (eq (nth 0 elt) 'set))
                ;; Currently doesn't support (setq a b c d ), but it should.
-               `(ergoemacs-component-struct--set ,(nth 1 elt) '(lambda() ,(nth 
2 elt))))
+               `(ergoemacs-component-struct--set ,(nth 1 elt) (lambda() ,(nth 
2 elt))))
               ((ignore-errors (eq (nth 0 elt) 'add-hook))
                `(ergoemacs-component-struct--set ,(nth 1 elt) ,(nth 2 elt)
                                                  (list t ,(nth 3 elt) ,(nth 4 
elt))))
@@ -190,11 +190,11 @@ distinguish from the ASCII equivalents:
                      (ret '()))
                  (pop tmp-elt)
                  (while (and (= 0 (mod (length tmp-elt) 2)) (< 0 (length 
tmp-elt)))
-                   (push `(ergoemacs-component-struct--set (quote ,(pop 
tmp-elt)) '(lambda() ,(pop tmp-elt))) ret))
+                   (push `(ergoemacs-component-struct--set (quote ,(pop 
tmp-elt)) (lambda() ,(pop tmp-elt))) ret))
                  (push 'progn ret)
                  ret))
               ((ignore-errors (string-match "-mode$" (symbol-name (nth 0 
elt))))
-               `(ergoemacs-component-struct--set (quote ,(nth 0 elt)) 
'(lambda() ,(nth 1 elt))))
+               `(ergoemacs-component-struct--set (quote ,(nth 0 elt)) 
(lambda() ,(nth 1 elt))))
               ((ignore-errors (eq (nth 0 elt) 'global-set-key))
                `(ergoemacs-component-struct--define-key 'global-map 
,(ergoemacs-theme-component--parse-key (nth 1 elt))
                                                         
,(ergoemacs-theme-component--parse-fun (nth 2 elt))))
@@ -223,7 +223,7 @@ distinguish from the ASCII equivalents:
                (let ((tmp (ergoemacs-theme-component--parse (cdr (cdr elt)) 
t)))
                  `(ergoemacs-component-struct--with-hook
                    ',(nth 1 elt) ',(nth 0 tmp)
-                   '(lambda () ,@(nth 1 tmp)))))
+                   (lambda () ,@(nth 1 tmp)))))
               ((ignore-errors (memq (nth 0 elt) '(dolist when unless if)))
                `(,(car elt) ,(car (cdr elt)) ,@(macroexpand-all 
(ergoemacs-theme-component--parse-remaining (cdr (cdr elt))))))
               ((ignore-errors (memq (nth 0 elt) '(ergoemacs-advice defadvice)))
@@ -423,11 +423,15 @@ on the definition:
 :file -- File where the component was defined."
   (declare (doc-string 2)
            (indent 2))
-  (let ((kb (make-symbol "body-and-plist")))
-    (setq kb (ergoemacs-theme-component--parse body-and-plist))
+  (let ((kb (ergoemacs-theme-component--parse body-and-plist)))
     `(let ((plist ',(nth 0 kb))
-           (fun '(lambda () ,@(nth 1 kb))))
+           (fun (lambda () ,@(nth 1 kb))))
+       (defvar ergoemacs-component-hash)
        (unless (boundp 'ergoemacs-component-hash)
+         ;; FIXME: This places the "official one-and-only defvar" arbitrarily
+         ;; at the first file that runs ergoemacs-theme-component.  Better 
would
+         ;; be to move this defvar outside of the macro, e.g. to
+         ;; ergoemacs-component.el.
          (defvar ergoemacs-component-hash (make-hash-table :test 'equal)
            "Hash of ergoemacs theme components"))
        (defvar ergoemacs-mode-reset)
@@ -472,7 +476,7 @@ with :ergoemacs-require set to nil."
       (setq plist (plist-put plist :ergoemacs-require name)))
     (unless (plist-get plist :package-name)
       (setq plist (plist-put plist :package-name name)))
-    (macroexpand-all
+    (macroexpand-all                    ;FIXME: Why?
      `(ergoemacs-theme-component ,name ()
         ,doc
         ,@plist
@@ -538,6 +542,7 @@ with :ergoemacs-require set to t."
                   `(edmacro-parse-keys ,(plist-get plist :macro) t)))
             (old-ergoemacs-keyboard-layout ergoemacs-keyboard-layout)
             (reset-ergoemacs nil))
+        (ignore macro)
         (setq ergoemacs-theme ,(plist-get plist ':current-theme)
               ergoemacs-keyboard-layout ,(or (plist-get plist ':layout) "us")
               ergoemacs-command-loop-type nil
@@ -670,7 +675,7 @@ The rest of the body is an `ergoemacs-theme-component' named
         (tmp (make-symbol "tmp"))
         (based-on (make-symbol "based-on")))
     (setq kb (ergoemacs-theme-component--parse-keys-and-body body-and-plist))
-    (setq tmp (eval (plist-get (nth 0 kb) :components)))
+    (setq tmp (eval (plist-get (nth 0 kb) :components) t))
     (push (intern (concat (plist-get (nth 0 kb) :name) "-theme")) tmp)
     (setq tmp (plist-put (nth 0 kb) :components tmp))
     (setq based-on (plist-get (nth 0 kb) :based-on))
@@ -682,7 +687,7 @@ The rest of the body is an `ergoemacs-theme-component' named
     ;; (message "Last Based-On: %s" based-on)
     (dolist (comp '(:optional-on :optional-off :options-menu))
       (setq tmp (plist-put (nth 0 kb) comp
-                           (eval (plist-get (nth 0 kb) comp)))))
+                           (eval (plist-get (nth 0 kb) comp) t))))
     (macroexpand-all
      `(let* ((based-on (ergoemacs-gethash ,based-on ergoemacs-theme-hash))
              (curr-plist ',tmp)
@@ -849,74 +854,69 @@ When arg1 can be a property.  The following properties 
are supported:
         (arg3 (nth 2 args))
         (arg4 (nth 3 args)))
     (cond
-     ((and arg1 (symbolp arg1) (eq arg1 :reset-prefix))
-      (if (>= 25 emacs-major-version)
+     ((eq arg1 :reset-prefix)
+      (if (fboundp 'prefix-command-preserve-state)
          `(prefix-command-preserve-state)
        `(reset-this-command-lengths)))
-     ((and arg1 (symbolp arg1) (eq arg1 :set-selection))
-      (if (>= 25 emacs-major-version)
-          `(gui-set-selection ,@(cdr args))
-        `(x-set-selection ,@(cdr args))))
-     ((and arg1 (symbolp arg1) (eq arg1 :set-selection))
-      (if (>= 25 emacs-major-version)
+     ((eq arg1 :get-selection)
+      (if (fboundp 'gui-set-selection)
+          `(gui-get-selection ,@(cdr args))
+        `(x-get-selection ,@(cdr args))))
+     ((eq arg1 :set-selection)
+      (if (fboundp 'gui-set-selection)
          `(gui-set-selection ,@(cdr args))
        `(x-set-selection ,@(cdr args))))
-     ((and arg1 (symbolp arg1) (eq arg1 :width))
+     ((eq arg1 :width)
       `(ergoemacs-mode--eval-width ,arg2))
-     ((and arg1 (symbolp arg1) (eq arg1 :mode-if) arg2)
+     ((and (eq arg1 :mode-if) arg2)
       `(ergoemacs-mode-line--if ,arg2 ,arg3 ,arg4))
-     ((and arg1 (symbolp arg1) (memq arg1 '(:sep :separator)))
+     ((memq arg1 '(:sep :separator))
       `(ergoemacs-mode-line--sep ,@(cdr args)))
-     ((and arg1 (symbolp arg1) (memq arg1 '(:sep-right :separator-right)))
+     ((memq arg1 '(:sep-right :separator-right))
       `(ergoemacs-mode-line--sep 'right ,@(cdr args)))
-     ((and arg1 (symbolp arg1) (memq arg1 '(:sep-left :separator-left)))
+     ((memq arg1 '(:sep-left :separator-left))
       `(ergoemacs-mode-line--sep 'left ,@(cdr args)))
-     ((and arg1 (symbolp arg1) (eq arg1 :custom-p) (symbolp arg2))
+     ((and (eq arg1 :custom-p) (symbolp arg2))
       (if (fboundp 'custom-variable-p)
           `(custom-variable-p ,arg2)
         `(user-variable-p ,arg2)))
-     ((and arg1 (symbolp arg1) (eq arg1 :apply-key) arg2 arg3)
+     ((and (eq arg1 :apply-key) arg2 arg3)
       `(ergoemacs-translate--apply-key ,@(cdr args)))
-     ((and arg1 (symbolp arg1) (eq arg1 :spinner) arg2)
+     ((and (eq arg1 :spinner) arg2)
       `(ergoemacs-command-loop--spinner-display ,@(cdr args)))
-     ((and arg1 (symbolp arg1) (eq arg1 :define-key) arg2 arg3)
+     ((and (eq arg1 :define-key) arg2 arg3)
       `(ergoemacs-translate--define-key ,arg2 ,arg3 ,arg4))
-     ((and arg1 (symbolp arg1) (eq arg1 :ignore-global-changes-p) (not arg2) 
(not arg3))
+     ((and (eq arg1 :ignore-global-changes-p) (not arg2) (not arg3))
       `(ergoemacs-map-properties--ignore-global-changes-p))
-     ((and arg1 (symbolp arg1) (eq arg1 :user-before) (not arg2) (not arg3))
+     ((and (eq arg1 :user-before) (not arg2) (not arg3))
       `(ergoemacs-map-properties--before-ergoemacs))
-     ((and arg1 (symbolp arg1) (eq arg1 :user-after) (not arg2) (not arg3))
+     ((and (eq arg1 :user-after) (not arg2) (not arg3))
       `(ergoemacs-map-properties--before-ergoemacs t))
-     ((and arg1 (symbolp arg1) (eq arg1 :modal-p))
+     ((eq arg1 :modal-p)
       `(ergoemacs-command-loop--modal-p))
-     ((and arg1 (symbolp arg1) (eq arg1 :combine) arg2 arg3)
+     ((and (eq arg1 :combine) arg2 arg3)
       `(ergoemacs-command-loop--combine ,arg2 ,arg3))
-     ((and arg1 (symbolp arg1) (memq arg1 '(:unicode-or-alt :unicode)))
+     ((memq arg1 '(:unicode-or-alt :unicode))
       `(ergoemacs-key-description--unicode-char ,@(cdr args)))
-     ((and arg1 (symbolp arg1) (eq arg1 :modifier-desc)
-           arg2)
+     ((and (eq arg1 :modifier-desc) arg2)
       `(mapconcat #'ergoemacs-key-description--modifier ,arg2 ""))
-     ((and arg1 (symbolp arg1) (eq arg1 :current-version))
+     ((eq arg1 :current-version)
       `(ergoemacs-theme--get-version))
-     ((and arg1 (symbolp arg1) (eq arg1 :current-theme))
+     ((eq arg1 :current-theme)
       `(or (and ergoemacs-theme (stringp ergoemacs-theme) ergoemacs-theme)
            (and ergoemacs-theme (symbolp ergoemacs-theme) (symbol-name 
ergoemacs-theme))
            "standard"))
-     ((and arg1 (symbolp arg1)
-           (memq arg1 ergoemacs--map-properties-list))
+     ((memq arg1 ergoemacs--map-properties-list)
       `(,(intern (format "ergoemacs-map-properties--%s" (substring 
(symbol-name arg1) 1))) ,@(cdr args)))
 
-     ((and arg1 arg2 (eq arg2 :new-command) arg3)
+     ((and arg1 (eq arg2 :new-command) arg3)
       ;; (ergoemacs arg1 :new-command 'next-line)
       `(ergoemacs-map-properties--new-command ,arg1 ,arg3))
-     ((and arg1 (symbolp arg1)
-           (eq arg1 :global-map))
+     ((eq arg1 :global-map)
       `(ergoemacs-map-properties--original (or ergoemacs-saved-global-map 
global-map)))
-     ((and arg1 (symbolp arg1)
-           (eq arg1 :revert-global-map))
+     ((eq arg1 :revert-global-map)
       `(ergoemacs-map-properties--original (or ergoemacs-saved-global-map 
global-map) :setcdr))
-     ((and arg1 (symbolp arg1)
-           (eq arg1 :remap) arg2)
+     ((and (eq arg1 :remap) arg2)
       `(progn
          (setq this-command (or (key-binding (vector 'ergoemacs-remap ,arg2) t 
nil (point)) ,arg2))
          (call-interactively (or (key-binding (vector 'ergoemacs-remap ,arg2) 
t nil (point)) ,arg2))))
diff --git a/ergoemacs-map-properties.el b/ergoemacs-map-properties.el
index 248a033..0799e4c 100644
--- a/ergoemacs-map-properties.el
+++ b/ergoemacs-map-properties.el
@@ -1,6 +1,6 @@
 ;;; ergoemacs-map-properties.el --- Ergoemacs map interface -*- 
lexical-binding: t -*-
 
-;; Copyright © 2013-2015  Free Software Foundation, Inc.
+;; Copyright © 2013-2018  Free Software Foundation, Inc.
 
 ;; Filename: ergoemacs-map-properties.el
 ;; Description:
@@ -467,9 +467,9 @@ This tests if HOOK is:
                                            (stringp tmp)
                                            (string-match-p  "^Ergoemacs 
protect local" tmp)))
                         fn
-                      `(lambda() "Ergoemacs protect local"
-                         (ergoemacs-map-properties--protect-local ',hook ',fn)
-                         (funcall ',fn))))
+                      (lambda() "Ergoemacs protect local"
+                        (ergoemacs-map-properties--protect-local hook fn)
+                        (funcall fn))))
                   hook-value))
                 (t ;; For now do nothing
                  hook-value))))))))
@@ -558,7 +558,7 @@ These keymaps are saved in 
`ergoemacs-map-properties--hook-map-hash'."
        (unless (equal icicle-search-key-prefix "\M-s\M-s")
          (ergoemacs :define-key new-map icicle-search-key-prefix 
icicle-search-map))
        (when (and (boundp 'icicle-top-level-key-bindings) (custom-variable-p 
'icicle-top-level-key-bindings))
-         (setq standard (eval (car (get 'icicle-top-level-key-bindings 
'standard-value))))
+         (setq standard (eval (car (get 'icicle-top-level-key-bindings 
'standard-value)) t))
          ;; After determine if anything has changed...
          ;; Lifted partially from icicles
          (dolist (key-def  icicle-top-level-key-bindings)
@@ -566,7 +566,7 @@ These keymaps are saved in 
`ergoemacs-map-properties--hook-map-hash'."
              (setq key        (car key-def)
                    command    (cadr key-def)
                    condition  (car (cddr key-def)))
-             (when (eval condition)
+             (when (eval condition t)
                (if (symbolp key)
                    (icicle-remap key command new-map (current-global-map))
                  (ergoemacs :define-key new-map key command))))))
@@ -914,9 +914,11 @@ STRUCT is the keymap structure for the current map."
        (map-key
        (error "Will not label a composed map's members to %s" map-key))
        (t
-       (let ((parent (keymap-parent keymap))
+       (let (;; (parent (keymap-parent keymap))
              (breadcrumb-base ergoemacs-map--breadcrumb)
              (struct (or struct (ergoemacs-gethash map-key 
ergoemacs-map-properties--key-struct)))
+              ;; FIXME: This `struct' refers to the arg rather than to the var
+              ;; we just defined on the previous line!!
              (comp (plist-get struct :composed))
              (comp-list (ergoemacs-map-properties--composed-list keymap))
              from-prop-p
@@ -953,7 +955,6 @@ STRUCT is the keymap structure for the current map."
             old-plist
             (breadcrumb-base ergoemacs-map--breadcrumb)
             (parent (keymap-parent map))
-            (struct (or struct (ergoemacs-gethash map-key 
ergoemacs-map-properties--key-struct)))
             label tmp1 tmp2)
        (unwind-protect
            (progn
@@ -984,7 +985,10 @@ STRUCT is the keymap structure for the current map."
              (setq old-plist (list :map-key map-key))
              (unless indirect-p
                (push (cons 'ergoemacs-labeled
-                           `(lambda() (interactive) ',old-plist)) map))
+                            ;; FIXME: These functions have no effect at all, so
+                            ;; I strongly doubt they need to be interactive!
+                           (lambda() (interactive) old-plist))
+                      map))
              (unless indirect-p
                (when label
                  (push label map))
@@ -1004,7 +1008,8 @@ STRUCT is the keymap structure for the current map."
        (if indirect-p
            (puthash keymap old-plist 
ergoemacs-map-properties--indirect-keymaps)
          (unless (ignore-errors (ergoemacs-setcdr keymap (cdr map)))
-           (cl-pushnew (cons old-plist (cdr keymap)) 
ergoemacs-map-properties--const-keymaps)))
+           (cl-pushnew (cons old-plist (cdr keymap))
+                        ergoemacs-map-properties--const-keymaps)))
        map)))))
 
 (defun ergoemacs-map-properties--empty-p (keymap &optional labeled-is-keymap-p)
diff --git a/ergoemacs-map.el b/ergoemacs-map.el
index 1c02a02..7ec5209 100644
--- a/ergoemacs-map.el
+++ b/ergoemacs-map.el
@@ -1,6 +1,6 @@
 ;;; ergoemacs-map.el --- Ergoemacs map interface -*- lexical-binding: t -*-
 
-;; Copyright © 2013-2015  Free Software Foundation, Inc.
+;; Copyright © 2013-2018  Free Software Foundation, Inc.
 
 ;; Filename: ergoemacs-map.el
 ;; Description:
@@ -35,6 +35,7 @@
 (require 'cl-lib)
 (eval-when-compile
   (require 'ergoemacs-macros))
+(require 'ergoemacs-component)
 
 (defvar cl-struct-ergoemacs-component-struct-tags)
 (defvar ergoemacs-breadcrumb-hash)
@@ -59,7 +60,6 @@
 (defvar ess-language)
 (defvar ergoemacs-mode--fast-p)
 (defvar ergoemacs-remap-ignore)
-(defvar ergoemacs-component-struct--composed-hook-minibuffer)
 
 
 (declare-function ergoemacs-timing-- "ergoemacs-mode")
@@ -71,14 +71,6 @@
 (declare-function ergoemacs-command-loop--modal "ergoemacs-command-loop")
 (declare-function ergoemacs-command-loop--spinner-display 
"ergoemacs-command-loop")
 
-(declare-function ergoemacs-component-struct--create-hooks 
"ergoemacs-component")
-(declare-function ergoemacs-component-struct--get "ergoemacs-component")
-(declare-function ergoemacs-component-struct--lookup-hash 
"ergoemacs-component")
-(declare-function ergoemacs-component-struct--lookup-list 
"ergoemacs-component")
-(declare-function ergoemacs-component-struct--minor-mode-map-alist 
"ergoemacs-component")
-(declare-function ergoemacs-component-struct--rm-hooks "ergoemacs-component")
-(declare-function ergoemacs-component-struct--translated-list 
"ergoemacs-component")
-
 (declare-function ergoemacs-command-loop--minibuffer-supported-p 
"ergoemacs-command-loop")
 
 (declare-function ergoemacs-theme--get-version "ergoemacs-theme-engine")
diff --git a/ergoemacs-mode.el b/ergoemacs-mode.el
index fd4ff97..4db418e 100644
--- a/ergoemacs-mode.el
+++ b/ergoemacs-mode.el
@@ -709,8 +709,8 @@ SYMBOL is the symbol to set, NEW-VALUE is it's value."
   "Remove `ergoemacs-mode' overriding keymap `ergoemacs-override-keymap'."
   (remove-hook 'emulation-mode-map-alists 'ergoemacs-override-alist))
 
-(add-hook 'ergoemacs-mode-startup-hook 'ergoemacs-setup-override-keymap)
-(add-hook 'ergoemacs-mode-shudown-hook 'ergoemacs-setup-override-keymap)
+(add-hook 'ergoemacs-mode-startup-hook #'ergoemacs-setup-override-keymap)
+(add-hook 'ergoemacs-mode-shudown-hook #'ergoemacs-setup-override-keymap)
 
 
 
@@ -766,7 +766,7 @@ not be useful.  However instead of using
 (defun ergoemacs-load-aliases ()
   "Load aliases defined in `ergoemacs-aliases'."
   (dolist (x ergoemacs-aliases)
-    (eval (macroexpand `(defalias ',(nth 0 x) ',(nth 1 x))))))
+    (defalias (nth 0 x) (nth 1 x))))
 
 (autoload 'ergoemacs-component "ergoemacs-macros")
 (autoload 'ergoemacs-theme-component "ergoemacs-macros")
@@ -829,6 +829,8 @@ Valid values are:
   "Display Options for `ergoemacs-mode'."
   :group 'ergoemacs-mode)
 
+(define-obsolete-variable-alias 'ergoemacs-use-unicode-char 
'ergoemacs-display-unicode-characters "Ergoemacs-v5.16")
+
 (defcustom ergoemacs-display-unicode-characters t
   "Use unicode characters when available."
   :type 'boolean
@@ -836,7 +838,8 @@ Valid values are:
   :initialize #'custom-initialize-default
   :group 'ergoemacs-display)
 
-(define-obsolete-variable-alias 'ergoemacs-use-unicode-char 
'ergoemacs-display-unicode-characters "Ergoemacs-v5.16")
+(define-obsolete-variable-alias 'ergoemacs-use-ergoemacs-key-descriptions 
'ergoemacs-display-ergoemacs-key-descriptions "Ergoemacs-v5.16")
+
 
 (defcustom ergoemacs-display-ergoemacs-key-descriptions t
   "Use ergoemacs key descriptions (Alt+)."
@@ -845,7 +848,7 @@ Valid values are:
   :initialize #'custom-initialize-default
   :group 'ergoemacs-display)
 
-(define-obsolete-variable-alias 'ergoemacs-use-ergoemacs-key-descriptions 
'ergoemacs-display-ergoemacs-key-descriptions "Ergoemacs-v5.16")
+(define-obsolete-variable-alias 'ergoemacs-use-unicode-brackets 
'ergoemacs-display-use-unicode-brackets-around-keys "Ergoemacs-v5.16")
 
 
 (defcustom ergoemacs-display-use-unicode-brackets-around-keys t
@@ -855,8 +858,7 @@ Valid values are:
   :initialize #'custom-initialize-default
   :group 'ergoemacs-display)
 
-(define-obsolete-variable-alias 'ergoemacs-use-unicode-brackets 
'ergoemacs-display-use-unicode-brackets-around-keys "Ergoemacs-v5.16")
-
+(define-obsolete-variable-alias 'ergoemacs-use-small-symbols 
'ergoemacs-display-small-symbols-for-key-modifiers "Ergoemacs-v5.16")
 
 (defcustom ergoemacs-display-small-symbols-for-key-modifiers nil
   "Use small symbols to represent alt+ ctl+ on windows/linux."
@@ -865,7 +867,7 @@ Valid values are:
   :initialize #'custom-initialize-default
   :group 'ergoemacs-display)
 
-(define-obsolete-variable-alias 'ergoemacs-use-small-symbols 
'ergoemacs-display-small-symbols-for-key-modifiers "Ergoemacs-v5.16")
+(define-obsolete-variable-alias 'ergoemacs-capitalize-keys 
'ergoemacs-display-capitalize-keys "Ergoemacs-v5.16")
 
 (defcustom ergoemacs-display-capitalize-keys 'with-modifiers
   "Capitalize keys like Ctrl+C.
@@ -878,8 +880,10 @@ Valid values are:
   :initialize #'custom-initialize-default
   :group 'ergoemacs-display)
 
-(define-obsolete-variable-alias 'ergoemacs-capitalize-keys 
'ergoemacs-display-capitalize-keys "Ergoemacs-v5.16")
+(define-obsolete-variable-alias 'ergoemacs-pretty-key-use-face 
'ergoemacs-display-key-use-face-p "Ergoemacs-v5.16")
 
+;; FIXME: The suffix "-p" stands for "predicate", i.e. a *function*
+;; returning a boolean value.  Shouldn't be used for variables.
 (defcustom ergoemacs-display-key-use-face-p t
   "Use a button face for keys."
   :type 'boolean
@@ -887,9 +891,6 @@ Valid values are:
   :initialize #'custom-initialize-default
   :group 'ergoemacs-display)
 
-(define-obsolete-variable-alias 'ergoemacs-pretty-key-use-face 
'ergoemacs-display-key-use-face-p "Ergoemacs-v5.16")
-
-
 (defface ergoemacs-display-key-face
   '((t :inverse-video t :box (:line-width 1 :style released-button) :weight 
bold))
   "Button Face for an `ergoemacs-mode' pretty key."
@@ -946,12 +947,14 @@ Valid values are:
           (const :tag "No cursor" nil))
   :group 'ergoemacs-command-loop)
 
+(define-obsolete-variable-alias 'ergoemacs-read-blink-timeout 
'ergoemacs-command-loop-blink-rate "Ergoemacs-v5.16")
+
 (defcustom ergoemacs-command-loop-blink-rate 0.4
   "Rate that the ergoemacs-command loop cursor blinks."
   :type 'number
   :group 'ergoemacs-command-loop)
 
-(define-obsolete-variable-alias 'ergoemacs-read-blink-timeout 
'ergoemacs-command-loop-blink-rate "Ergoemacs-v5.16")
+(define-obsolete-variable-alias 'ergoemacs-read-swaps 
'ergoemacs-command-loop-swap-translation "Ergoemacs-v5.16")
 
 (defcustom ergoemacs-command-loop-swap-translation
   '(((:normal :normal) :unchorded-ctl)
@@ -970,8 +973,6 @@ Valid values are:
            (sexp :tag "Translated Type")))
   :group 'ergoemacs-command-loop)
 
-(define-obsolete-variable-alias 'ergoemacs-read-swaps 
'ergoemacs-command-loop-swap-translation "Ergoemacs-v5.16")
-
 (defcustom ergoemacs-command-loop-type :full
   "Type of `ergoemacs-mode' command loop."
   :type '(choice
@@ -1015,6 +1016,8 @@ Valid values are:
   :type '(repeat string)
   :group 'ergoemacs-modal)
 
+(define-obsolete-variable-alias 'ergoemacs-default-cursor 
'ergoemacs-default-cursor-color "Ergoemacs-v5.16")
+
 (defcustom ergoemacs-default-cursor-color nil
   "Default cursor color.
 
@@ -1025,8 +1028,6 @@ color.  Otherwise this will be nil A color string as 
passed to
                  (color :tag "Color"))
   :group 'ergoemacs-modal)
 
-(define-obsolete-variable-alias 'ergoemacs-default-cursor 
'ergoemacs-default-cursor-color "Ergoemacs-v5.16")
-
 (defcustom ergoemacs-modal-emacs-state-modes
   '(archive-mode
     bbdb-mode
diff --git a/ergoemacs-test.el b/ergoemacs-test.el
index b0680dd..787e457 100644
--- a/ergoemacs-test.el
+++ b/ergoemacs-test.el
@@ -1,6 +1,6 @@
-;;; ergoemacs-test.el --- tests for ErgoEmacs issues
+;;; ergoemacs-test.el --- tests for ErgoEmacs issues  -*- lexical-binding:t -*-
 
-;; Copyright © 2013-2015 Free Software Foundation, Inc.
+;; Copyright © 2013-2018 Free Software Foundation, Inc.
 
 ;; Maintainer: Matthew L. Fidler
 ;; Keywords: convenience
@@ -28,9 +28,10 @@
 
 ;;; Code:
 
-(eval-when-compile 
-  (require 'cl)
+(eval-when-compile
+  (require 'cl-lib)
   (require 'ergoemacs-macros))
+(require 'ergoemacs-component)          ;For ergoemacs-component-struct-plist
 
 (declare-function ergoemacs-translate--keymap "ergoemacs-translate")
 (declare-function ergoemacs-mode-reset "ergoemacs-mode")
@@ -41,6 +42,13 @@
 (defvar ergoemacs-keyboard-layout)
 (defvar ergoemacs-theme)
 (defvar ergoemacs-command-loop-type)
+(defvar ergoemacs-ctl-c-or-ctl-x-delay)
+(defvar ergoemacs-handle-ctl-c-or-ctl-x)
+(defvar ergoemacs-end-of-comment-line)
+(defvar ergoemacs-back-to-indentation)
+(defvar ergoemacs-read-input-keys)
+(defvar ergoemacs-is-user-defined-map-change-p)
+(defvar ergoemacs-use-function-remapping)
 (defvar ergoemacs-dir)
 (defvar ergoemacs-mode)
 (defvar dired-sort-map)
@@ -88,6 +96,7 @@
 ;;; Not sure why `cl-gensym' is called, probably from `ert'/`elp'?
 ;; Suppress: "the function `cl-gensym' might not be defined at
 ;; runtime" warning.
+;; FIXME: The warning doesn't seem to appear any more in recent Emacsen anyway.
 (autoload 'cl-gensym "cl-macs.el")
 (defvar ergoemacs-test-lorem-ipsum
   "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed
@@ -172,11 +181,9 @@ sunt in culpa qui officia deserunt mollit anim id est 
laborum.")
 (defun ergoemacs-test ()
   "Test ergoemacs issues."
   (interactive)
-  (let ((ret t)
-        (test))
-    (elp-instrument-package "ergoemacs-")
-    (ert '(and "^ergoemacs-test-" (not (tag :require-input))))
-    (call-interactively 'elp-results)))
+  (elp-instrument-package "ergoemacs-")
+  (ert '(and "^ergoemacs-test-" (not (tag :require-input))))
+  (call-interactively 'elp-results))
 
 ;; Test isearch
 
@@ -355,22 +362,22 @@ Tests issue #347"
 (ert-deftest ergoemacs-test-shift-select-subword ()
   "Test for mark working with shift-selection of `subword-forward'."
   :tags '(:shift-select)
-  (let (ret)
-    (ergoemacs-test-layout
-     :macro "M-Y M-x"
-     :theme "reduction"
-     :layout "colemak"
-     (save-excursion
-       (switch-to-buffer (get-buffer-create "*ergoemacs-test*"))
-       (delete-region (point-min) (point-max))
-       (insert ergoemacs-test-lorem-ipsum)
-       (subword-mode 1)
-       (goto-char (point-max))
-       (beginning-of-line)
-       (execute-kbd-macro macro)
-       (when (looking-at " in culpa qui")
-         (setq ret t))
-       (kill-buffer (current-buffer))))))
+  (ergoemacs-test-layout
+   :macro "M-Y M-x"
+   :theme "reduction"
+   :layout "colemak"
+   (save-excursion
+     (switch-to-buffer (get-buffer-create "*ergoemacs-test*"))
+     (delete-region (point-min) (point-max))
+     (insert ergoemacs-test-lorem-ipsum)
+     (subword-mode 1)
+     (goto-char (point-max))
+     (beginning-of-line)
+     (execute-kbd-macro macro)
+     (when (looking-at " in culpa qui")
+       ;; (setq ret t)
+       )
+     (kill-buffer (current-buffer)))))
 
 ;;; Copy/Paste
 
@@ -378,8 +385,7 @@ Tests issue #347"
 (ert-deftest ergoemacs-test-copy-paste-issue-184 ()
   "Issue #184; Not replace the \"selected all\" by paste."
   :tags '(:copy :interactive)
-  (let ((ret t)
-        (ergoemacs-handle-ctl-c-or-ctl-x 'both))
+  (let ((ergoemacs-handle-ctl-c-or-ctl-x 'both))
     (ergoemacs-test-layout
      :macro "C-v"
      (save-excursion
@@ -574,7 +580,7 @@ not using cua or cutting line. I think kill-region is what 
is meant."
 (ert-deftest ergoemacs-test-function-M-e-only-one-char-issue-306 ()
   "Tests Issue #306."
   :tags '(:calc)
-  (let ((ergoemacs-test-fn t)
+  (let (;; (ergoemacs-test-fn t)
         (ergoemacs-read-input-keys nil))
     (ergoemacs-test-layout
      :layout "us"
@@ -587,7 +593,7 @@ not using cua or cutting line. I think kill-region is what 
is meant."
        (fundamental-mode)
        (should (or (eq (key-binding (kbd "M-e")) 'backward-kill-word)
                    (eq (key-binding (kbd "M-e")) (command-remapping 
'backward-kill-word (point)))))
-       (setq ergoemacs-test-fn nil)
+       ;; (setq ergoemacs-test-fn nil)
        (goto-char (point-max))
        (execute-kbd-macro macro)
        (should (string= "Lorem ipsum dolor sit amet, consectetur adipisicing 
elit, sed
@@ -640,23 +646,22 @@ Grep finished (matches found) at Fri Aug 22 08:30:37
   (ergoemacs-test-layout
    :layout "colemak"
    :macro "M-m"
-   (let (ret)
-     (save-excursion
-       (switch-to-buffer (get-buffer-create "*ergoemacs-test*"))
-       (delete-region (point-min) (point-max))
-       (insert "abc\n* TODO Fix org C-a issue")
-       (org-mode)
-       (goto-char (point-max))
-       (execute-kbd-macro macro)
-       (ignore-errors
-         (should (string= (buffer-substring (point) (point-at-eol))
-                          "Fix org C-a issue")))
-       (kill-buffer (current-buffer))))))
+   (save-excursion
+     (switch-to-buffer (get-buffer-create "*ergoemacs-test*"))
+     (delete-region (point-min) (point-max))
+     (insert "abc\n* TODO Fix org C-a issue")
+     (org-mode)
+     (goto-char (point-max))
+     (execute-kbd-macro macro)
+     (ignore-errors
+       (should (string= (buffer-substring (point) (point-at-eol))
+                        "Fix org C-a issue")))
+     (kill-buffer (current-buffer)))))
 
 (ert-deftest ergoemacs-test-org-respect-keys-issue-304 ()
   "Tests Issue #304.
 `org-mode' should respect the keys used."
-  (let ((ergoemacs-test-fn t))
+  (let () ;; (ergoemacs-test-fn t)
     (ergoemacs-test-layout
      :layout "us"
      :theme "standard"
@@ -678,7 +683,7 @@ Grep finished (matches found) at Fri Aug 22 08:30:37
 (ert-deftest ergoemacs-test-calc-300 ()
   "Test Calc undo"
   :tags '(:calc :interactive)
-  (let ((ergoemacs-test-fn t))
+  (let () ;; (ergoemacs-test-fn t)
     (ergoemacs-test-layout
      :theme "reduction"
      :layout "colemak"
@@ -690,7 +695,7 @@ Grep finished (matches found) at Fri Aug 22 08:30:37
 (ert-deftest ergoemacs-test-calc-fries-ergoemacs-mode ()
   "After calc has entered some numbers, it fries ergoemacs-mode."
   :tags '(:calc :interactive)
-  (let ((ergoemacs-test-fn t))
+  (let () ;; (ergoemacs-test-fn t)
     (ergoemacs-test-layout
      :theme "reduction"
      :layout "colemak"
@@ -716,24 +721,22 @@ Test next and prior translation."
 
 (ert-deftest ergoemacs-test-modal-alt-mode-horizontal-position ()
   "Tests Issue #213"
-  (let (ret)
-    (ergoemacs-test-layout
-     :layout "colemak"
-     :macro "i u u"
-     (save-excursion
-       (switch-to-buffer (get-buffer-create "*ergoemacs-test*"))
-       (delete-region (point-min) (point-max))
-       (insert ergoemacs-test-lorem-ipsum)
-       (goto-char (point-max))
-       (beginning-of-line)
-       (ergoemacs-translate--get :unchorded-alt)
-       (ergoemacs-unchorded-alt-modal)
-       (execute-kbd-macro macro)
-       (looking-at ".*? ")
-       (ignore-errors (should (string= (match-string 0) "eprehenderit ")))
-       (ergoemacs-unchorded-alt-modal)
-       (kill-buffer (current-buffer))))))
-
+  (ergoemacs-test-layout
+   :layout "colemak"
+   :macro "i u u"
+   (save-excursion
+     (switch-to-buffer (get-buffer-create "*ergoemacs-test*"))
+     (delete-region (point-min) (point-max))
+     (insert ergoemacs-test-lorem-ipsum)
+     (goto-char (point-max))
+     (beginning-of-line)
+     (ergoemacs-translate--get :unchorded-alt)
+     (ergoemacs-unchorded-alt-modal)
+     (execute-kbd-macro macro)
+     (looking-at ".*? ")
+     (ignore-errors (should (string= (match-string 0) "eprehenderit ")))
+     (ergoemacs-unchorded-alt-modal)
+     (kill-buffer (current-buffer)))))
 
 
 ;;; Command Loop
@@ -915,7 +918,7 @@ Should test issue #142"
          (w-file (expand-file-name "global-test" ergoemacs-dir))
          (temp-file (make-temp-file "ergoemacs-test" nil ".el")))
     (setq sk
-          (format "(%s '(lambda() (interactive) (with-temp-file \"%s\" (insert 
\"Ok\"))))"
+          (format "(%s (lambda() (interactive) (with-temp-file \"%s\" (insert 
\"Ok\"))))"
                   (cond
                    ((eq ergoemacs 'define-key)
                     (format "define-key global-map (kbd \"%s\") " test-key))
@@ -1377,9 +1380,9 @@ Should test issue #142"
 
 (let ((ergoemacs-is-user-defined-map-change-p t))
   (add-hook 'ergoemacs-test-major-mode-hook
-            '(lambda()
-               (interactive)
-               (define-key ergoemacs-test-major-mode-map (kbd "C-w") 
'ergoemacs-close-current-buffer))))
+            (lambda()
+              (interactive)
+              (define-key ergoemacs-test-major-mode-map (kbd "C-w") 
'ergoemacs-close-current-buffer))))
 
 (ert-deftest ergoemacs-test-issue-349 ()
   "Unbind <f6>"
@@ -1416,8 +1419,7 @@ Should test issue #142"
 (ert-deftest ergoemacs-test-ignore-ctl-w ()
   "Keep user-defined C-w in major-mode `ergoemacs-test-major-mode'.
 Part of addressing Issue #147."
-  (let (ret
-        (ergoemacs-use-function-remapping t))
+  (let ((ergoemacs-use-function-remapping t))
     (with-temp-buffer
       (ergoemacs-test-major-mode)
       (when (not (current-local-map))
@@ -1432,8 +1434,7 @@ Part of addressing Issue #147."
 Part of addressing Issue #147."
   :tags '(:interactive)
   (ergoemacs-test-layout
-   (let (ret
-         (ergoemacs-use-function-remapping t))
+   (let ((ergoemacs-use-function-remapping t))
      (with-temp-buffer
        (ergoemacs-test-major-mode)
        (when (not (current-local-map))
@@ -1450,8 +1451,7 @@ Tests Issue #372."
   (ergoemacs-test-layout
    :layout "us"
    :theme "reduction"
-   (let (ret
-         (ergoemacs-use-function-remapping t))
+   (let ((ergoemacs-use-function-remapping t))
      (with-temp-buffer
        (ergoemacs-test-major-mode)
        (when (not (current-local-map))
@@ -1461,54 +1461,40 @@ Tests Issue #372."
 
 (ert-deftest ergoemacs-test-dired-sort-files ()
   "Test Issue #340"
-  (add-hook 'dired-mode-hook (lambda ()
-                               (interactive)
-                               (make-local-variable  'dired-sort-map)
-                               (setq dired-sort-map (make-sparse-keymap))
-                               (define-key dired-mode-map "s" dired-sort-map)
-                               (define-key dired-sort-map "s"
-                                 '(lambda () "sort by Size"
-                                    (interactive) (dired-sort-other (concat 
dired-listing-switches "-AlS --si --time-style long-iso"))))
-                               (define-key dired-sort-map "."
-                                 '(lambda () "sort by eXtension"
-                                    (interactive) (dired-sort-other (concat 
dired-listing-switches "X"))))
-                               (define-key dired-sort-map "t"
-                                 '(lambda () "sort by Time"
-                                    (interactive) (dired-sort-other (concat 
dired-listing-switches "t"))))
-                               (define-key dired-sort-map "n"
-                                 '(lambda () "sort by Name"
-                                    (interactive) (dired-sort-other (concat 
dired-listing-switches ""))))
-                               ;; Use "|", not "r".
-                               (define-key dired-mode-map "|" 
'dired-sort-menu-toggle-reverse)
-                               ))
-  (dired ergoemacs-dir)
-  (ergoemacs-map--modify-active)
-  (should (equal (key-binding (kbd "s s")) '(lambda () "sort by Size" 
(interactive) (dired-sort-other (concat dired-listing-switches "-AlS --si 
--time-style long-iso")))))
-  (should (equal (key-binding (kbd "s .")) '(lambda () "sort by eXtension" 
(interactive) (dired-sort-other (concat dired-listing-switches "X")))))
-  (should (equal (key-binding (kbd "s t")) '(lambda () "sort by Time" 
(interactive) (dired-sort-other (concat dired-listing-switches "t")))))
-  (should (equal (key-binding (kbd "s n")) '(lambda () "sort by Name" 
(interactive) (dired-sort-other (concat dired-listing-switches "")))))
-  (should (equal (key-binding (kbd "|")) 'dired-sort-menu-toggle-reverse))
-  (kill-buffer (current-buffer))
-  (remove-hook 'dired-mode-hook (lambda ()
-    (interactive)
-    (make-local-variable  'dired-sort-map)
-    (setq dired-sort-map (make-sparse-keymap))
-    (define-key dired-mode-map "s" dired-sort-map)
-    (define-key dired-sort-map "s"
-      '(lambda () "sort by Size"
-         (interactive) (dired-sort-other (concat dired-listing-switches "-AlS 
--si --time-style long-iso"))))
-    (define-key dired-sort-map "."
-      '(lambda () "sort by eXtension"
-         (interactive) (dired-sort-other (concat dired-listing-switches "X"))))
-    (define-key dired-sort-map "t"
-      '(lambda () "sort by Time"
-         (interactive) (dired-sort-other (concat dired-listing-switches "t"))))
-    (define-key dired-sort-map "n"
-      '(lambda () "sort by Name"
-         (interactive) (dired-sort-other (concat dired-listing-switches ""))))
-    ;; Use "|", not "r".
-    (define-key dired-mode-map "|" 'dired-sort-menu-toggle-reverse)
-    )))
+  (let* ((ds-map (make-sparse-keymap))
+         (dh-fun
+          (lambda ()
+            (set (make-local-variable  'dired-sort-map) ds-map)
+            ;; FIXME: This modifies the global dired-mode-map!!
+            (define-key dired-mode-map "s" dired-sort-map)
+            ;; Use "|", not "r".
+            ;; FIXME: This modifies the global dired-mode-map!!
+            (define-key dired-mode-map "|" 'dired-sort-menu-toggle-reverse)))
+         (funs `(("s" .
+                  ,(lambda () "sort by Size"
+                     ;; FIXME: Does the body of those functions matter?
+                     (interactive) (dired-sort-other (concat 
dired-listing-switches "-AlS --si --time-style long-iso"))))
+                 ("." .
+                  ,(lambda () "sort by eXtension"
+                     (interactive) (dired-sort-other (concat 
dired-listing-switches "X"))))
+                 ("t" .
+                  ,(lambda () "sort by Time"
+                     (interactive) (dired-sort-other (concat 
dired-listing-switches "t"))))
+                 ("n" .
+                  ,(lambda () "sort by Name"
+                     (interactive) (dired-sort-other (concat 
dired-listing-switches "")))))))
+    (dolist (f funs)
+      (define-key ds-map (car f) (cdr f)))
+    (add-hook 'dired-mode-hook dh-fun)
+    (dired ergoemacs-dir)
+    (ergoemacs-map--modify-active)
+    (should (equal (key-binding (kbd "s s")) (cdr (assoc "s" funs))))
+    (should (equal (key-binding (kbd "s .")) (cdr (assoc "." funs))))
+    (should (equal (key-binding (kbd "s t")) (cdr (assoc "t" funs))))
+    (should (equal (key-binding (kbd "s n")) (cdr (assoc "n" funs))))
+    (should (equal (key-binding (kbd "|")) 'dired-sort-menu-toggle-reverse))
+    (kill-buffer (current-buffer))
+    (remove-hook 'dired-mode-hook dh-fun)))
 
 
 (ert-deftest ergoemacs-test-quail-translations ()
@@ -1552,7 +1538,7 @@ Tests Issue #372."
   
   (should (string= (key-description (kbd "M-TAB")) (key-description (vector 
(ergoemacs-translate--event-mods (elt (read-kbd-macro "C-TAB" t) 0) 
:ctl-to-alt)))))
 
-  (letf (((symbol-function 'display-graphic-p) (lambda(&rest _ignore) t)))
+  (cl-letf (((symbol-function 'display-graphic-p) (lambda(&rest _ignore) t)))
     ;; Test M-i -> ^i -> TAB
     (should (string= "<C-i>" (key-description (vector 
(ergoemacs-translate--event-mods (elt (read-kbd-macro "M-i" t) 0) 
:ctl-to-alt)))))
     
@@ -1562,7 +1548,7 @@ Tests Issue #372."
     ;; Test M-m -> ^m -> RET
     (should (string= "<C-m>" (key-description (vector 
(ergoemacs-translate--event-mods (elt (read-kbd-macro "M-m" t) 0) 
:ctl-to-alt))))))
 
-  (letf (((symbol-function 'display-graphic-p) (lambda(&rest _ignore) nil)))
+  (cl-letf (((symbol-function 'display-graphic-p) (lambda(&rest _ignore) nil)))
     ;; Test M-i -> ^i -> TAB
     (should (string= "TAB" (key-description (vector 
(ergoemacs-translate--event-mods (elt (read-kbd-macro "M-i" t) 0) 
:ctl-to-alt)))))
     
@@ -1724,7 +1710,7 @@ hash appropriaetly."
   "Test M-s is switch pane."
   :tags '(:require-input :interactive)
   (let* ((emacs-exe (ergoemacs-emacs-exe))
-         (w-file (expand-file-name "global-test" ergoemacs-dir))
+         ;; (w-file (expand-file-name "global-test" ergoemacs-dir))
          (temp-file (make-temp-file "ergoemacs-test" nil ".el")))
     (with-temp-file temp-file
       (insert "(add-to-list 'load-path \"" (expand-file-name 
(file-name-directory (locate-library "ergoemacs-mode"))) "\")"
@@ -1778,9 +1764,11 @@ hash appropriaetly."
              0.05 nil
              (lambda()
                (throw 'found-key (mapcar (lambda(key) (if (consp key)
-                                                           (key-binding (eval 
key))
-                                                         (key-binding key))) 
',keys)))))
-        ,minibuffer-call) nil))
+                                                           (key-binding (eval 
key t))
+                                                    (key-binding key)))
+                                          ',keys)))))
+        ,minibuffer-call)
+       nil))
 
 (ert-deftest ergoemacs-test-icy-407-minibuffer ()
   "Test minibuffer keybindings for `icy-mode'.
@@ -1790,15 +1778,14 @@ M-s   = `ergoemacs-move-cursor-next-pane'
 M-r   = `kill-word'"
   :tags '(:icy-mode :interactive)
   (icy-mode 1)
-  (let ((keys))
-(ergoemacs-test-layout
- :layout "us"
- :theme "standard"
- (should (equal (ergoemacs-minibuffer-key-bindings
-                (call-interactively 'icicle-execute-extended-command)
-                [f11] [f12] (read-kbd-macro "M-o") (read-kbd-macro "M-s") 
(read-kbd-macro "M-r"))
-               '(previous-history-element next-history-element forward-word 
ergoemacs-move-cursor-next-pane kill-word)))))
-(icy-mode -1))
+  (ergoemacs-test-layout
+   :layout "us"
+   :theme "standard"
+   (should (equal (ergoemacs-minibuffer-key-bindings
+                  (call-interactively 'icicle-execute-extended-command)
+                  [f11] [f12] (kbd "M-o") (kbd "M-s") (kbd "M-r"))
+                 '(previous-history-element next-history-element forward-word 
ergoemacs-move-cursor-next-pane kill-word))))
+  (icy-mode -1))
 
 (provide 'ergoemacs-test)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/ergoemacs-theme-engine.el b/ergoemacs-theme-engine.el
index 053c73e..1f3d846 100644
--- a/ergoemacs-theme-engine.el
+++ b/ergoemacs-theme-engine.el
@@ -52,7 +52,8 @@
 
 (eval-when-compile
   (require 'ergoemacs-macros)
-  (require 'cl))
+  (require 'cl-lib))
+(require 'find-func)
 
 (defvar ergoemacs-mode)
 (defvar ergoemacs-require)
diff --git a/ergoemacs-themes.el b/ergoemacs-themes.el
index f831f4d..7644c2b 100644
--- a/ergoemacs-themes.el
+++ b/ergoemacs-themes.el
@@ -29,8 +29,9 @@
 
 ;;; Code:
 (eval-when-compile
-  (require 'cl)
+  (require 'cl-lib)
   (require 'ergoemacs-macros))
+(require 'ergoemacs-component)
 
 (declare-function ergoemacs-theme-component--create-component 
"ergoemacs-theme")
 (declare-function ergoemacs-component-struct--create-component 
"ergoemacs-component")
diff --git a/ergoemacs-translate.el b/ergoemacs-translate.el
index e97d857..3961507 100644
--- a/ergoemacs-translate.el
+++ b/ergoemacs-translate.el
@@ -51,7 +51,7 @@
 ;;; Code:
 
 (eval-when-compile 
-  (require 'cl)
+  (require 'cl-lib)
   (require 'ergoemacs-macros))
 
 
@@ -644,7 +644,7 @@ For keys, the list consists of:
       (push key ret))
     ret))
 
-(defstruct ergoemacs-translation-struct
+(cl-defstruct ergoemacs-translation-struct
   "A basic ergoemacs translation structure."
   (name "default-name")
   (translation '())
@@ -691,14 +691,16 @@ When NAME is a symbol, setup the translation function for 
the symbol."
        ergoemacs-translation-hash)
     (let ((name-str (and (symbolp name) (substring (symbol-name name) 1))))
       (eval
-       (macroexpand
+       (macroexpand                     ;FIXME: Why?
        `(progn
           (defvar ,(intern (concat "ergoemacs-translate--" name-str "-map")) 
(make-sparse-keymap)
             ,(concat "Ergoemacs local map for translation :"
                      name-str
                      " while completing a key sequence."))
           (define-obsolete-variable-alias ',(intern (concat "ergoemacs-" 
name-str "-translation-local-map"))
-             ',(intern (concat "ergoemacs-translate--" name-str "-map"))))))
+             ',(intern (concat "ergoemacs-translate--" name-str "-map"))
+             "Ergoemacs-v5.16")))
+       t)
       (ergoemacs-map-properties--label-map (intern (concat 
"ergoemacs-translate--" name-str "-map")) t)
       (ergoemacs (symbol-value (intern (concat "ergoemacs-translate--" 
name-str "-map"))) :only-local-modifications-p t)
       ;; 
@@ -709,8 +711,8 @@ When NAME is a symbol, setup the translation function for 
the symbol."
        (fset (intern (concat "ergoemacs-" name-str type))
              'ergoemacs-translate--setup-command-loop)
        (when (string= type "-universal-argument")
-         (pushnew (intern (concat "ergoemacs-" name-str type)) 
ergoemacs-command-loop--universal-functions)
-         (pushnew (intern (concat "ergoemacs-translate--" name-str type)) 
ergoemacs-command-loop--universal-functions))))))
+         (cl-pushnew (intern (concat "ergoemacs-" name-str type)) 
ergoemacs-command-loop--universal-functions)
+         (cl-pushnew (intern (concat "ergoemacs-translate--" name-str type)) 
ergoemacs-command-loop--universal-functions))))))
 
 (add-hook 'ergoemacs-mode-intialize-hook 
#'ergoemacs-translate--setup-translation)
 



reply via email to

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