[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] scratch/ergoemacs-mode d597b824df: Remove some dead code and addr
From: |
Stefan Monnier |
Subject: |
[elpa] scratch/ergoemacs-mode d597b824df: Remove some dead code and address various compiler warnings |
Date: |
Mon, 16 Oct 2023 09:10:33 -0400 (EDT) |
branch: scratch/ergoemacs-mode
commit d597b824df100783243765c91365764e34fb6189
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
Remove some dead code and address various compiler warnings
The original goal was to remove the remaining use of `defadvice` (in
`ergoemacs-advice`) but that proved to be dead code, and then
I checked the resulting compiler warnings, etc...
Prefer #' to quote function names. Remove dummy `unwind-protect`
without any unwind forms. Avoid deprecated `point-at-bol/eol`.
Fix some uses of ' in docstrings.
Also fix a misunderstanding: `inhibit-point-motion-hooks` is not used
by the command loop's point adjustment code, it's only used by the
low-level point-motion hooks (those implemented deep inside the C code
of `goto-char` and friends, and which have been deprecated since
Emacs-25 because running arbitrary C code from within `goto-char` is
too problematic).
* ergoemacs-macros.el (ergoemacs-save-buffer-state): Make it an
obsolete alias of `with-silent-modifications`. Update all callers.
(ergoemacs-translation): Simplify `kb` initialization and remove
unneeded `progn`.
(ergoemacs-advice): Delete unused macro.
* ergoemacs-theme-engine.el (ergoemacs-describe-key): Fix typo.
* ergoemacs-layouts.el: Fix typo in the `lexical-binding` cookie.
(ergoemacs-layout--regexp): Remove unused var `reg`.
(ergoemacs-layout-describe): Remove unused vars `alias` and `pt`.
* ergoemacs-test.el: Require packages, to reduce compiler warnings.
(<toplevel>): Don't quote `lambda`; don't let-bind unused
`ergoemacs-is-user-defined-map-change-p`; and don't specify
`interactive` for a function only used on a hook.
(ergoemacs-use-function-remapping): Declare var as dynamic.
(ergoemacs-test): Remove unused var `ret` and `test`.
(ergoemacs-test-ignore-ctl-w): Remove unused var `ret`.
(ergoemacs-test--dired-sort-map): New var extracted from
`ergoemacs-test-dired-sort-files`.
(ergoemacs-test--dired-hook): New function extracted from
`ergoemacs-test-dired-sort-files`.
(ergoemacs-test-dired-sort-files): Use them to simplify the code by
reducing duplication.
* ergoemacs-mode.el (ergoemacs-mode): Remove spurious `nil` arg before
the keyword arguments.
(ergoemacs-setup-override-keymap): Don't abuse `add-hook` on
a non-hook.
(ergoemacs-remove-override-keymap): Don't abuse `remove-hook` on
a non-hook.
* ergoemacs-mapkeymap.el (ergoemacs-map-keymap): Remove
unused/constant var `calc-parent-p`.
* ergoemacs-map.el (ergoemacs-map--alist): Merge two `prog1`.
* ergoemacs-functions.el (ergoemacs-delete-char): Delete one of the
two duplicate definitions.
(ergoemacs-run-clean): Remove unused/constant `rm-batch` variable and
associated dead code. Use `derived-mode-p`.
(ergoemacs-use-beginning-or-end-of-line-only): Fix wrong `const`
format in the `:type`.
(ergoemacs-beginning-of-line-or-what): `beginning-of-buffer` is for
interactive use only.
(ergoemacs-maximum-number-of-file-to-open): Fix typo in `:type`.
(ergoemacs-camelize-method): Don't quote `lambda`.
* ergoemacs-command-loop.el (ergoemacs-command-loop--decode-event):
Comment out unused var `timeout-key`.
(ergoemacs-command-loop--point-motion-hooks): Don't test
`inhibit-point-motion-hooks`.
(ergoemacs-command-loop--internal): Don't set
`inhibit-point-motion-hooks`.
* ergoemacs-advice.el: Require `ergoemacs-command-loop`.
(ergoemacs--temporary-disable): Declare var as dynamic.
---
ergoemacs-advice.el | 4 +-
ergoemacs-command-loop.el | 453 +++++++++++++++++++++++-----------------------
ergoemacs-cua.el | 19 +-
ergoemacs-debug.el | 6 +-
ergoemacs-functions.el | 102 +++++------
ergoemacs-layouts.el | 17 +-
ergoemacs-macros.el | 105 +----------
ergoemacs-map.el | 66 +++----
ergoemacs-mapkeymap.el | 6 +-
ergoemacs-mode.el | 18 +-
ergoemacs-test.el | 129 +++++++------
ergoemacs-theme-engine.el | 9 +-
ergoemacs-themes.el | 22 +--
ergoemacs-translate.el | 30 +--
14 files changed, 440 insertions(+), 546 deletions(-)
diff --git a/ergoemacs-advice.el b/ergoemacs-advice.el
index de7756f9f8..450a60d6db 100644
--- a/ergoemacs-advice.el
+++ b/ergoemacs-advice.el
@@ -1,6 +1,6 @@
;;; ergoemacs-advice.el --- Ergoemacs advices -*- lexical-binding: t -*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Filename: ergoemacs-advice.el
;; Description:
@@ -35,6 +35,7 @@
(require 'mouse)
(require 'nadvice)
+(require 'ergoemacs-command-loop)
(defvar ergoemacs-mode)
(defvar ergoemacs-keymap)
@@ -94,6 +95,7 @@ TYPE is the type of translation installed."
(when (memq 'down (event-modifiers last-command-event))
current-prefix-arg)))))
+(defvar ergoemacs--temporary-disable)
(defun ergoemacs-advice-undefined (orig-fun)
"Allow `ergoemacs-mode' to display keys, and intercept ending <apps> keys."
(if (and ergoemacs-mode (not ergoemacs--temporary-disable))
diff --git a/ergoemacs-command-loop.el b/ergoemacs-command-loop.el
index 01f5cf54e7..0185d7dd6a 100644
--- a/ergoemacs-command-loop.el
+++ b/ergoemacs-command-loop.el
@@ -1,5 +1,5 @@
;;; ergoemacs-command-loop.el --- Keyboard translation functions -*-
lexical-binding: t -*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Filename: ergoemacs-command-loop.el
;; Description:
@@ -170,7 +170,7 @@ ignore the post-command hooks.")
(defun ergoemacs-command-loop--execute-modify-command-list (command)
"Set variables in `ergoemacs-command-loop--execute-modify-command-list' to
COMMAND."
- (ergoemacs-save-buffer-state
+ (with-silent-modifications
(dolist (var ergoemacs-command-loop--execute-modify-command-list)
(set var command))))
@@ -259,7 +259,7 @@ ignore the post-command hooks.")
"Show modal translation.
Returns the mode-line text."
(let (tmp color text)
- (ergoemacs-save-buffer-state
+ (with-silent-modifications
(cond
((setq tmp (ergoemacs :modal-p))
(setq color (ergoemacs-translation-struct-modal-color tmp))
@@ -346,7 +346,7 @@ with this function."
(when (> 1 (length new-key))
(error "Will not set a key sequence to the Emacs key sequence"))
(setf (nth 3 cur-input) new-key)
- (and (ignore-errors (apply 'set-input-mode cur-input))
+ (and (ignore-errors (apply #'set-input-mode cur-input))
(message "Redefined Emacs quit key to %s"
(ergoemacs-key-description (or key [7])))
t)))
@@ -394,9 +394,9 @@ This is called through `ergoemacs-command-loop'"
(setq ergoemacs-command-loop--universal t
ergoemacs-command-loop--exit :ignore-post-command-hook))))
-(defalias 'ergoemacs-read-key--universal-argument
'ergoemacs-command-loop--universal-argument)
+(defalias 'ergoemacs-read-key--universal-argument
#'ergoemacs-command-loop--universal-argument)
-(defalias 'ergoemacs-universal-argument
'ergoemacs-command-loop--universal-argument)
+(defalias 'ergoemacs-universal-argument
#'ergoemacs-command-loop--universal-argument)
(defun ergoemacs-command-loop--digit-argument (&optional type)
"Ergoemacs digit argument.
@@ -413,7 +413,7 @@ Ergoemacs-mode sets up: :ctl-to-alt :unchorded :normal."
(setq current-prefix-arg digit))
(ergoemacs-command-loop nil type nil t))
-(defalias 'ergoemacs-digit-argument 'ergoemacs-command-loop--digit-argument)
+(defalias 'ergoemacs-digit-argument #'ergoemacs-command-loop--digit-argument)
(defun ergoemacs-command-loop--negative-argument (&optional type)
"Ergoemacs negative argument.
@@ -425,7 +425,7 @@ Ergoemacs-mode sets up: :ctl-to-alt :unchorded :normal."
(setq current-prefix-arg '-)
(ergoemacs-command-loop nil type nil t))
-(defalias 'ergoemacs-negative-argument
'ergoemacs-command-loop--negative-argument)
+(defalias 'ergoemacs-negative-argument
#'ergoemacs-command-loop--negative-argument)
(dolist (arg '((next-key-is-alt (meta))
(next-key-is-meta (meta))
@@ -439,20 +439,21 @@ Ergoemacs-mode sets up: :ctl-to-alt :unchorded :normal."
(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))
+ ,(format "Ergoemacs function to allow %s to be the Emacs
modifiers" (nth 1 arg))
(interactive)
(message "Dummy Function for %s" (ergoemacs :modifier-desc ,(nth
1 arg))))
(defalias ',(intern (concat "ergoemacs-read-key-" (symbol-name
(nth 0 arg)))) ',(intern (concat "ergoemacs-command-loop--" (symbol-name (nth 0
arg)))))
(puthash ',(intern (concat "ergoemacs-command-loop--" (symbol-name
(nth 0 arg)))) '(,(nth 1 arg) nil) ergoemacs-command-loop--next-key-hash)
(puthash ',(intern (concat "ergoemacs-read-key-" (symbol-name (nth
0 arg)))) '(,(nth 1 arg) nil) ergoemacs-command-loop--next-key-hash)
(defun ,(intern (concat "ergoemacs-command-loop--force-"
(symbol-name (nth 0 arg)))) ()
- ,(format "Ergoemacs function to allow %s to be the emacs
modifiers" (nth 1 arg))
+ ,(format "Ergoemacs function to allow %s to be the Emacs
modifiers" (nth 1 arg))
(interactive)
(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)
- t))))
+ t))
+ t))
(defvar ergoemacs-last-command-event nil
"`ergoemacs-mode' command loop last read command.")
@@ -474,7 +475,7 @@ Uses the `ergoemacs-command-loop--history'
variable/function."
;; Nothing to undo, exit the command loop.
(setq ergoemacs-command-loop--exit t)))
-(defalias 'ergoemacs-read-key-undo-last 'ergoemacs-command-loop--undo-last)
+(defalias 'ergoemacs-read-key-undo-last #'ergoemacs-command-loop--undo-last)
(defun ergoemacs-command-loop--force-undo-last ()
"Function to undo the last key-press.
@@ -482,10 +483,10 @@ Uses the `ergoemacs-command-loop--history'
variable/function."
Unlike `ergoemacs-command-loop--undo-last', this ignores any bindings like
\\[backward-kill-sentence]
This is actually a dummy function. The actual work is done in
`ergoemacs-command-loop'"
(interactive)
- (call-interactively 'ergoemacs-command-loop--undo-last))
+ (call-interactively #'ergoemacs-command-loop--undo-last))
(put 'ergoemacs-command-loop--force-undo-last :ergoemacs-local :force)
-(defalias 'ergoemacs-read-key-force-undo-last
'ergoemacs-command-loop--force-undo-last)
+(defalias 'ergoemacs-read-key-force-undo-last
#'ergoemacs-command-loop--force-undo-last)
(put 'ergoemacs-read-key-force-undo-last :ergoemacs-local :force)
(defun ergoemacs-command-loop--swap-translation ()
@@ -499,7 +500,7 @@ Uses the `ergoemacs-command-loop-swap-translation'
variable."
(nth 1 next-swap)
:normal))))
-(defalias 'ergoemacs-read-key-swap 'ergoemacs-command-loop--swap-translation)
+(defalias 'ergoemacs-read-key-swap #'ergoemacs-command-loop--swap-translation)
(defun ergoemacs-command-loop--help ()
"Show help for the current sequence KEY."
@@ -534,7 +535,7 @@ Uses the `ergoemacs-command-loop-swap-translation'
variable."
(describe-buffer-bindings cb key)))
(setq ergoemacs-command-loop--exit t))))))
-(defalias 'ergoemacs-read-key-help 'ergoemacs-command-loop--help)
+(defalias 'ergoemacs-read-key-help #'ergoemacs-command-loop--help)
;; Command Loop
@@ -725,18 +726,18 @@ inconjunction with `input-method-function' to translate
keys if
(list
(ergoemacs-translate--event-basic-type event))))))
(vector event)))
(test-ret (lookup-key keymap current-test-key))
- (timeout-key (key-binding (vconcat current-test-key
[ergoemacs-timeout])))
+ ;; (timeout-key (key-binding (vconcat current-test-key
[ergoemacs-timeout])))
next-key)
(while (and current-test-key
(ergoemacs-keymapp test-ret))
;; The translation needs more keys...
- (setq next-key (ergoemacs-command-loop--history nil
ergoemacs-command-loop--decode-event-delay current-key))
+ (setq next-key (ergoemacs-command-loop--history nil
ergoemacs-command-loop--decode-event-delay current-key))
(when next-key ;; Since a key was read, save it to be read later.
(push last-command-event new-ergoemacs-input))
(if next-key
(setq current-test-key (ergoemacs :combine current-test-key next-key)
- timeout-key (key-binding (vconcat current-test-key
[ergoemacs-timeout]))
+ ;; timeout-key (key-binding (vconcat current-test-key
[ergoemacs-timeout]))
test-ret (lookup-key keymap current-test-key))
(setq current-test-key nil)))
;; Change strings to emacs keys.
@@ -814,7 +815,7 @@ return nil."
(setq binding (key-binding (ergoemacs :combine current-key input) t))))
input))
-(defun ergoemacs-command-loop--key-msg (blink-on universal text current-key
unchorded trans keys)
+(defun ergoemacs-command-loop--key-msg (blink-on universal text current-key
unchorded _trans keys)
"Key message.
BLINK-ON is the flag for if the blink is on
@@ -1224,7 +1225,7 @@ appropriate value based on the COMMAND."
(not ergoemacs-command-loop--minibuffer-unsupported-p))
(when (or (and command (symbolp command) (string-match-p
"^\\(calc\\|math\\)" (symbol-name command)))
(and (stringp command) (string-match-p "^[^:]*:\\(calc\\|math\\)"
command)))
- (ergoemacs-save-buffer-state
+ (with-silent-modifications
(set (make-local-variable
'ergoemacs-command-loop--minibuffer-unsupported-p) t)))
(ergoemacs-command-loop--minibuffer-supported-p)))
@@ -1288,9 +1289,9 @@ to start with
"Record the last point.")
(defun ergoemacs-command-loop--point-motion-hooks ()
- "Emlulate Emacs' command-loop portion of the point-motion hooks.
+ "Emulate Emacs' command-loop portion of the point-motion hooks.
The properties `point-entered' and `point-left' are handled by C internals."
- (unless (or disable-point-adjustment global-disable-point-adjustment
inhibit-point-motion-hooks)
+ (unless (or disable-point-adjustment global-disable-point-adjustment)
;; Only the adjustment of the point in fishy areas is done in the
;; command loop.
(let* ((props '(intangible composition display invisible))
@@ -1309,7 +1310,7 @@ The properties `point-entered' and `point-left' are
handled by C internals."
(setq last-point cur-point
cur-point (point)))))
(setq disable-point-adjustment nil)
- (ergoemacs-save-buffer-state
+ (with-silent-modifications
(set (make-local-variable 'ergoemacs-command-loop--point-motion-last-point)
(point))))
(defun ergoemacs-command-loop--sync-point ()
@@ -1677,14 +1678,12 @@ instead of `format'."
((and (eq string :start) ergoemacs-mode-started-p))
((and (eq string :start) (not ergoemacs-mode-started-p))
(setq ergoemacs-message-level :max)
- (unwind-protect
- (apply #'ergoemacs-command-loop--spinner-display args))
+ (apply #'ergoemacs-command-loop--spinner-display args)
(setq ergoemacs-message-level :start))
((and (eq string :new)
(memq ergoemacs-message-level '(:new)))
(setq ergoemacs-command-loop--spinner-display :new)
- (unwind-protect
- (apply #'ergoemacs-command-loop--spinner-display args))
+ (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)
@@ -1733,10 +1732,9 @@ They don't exactly behave like their Emacs equivalents."
"Timer to startup `ergoemacs-mode' command loop.")
(defun ergoemacs-command-loop--timer ()
"Start `ergoemacs-command-loop--internal' if not currently running."
- (unwind-protect
- (unless (and (ergoemacs-command-loop-full-p)
- (ergoemacs-command-loop-p))
- (ergoemacs-command-loop--internal))))
+ (unless (and (ergoemacs-command-loop-full-p)
+ (ergoemacs-command-loop-p))
+ (ergoemacs-command-loop--internal)))
(defun ergoemacs-command-loop--install-timer ()
"Install the `ergoemacs-command-loop--timer'."
@@ -1824,166 +1822,160 @@ Emacs versions)."
(local-keymap (ergoemacs-translate--keymap translation))
modal-p
tmp command)
- (unwind-protect
- (progn
- ;; Set these to nil when entering the command loop;
- ;;
- ;; For some reason `inhibit-point-motion-hooks' on emacs
- ;; 25.1 is t when the command loop is entered.
- ;;
- ;; To allow the point motion hooks to work as
- ;; advertised, set these on starting the command loop.
- (setq inhibit-point-motion-hooks nil
- disable-point-adjustment nil
- global-disable-point-adjustment nil)
- ;; Setup initial unread command events, first type and history
- (setq tmp (ergoemacs-command-loop--listify-key-sequence key
initial-key-type)
- unread-command-events (or (and unread-command-events tmp
(append tmp unread-command-events)) tmp)
- ergoemacs-command-loop--first-type first-type
- ergoemacs-command-loop--history initial-history
- ergoemacs-command-loop-start nil)
- (while continue-read
- (setq ergoemacs-last-command-was-ergoemacs-ignore-p nil)
- (unless (eq ergoemacs-command-loop-type :read-key-sequence)
- (setq inhibit-quit t))
- (while continue-read
- (setq ergoemacs-last-command-was-ergoemacs-ignore-p nil)
- ;; Read key
- (setq ergoemacs-command-loop--single-command-keys current-key
- ergoemacs-command-loop--current-type type
- ergoemacs-command-loop--universal universal
- raw-key (ergoemacs-command-loop--read-key
- current-key
- (or (and unread-command-events :normal) type)
- (and (not unread-command-events) universal))
- ergoemacs-command-loop--single-command-keys nil
- universal-argument-num-events 0
- last-current-key current-key
- current-key (nth 1 raw-key)
- raw-key (nth 0 raw-key)
- continue-read nil)
- (when (setq modal-p (ergoemacs :modal-p))
- (setq local-keymap
(ergoemacs-translation-struct-keymap-modal modal-p)))
- (cond
- ;; Handle quit commands
- ((and last-current-key
- (or (lookup-key ergoemacs-map--quit-map raw-key)
- (and (equal raw-key [27])
- (lookup-key ergoemacs-map--quit-map
[escape]))))
- (ergoemacs-command-loop--message
- "Key sequence %s aborted by %s"
- (ergoemacs-key-description last-current-key)
- (ergoemacs-key-description raw-key))
- (setq quit-flag t
- ergoemacs-this-command-keys-shift-translated nil))
- ;; Handle local commands.
- ((and (or modal-p
- (not (equal current-key raw-key)))
- (setq command (lookup-key local-keymap raw-key))
- (not (ergoemacs-keymapp command)) ;; Ignore locally
- ;; Already handled by
`ergoemacs-command-loop--read-key'
- (not (ergoemacs-gethash command
ergoemacs-command-loop--next-key-hash))
- ;; If a command has :ergoemacs-local property of
:force, don't
- ;; worry about looking up a key, just run the
function.
- (or modal-p
- (and (symbolp command) (eq (get command
:ergoemacs-local) :force))
- (not (key-binding current-key t))))
- (pop ergoemacs-command-loop--history) ;; Don't recored
local events
- (setq ergoemacs-command-loop--single-command-keys
last-current-key
- universal-argument-num-events 0
- ergoemacs-command-loop--current-type type
- ergoemacs-command-loop--universal universal
- ergoemacs-command-loop--exit nil)
+ ;; Set these to nil when entering the command loop;
+ ;;
+ ;; To allow the point motion hooks to work as
+ ;; advertised, set these on starting the command loop.
+ (setq disable-point-adjustment nil
+ global-disable-point-adjustment nil)
+ ;; Setup initial unread command events, first type and history
+ (setq tmp (ergoemacs-command-loop--listify-key-sequence key
initial-key-type)
+ unread-command-events (or (and unread-command-events tmp (append
tmp unread-command-events)) tmp)
+ ergoemacs-command-loop--first-type first-type
+ ergoemacs-command-loop--history initial-history
+ ergoemacs-command-loop-start nil)
+ (while continue-read
+ (setq ergoemacs-last-command-was-ergoemacs-ignore-p nil)
+ (unless (eq ergoemacs-command-loop-type :read-key-sequence)
+ (setq inhibit-quit t))
+ (while continue-read
+ (setq ergoemacs-last-command-was-ergoemacs-ignore-p nil)
+ ;; Read key
+ (setq ergoemacs-command-loop--single-command-keys current-key
+ ergoemacs-command-loop--current-type type
+ ergoemacs-command-loop--universal universal
+ raw-key (ergoemacs-command-loop--read-key
+ current-key
+ (or (and unread-command-events :normal) type)
+ (and (not unread-command-events) universal))
+ ergoemacs-command-loop--single-command-keys nil
+ universal-argument-num-events 0
+ last-current-key current-key
+ current-key (nth 1 raw-key)
+ raw-key (nth 0 raw-key)
+ continue-read nil)
+ (when (setq modal-p (ergoemacs :modal-p))
+ (setq local-keymap (ergoemacs-translation-struct-keymap-modal
modal-p)))
+ (cond
+ ;; Handle quit commands
+ ((and last-current-key
+ (or (lookup-key ergoemacs-map--quit-map raw-key)
+ (and (equal raw-key [27])
+ (lookup-key ergoemacs-map--quit-map [escape]))))
+ (ergoemacs-command-loop--message
+ "Key sequence %s aborted by %s"
+ (ergoemacs-key-description last-current-key)
+ (ergoemacs-key-description raw-key))
+ (setq quit-flag t
+ ergoemacs-this-command-keys-shift-translated nil))
+ ;; Handle local commands.
+ ((and (or modal-p
+ (not (equal current-key raw-key)))
+ (setq command (lookup-key local-keymap raw-key))
+ (not (ergoemacs-keymapp command)) ;; Ignore locally
+ ;; Already handled by `ergoemacs-command-loop--read-key'
+ (not (ergoemacs-gethash command
ergoemacs-command-loop--next-key-hash))
+ ;; If a command has :ergoemacs-local property of :force,
don't
+ ;; worry about looking up a key, just run the function.
+ (or modal-p
+ (and (symbolp command) (eq (get command
:ergoemacs-local) :force))
+ (not (key-binding current-key t))))
+ (pop ergoemacs-command-loop--history) ;; Don't recored local
events
+ (setq ergoemacs-command-loop--single-command-keys
last-current-key
+ universal-argument-num-events 0
+ ergoemacs-command-loop--current-type type
+ ergoemacs-command-loop--universal universal
+ ergoemacs-command-loop--exit nil)
- (unless (eq ergoemacs-command-loop-type :test)
- (setq tmp this-command
- this-command command)
- (ergoemacs-command-loop--call-interactively this-command)
- (setq command this-command
- this-command tmp))
- ;; If the command changed anything, fix it here.
- (unless (equal type ergoemacs-command-loop--current-type)
- (setq type ergoemacs-command-loop--current-type
- translation (ergoemacs-translate--get type)
- local-keymap (ergoemacs-translate--keymap
translation)))
+ (unless (eq ergoemacs-command-loop-type :test)
+ (setq tmp this-command
+ this-command command)
+ (ergoemacs-command-loop--call-interactively this-command)
+ (setq command this-command
+ this-command tmp))
+ ;; If the command changed anything, fix it here.
+ (unless (equal type ergoemacs-command-loop--current-type)
+ (setq type ergoemacs-command-loop--current-type
+ translation (ergoemacs-translate--get type)
+ local-keymap (ergoemacs-translate--keymap translation)))
- (setq current-key
ergoemacs-command-loop--single-command-keys
- universal ergoemacs-command-loop--universal
- ergoemacs-command-loop--single-command-keys nil
- continue-read (not ergoemacs-command-loop--exit)))
- ;; Handle any keys that are bound in some translatable way.
- ((setq command (ergoemacs-command-loop--key-lookup
current-key))
- ;; Setup external indicators of how the loop currently
behaves.
- (setq ergoemacs-command-loop--single-command-keys
current-key
- universal-argument-num-events 0
- ergoemacs-command-loop--current-type type
- ergoemacs-command-loop--universal nil
- ergoemacs-command-loop--exit t)
- (if (setq continue-read (and (not (and (consp (aref
current-key 0))
- (memq
(event-basic-type (car (aref current-key 0)))
- '(mouse-1
mouse-2 mouse-3 mouse-4 mouse-5 mouse-6 mouse-7 mouse-8 mouse-9))))
- (ergoemacs-keymapp command)))
- (setq universal nil)
- (unless (memq ergoemacs-command-loop-type '(:test
:read-key-sequence))
- (with-local-quit
- (ergoemacs-command-loop--execute command)))
+ (setq current-key ergoemacs-command-loop--single-command-keys
+ universal ergoemacs-command-loop--universal
+ ergoemacs-command-loop--single-command-keys nil
+ continue-read (not ergoemacs-command-loop--exit)))
+ ;; Handle any keys that are bound in some translatable way.
+ ((setq command (ergoemacs-command-loop--key-lookup current-key))
+ ;; Setup external indicators of how the loop currently behaves.
+ (setq ergoemacs-command-loop--single-command-keys current-key
+ universal-argument-num-events 0
+ ergoemacs-command-loop--current-type type
+ ergoemacs-command-loop--universal nil
+ ergoemacs-command-loop--exit t)
+ (if (setq continue-read (and (not (and (consp (aref current-key
0))
+ (memq (event-basic-type
(car (aref current-key 0)))
+ '(mouse-1 mouse-2
mouse-3 mouse-4 mouse-5 mouse-6 mouse-7 mouse-8 mouse-9))))
+ (ergoemacs-keymapp command)))
+ (setq universal nil)
+ (unless (memq ergoemacs-command-loop-type '(:test
:read-key-sequence))
+ (with-local-quit
+ (ergoemacs-command-loop--execute command)))
- (when quit-flag
- (ergoemacs-command-loop--message "Quit!"))
+ (when quit-flag
+ (ergoemacs-command-loop--message "Quit!"))
- ;; Change any information (if needed)
- (unless (equal type ergoemacs-command-loop--current-type)
- (setq type ergoemacs-command-loop--current-type
- translation (ergoemacs-translate--get type)
- local-keymap (ergoemacs-translate--keymap
translation)))
-
- (when (eq ergoemacs-command-loop-type :read-key-sequence)
- (setq ergoemacs-command-loop--exit t
- continue-read nil
- command current-key))
+ ;; Change any information (if needed)
+ (unless (equal type ergoemacs-command-loop--current-type)
+ (setq type ergoemacs-command-loop--current-type
+ translation (ergoemacs-translate--get type)
+ local-keymap (ergoemacs-translate--keymap
translation)))
+
+ (when (eq ergoemacs-command-loop-type :read-key-sequence)
+ (setq ergoemacs-command-loop--exit t
+ continue-read nil
+ command current-key))
- (setq current-key
ergoemacs-command-loop--single-command-keys
- universal ergoemacs-command-loop--universal
- ergoemacs-command-loop--single-command-keys nil
- continue-read (not ergoemacs-command-loop--exit)
- current-prefix-arg (if
ergoemacs-command-loop--universal current-prefix-arg prefix-arg))
+ (setq current-key ergoemacs-command-loop--single-command-keys
+ universal ergoemacs-command-loop--universal
+ ergoemacs-command-loop--single-command-keys nil
+ continue-read (not ergoemacs-command-loop--exit)
+ current-prefix-arg (if ergoemacs-command-loop--universal
current-prefix-arg prefix-arg))
- (when (and (not continue-read)
- (eq ergoemacs-command-loop--exit
:ignore-post-command-hook))
- (setq continue-read t)))
+ (when (and (not continue-read)
+ (eq ergoemacs-command-loop--exit
:ignore-post-command-hook))
+ (setq continue-read t)))
- (when (or (not ergoemacs-command-loop--exit)
- (and (not continue-read) (setq continue-read
unread-command-events)))
- (ergoemacs-command-loop--internal-end-command)))
- (quit-flag
- (ergoemacs-command-loop--message "Quit!")
- (setq quit-flag nil
- type :normal
- first-type :normal
- raw-key nil
- current-key nil
- translation (ergoemacs-translate--get type)
- local-keymap (ergoemacs-translate--keymap
translation)
- ergoemacs-command-loop--first-type first-type
- ergoemacs-command-loop--history nil))
- ((consp (aref current-key 0))) ;; don't complain about mouse
keys
- (t ;; Command not found exit.
- (ergoemacs-command-loop--message "Key %s doesn't do
anything." (ergoemacs-key-description current-key)))))
- (unless quit-flag
- (ergoemacs-command-loop--internal-end-command))
- (setq quit-flag nil
- type :normal
- continue-read (or unread-command-events (and
from-start-p (ergoemacs-command-loop-full-p)))
- first-type :normal
- raw-key nil
- current-key nil
- translation (ergoemacs-translate--get type)
- local-keymap (ergoemacs-translate--keymap translation)
- ergoemacs-command-loop--first-type first-type
- ergoemacs-command-loop--history nil)
- (when (or (not ergoemacs-mode) (eq :read-key-sequence
ergoemacs-command-loop-type))
- (setq continue-read nil)))
- (setq inhibit-quit nil)))
+ (when (or (not ergoemacs-command-loop--exit)
+ (and (not continue-read) (setq continue-read
unread-command-events)))
+ (ergoemacs-command-loop--internal-end-command)))
+ (quit-flag
+ (ergoemacs-command-loop--message "Quit!")
+ (setq quit-flag nil
+ type :normal
+ first-type :normal
+ raw-key nil
+ current-key nil
+ translation (ergoemacs-translate--get type)
+ local-keymap (ergoemacs-translate--keymap translation)
+ ergoemacs-command-loop--first-type first-type
+ ergoemacs-command-loop--history nil))
+ ((consp (aref current-key 0))) ;; don't complain about mouse keys
+ (t ;; Command not found exit.
+ (ergoemacs-command-loop--message "Key %s doesn't do anything."
(ergoemacs-key-description current-key)))))
+ (unless quit-flag
+ (ergoemacs-command-loop--internal-end-command))
+ (setq quit-flag nil
+ type :normal
+ continue-read (or unread-command-events (and from-start-p
(ergoemacs-command-loop-full-p)))
+ first-type :normal
+ raw-key nil
+ current-key nil
+ translation (ergoemacs-translate--get type)
+ local-keymap (ergoemacs-translate--keymap translation)
+ ergoemacs-command-loop--first-type first-type
+ ergoemacs-command-loop--history nil)
+ (when (or (not ergoemacs-mode) (eq :read-key-sequence
ergoemacs-command-loop-type))
+ (setq continue-read nil)))
+ (setq inhibit-quit nil)
command))))
(defcustom ergoemacs-message-in-mode-line t
@@ -2270,62 +2262,61 @@ For instance in QWERTY M-> is shift translated to M-."
;; (3) execute command
(defun ergoemacs-command-loop--execute (command &optional keys)
"Execute COMMAND pretending that KEYS were pressed."
- (unwind-protect
- (let ((keys (or keys ergoemacs-command-loop--single-command-keys)))
- ;; (ergoemacs-command-loop--spinner)
+ (let ((keys (or keys ergoemacs-command-loop--single-command-keys)))
+ ;; (ergoemacs-command-loop--spinner)
+ (cond
+ ((or (stringp command) (vectorp command))
+ ;; If the command is a keyboard macro (string/vector) then execute
+ ;; it by adding it to `unread-command-events'
+ (let ((tmp (prefix-numeric-value current-prefix-arg)))
(cond
- ((or (stringp command) (vectorp command))
- ;; If the command is a keyboard macro (string/vector) then execute
- ;; it by adding it to `unread-command-events'
- (let ((tmp (prefix-numeric-value current-prefix-arg)))
- (cond
- ((<= tmp 0) ;; Unsure what to do here.
- (ergoemacs-command-loop--message "The %s keyboard macro was not
run %s times" (ergoemacs-key-description (vconcat command)) tmp))
- (t
- (dotimes (_i tmp unread-command-events)
- (setq unread-command-events
- (append (listify-key-sequence command)
- unread-command-events))))))
- (setq ergoemacs-command-loop--single-command-keys nil))
+ ((<= tmp 0) ;; Unsure what to do here.
+ (ergoemacs-command-loop--message "The %s keyboard macro was not run
%s times" (ergoemacs-key-description (vconcat command)) tmp))
(t
- ;; This should be a regular command.
+ (dotimes (_i tmp unread-command-events)
+ (setq unread-command-events
+ (append (listify-key-sequence command)
+ unread-command-events))))))
+ (setq ergoemacs-command-loop--single-command-keys nil))
+ (t
+ ;; This should be a regular command.
- ;; Remove counting of `this-command' in `keyfreq-mode'
- ;; Shouldn't be needed any more...
- ;; (ergoemacs-command-loop--execute-rm-keyfreq this-command)
+ ;; Remove counting of `this-command' in `keyfreq-mode'
+ ;; Shouldn't be needed any more...
+ ;; (ergoemacs-command-loop--execute-rm-keyfreq this-command)
- ;; This command execute should modify the following variables:
- ;; - `last-repeatable-command'
- ;; - `this-command'
- ;; - `this-original-command'
+ ;; This command execute should modify the following variables:
+ ;; - `last-repeatable-command'
+ ;; - `this-command'
+ ;; - `this-original-command'
- ;; In addition, other minor modes may store the command, so these
- ;; should be modified as well.
+ ;; In addition, other minor modes may store the command, so these
+ ;; should be modified as well.
- ;; These are stored in
`ergoemacs-command-loop--execute-modify-command-list'
+ ;; These are stored in
`ergoemacs-command-loop--execute-modify-command-list'
- (ergoemacs-command-loop--execute-modify-command-list command)
+ (ergoemacs-command-loop--execute-modify-command-list command)
- ;; Handle Shift Selection
- (ergoemacs-command-loop--execute-handle-shift-selection this-command)
- (when keys
- (setq ergoemacs-command-loop--single-command-keys keys)
+ ;; Handle Shift Selection
+ (ergoemacs-command-loop--execute-handle-shift-selection this-command)
+ (when keys
+ (setq ergoemacs-command-loop--single-command-keys keys)
- ;; Modify the output for these functions when `keys' is not nil.
+ ;; Modify the output for these functions when `keys' is not nil.
- ;; Assume this is a nonmenu event if it isn't a mouse event
- (unless (consp last-command-event)
- (setq last-nonmenu-event last-command-event)))
- (unwind-protect
- (progn
- (setq ergoemacs-command-loop--running-pre-command-hook-p t)
- (run-hooks 'pre-command-hook))
- (setq ergoemacs-command-loop--running-pre-command-hook-p nil))
- (unwind-protect
- (ergoemacs-command-loop--call-interactively this-command t)
- (setq ergoemacs-command-loop--single-command-keys nil)))))
- ;; (ergoemacs-command-loop--spinner-end)
- ))
+ ;; Assume this is a nonmenu event if it isn't a mouse event
+ (unless (consp last-command-event)
+ (setq last-nonmenu-event last-command-event)))
+ (unwind-protect
+ (progn
+ (setq ergoemacs-command-loop--running-pre-command-hook-p t)
+ (run-hooks 'pre-command-hook))
+ (setq ergoemacs-command-loop--running-pre-command-hook-p nil))
+ (unwind-protect
+ (ergoemacs-command-loop--call-interactively this-command t)
+ (setq ergoemacs-command-loop--single-command-keys nil)))))
+ ;; (ergoemacs-command-loop--spinner-end)
+ )
(defun ergoemacs-command-loop--shift-timeout ()
"This is the shift-timeout function for a key."
(interactive)
diff --git a/ergoemacs-cua.el b/ergoemacs-cua.el
index f20d9d632c..423e3358f2 100644
--- a/ergoemacs-cua.el
+++ b/ergoemacs-cua.el
@@ -1,6 +1,6 @@
;;; ergoemacs-cua.el --- Keyboard keybinding translation -*- lexical-binding:
t -*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Filename: ergoemacs-cua.el
;; Description:
@@ -61,21 +61,22 @@
(defvar ergoemacs--prefix-override-keymap
(let ((map (make-sparse-keymap)))
- (define-key map [(control x)] 'ergoemacs--prefix-override-handler)
- (define-key map [(control c)] 'ergoemacs--prefix-override-handler)
+ (define-key map [(control x)] #'ergoemacs--prefix-override-handler)
+ (define-key map [(control c)] #'ergoemacs--prefix-override-handler)
map)
"Prefix override keymap.")
(defvar ergoemacs--ena-prefix-repeat-keymap nil
- "Variable that states that `ergoemacs-mode' is in the repeat phase,
immediately after using the prefix key.")
+ "Non-nil if `ergoemacs-mode' is in the repeat phase,
+I.e. immediately after using the prefix key.")
(defvar ergoemacs--prefix-repeat-keymap
(let ((map (make-sparse-keymap)))
- (define-key map [(control x) (control x)]
'ergoemacs--prefix-repeat-handler)
- (define-key map [(control c) (control c)]
'ergoemacs--prefix-repeat-handler)
+ (define-key map [(control x) (control x)]
#'ergoemacs--prefix-repeat-handler)
+ (define-key map [(control c) (control c)]
#'ergoemacs--prefix-repeat-handler)
(dolist (key '(up down left right home end next prior))
- (define-key map (vector '(control x) key) 'ergoemacs--prefix-cut-handler)
- (define-key map (vector '(control c) key)
'ergoemacs--prefix-copy-handler)))
+ (define-key map (vector '(control x) key)
#'ergoemacs--prefix-cut-handler)
+ (define-key map (vector '(control c) key)
#'ergoemacs--prefix-copy-handler)))
"Prefix repeat keymap.")
@@ -109,7 +110,7 @@ enabled."
This is also used to select the region keymaps.")
(defvar ergoemacs--ena-prefix-override-keymap nil
- "Variable that tels the `ergoemacs-mode' of the overide step is active.
+ "Non-nil if `ergoemacs-mode's override step is active.
This override is enabled for active regions before the copy and paste are
enabled.")
diff --git a/ergoemacs-debug.el b/ergoemacs-debug.el
index e2949d2627..e1e170a5cb 100644
--- a/ergoemacs-debug.el
+++ b/ergoemacs-debug.el
@@ -1,6 +1,6 @@
;;; ergoemacs-debug.el --- Ergoemacs map interface -*- lexical-binding: t -*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Filename: ergoemacs-debug.el
;; Description:
@@ -58,7 +58,7 @@
"Ergoemacs debugging heading."
(ergoemacs-debug (concat "** "
(condition-case err
- (apply 'format arg)
+ (apply #'format arg)
(error (format "Bad format string: %s (%s)" arg
err)))))
(ergoemacs-debug "Time Since Start ergoemacs-mode: %1f sec" (- (float-time)
ergoemacs-debug-heading-start-time))
(ergoemacs-debug "Time Since Last Heading: %1f sec" (- (float-time)
ergoemacs-debug-heading-last-time))
@@ -79,7 +79,7 @@
(format "%s\n%s"
ergoemacs-debug
(condition-case err
- (apply 'format arg)
+ (apply #'format arg)
(error (format "Bad Format String: %s (%s)" arg err)))))))
(defun ergoemacs-debug-clear ()
diff --git a/ergoemacs-functions.el b/ergoemacs-functions.el
index 3227fb9384..55048cdb17 100644
--- a/ergoemacs-functions.el
+++ b/ergoemacs-functions.el
@@ -1,6 +1,6 @@
;;; ergoemacs-functions.el --- miscellaneous functions for ErgoEmacs -*-
lexical-binding: t -*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Maintainer: Matthew L. Fidler
;; Authors: Xah Lee, Matthew Fidler, Drew Adams, Ting-Yu Lin, David
@@ -162,11 +162,6 @@ KEY3 is the optional third key in the sequence."
(interactive)
(ergoemacs--send-emacs-key ?\M-g ?\M-g))
-(defun ergoemacs-delete-char ()
- "Ergoemacs replacement for `delete-char' using `ergoemacs--send-emacs-key'."
- (interactive)
- (ergoemacs--send-emacs-key ?\C-d))
-
(defun ergoemacs-move-beginning-of-line ()
"Ergoemacs replacement for `move-beginning-of-line' using
`ergoemacs--send-emacs-key'."
(interactive)
@@ -484,7 +479,7 @@ When TERMINAL is non-nil, run in a terminal instead of GUI."
(kill-buffer buf)))
(switch-to-buffer-other-window (get-buffer-create "*ergoemacs-clean*"))
(let ((inhibit-read-only t))
- (ergoemacs-save-buffer-state
+ (with-silent-modifications
(set (make-local-variable 'ergoemacs-terminal) terminal))
(setq default-directory (expand-file-name (file-name-directory
(locate-library "ergoemacs-mode"))))
(delete-region (point-min) (point-max))
@@ -502,7 +497,7 @@ When TERMINAL is non-nil, run in a terminal instead of GUI."
(process (start-process-shell-command "ergoemacs-byte-compile"
"*ergoemacs-clean*"
(format "%s -L %s -Q
--batch -f batch-byte-compile ergoemacs-*.el" emacs-exe default-directory))))
- (set-process-sentinel process 'ergoemacs-run-clean))
+ (set-process-sentinel process #'ergoemacs-run-clean))
(ergoemacs-run-clean nil nil))))
(defvar ergoemacs-run-clean nil
@@ -515,7 +510,7 @@ The PROCESS is the process where the clean environment is
run."
(inhibit-read-only t)
(ergoemacs-load (or ergoemacs-run-clean
" --load=\"ergoemacs-mode\"
--load=\"ergoemacs-test\" --eval \"(progn (require 'elp) (setq debug-on-error
t) (elp-instrument-package (symbol-name 'ergoemacs-)) (ergoemacs-mode 1)
(run-with-idle-timer 0.1 nil 'elp-results))\""))
- cmd process rm-batch)
+ cmd process)
(cond
((with-current-buffer (get-buffer-create "*ergoemacs-clean*")
(not ergoemacs-terminal))
@@ -528,7 +523,7 @@ The PROCESS is the process where the clean environment is
run."
emacs-exe
(expand-file-name (file-name-directory (locate-library
"ergoemacs-mode")))
ergoemacs-load))
- (ergoemacs-save-buffer-state
+ (with-silent-modifications
(set (make-local-variable 'ergoemacs-batch-file)
(make-temp-file "ergoemacs-clean" nil ".bat")))
(with-temp-file ergoemacs-batch-file
@@ -543,17 +538,11 @@ The PROCESS is the process where the clean environment is
run."
(goto-char (point-max))
(insert "Command\n" cmd "\n\n"))
(with-current-buffer (get-buffer-create "*ergoemacs-clean*")
- (unless (eq major-mode 'compilation-mode)
+ (unless (derived-mode-p 'compilation-mode)
(compilation-mode)))
- (if (not rm-batch)
- (setq process (start-process-shell-command "ergoemacs-run-clean"
- "*ergoemacs-clean*"
- cmd))
- (setq process (start-process
- "ergoemacs-run-clean" "*ergoemacs-clean*"
- (executable-find "cmd")
- (file-name-nondirectory ergoemacs-batch-file)))
- (set-process-sentinel process 'ergoemacs-run-clean-rm-batch))))
+ (start-process-shell-command "ergoemacs-run-clean"
+ "*ergoemacs-clean*"
+ cmd)))
(defun ergoemacs-run-clean-rm-batch ()
"Remove temporary batch file."
@@ -854,9 +843,9 @@ followed by the beginning of indentation (if
(defcustom ergoemacs-use-beginning-or-end-of-line-only 'on-repeat
"Allow `ergoemacs-beginning-of-line-or-what' and
`ergoemacs-end-of-line-or-what' to only go to the beginning/end of a line."
:type '(choice
- (const t :tag "Only go to the beginning or end of a line")
- (const nil :tag "Goto beginning/end of block whenever at
beginning/end of line")
- (const on-repeat :tag "Goto beginning/end of block when at
beginining/end of line and have already pressed the key."))
+ (const :tag "Only go to the beginning or end of a line" t)
+ (const :tag "Goto beginning/end of block whenever at beginning/end
of line" nil)
+ (const :tag "Goto beginning/end of block when at beginining/end of
line and have already pressed the key." on-repeat))
:group 'ergoemacs-mode)
(defcustom ergoemacs-beginning-or-end-of-line-and-what 'block
@@ -867,10 +856,10 @@ When 'page use `scroll-down-command' or
`scroll-up-command'
When 'block use `ergoemacs-backward-block' or `ergoemacs-forward-block'
When 'nil don't use a repeatable command."
:type '(choice
- (const buffer :tag "Goto beginning/end of buffer")
- (const page :tag "Page Up")
- (const block :tag "Goto beginning/end of block")
- (const nil :tag "Do nothing on repeat at beginning/end of line"))
+ (const :tag "Goto beginning/end of buffer" buffer)
+ (const :tag "Page Up" page)
+ (const :tag "Goto beginning/end of block" block)
+ (const :tag "Do nothing on repeat at beginning/end of line" nil))
:group 'ergoemacs-mode)
(defcustom ergoemacs-beginning-or-end-of-line-prefix-scrolls-other-window t
@@ -1039,7 +1028,8 @@ the prefix arguments of `beginning-of-buffer',
(ignore-errors
(setq this-command 'scroll-other-window-down)
(scroll-other-window-down)
- t)) nil
+ t))
+ nil
(if (and ergoemacs-beginning-or-end-of-line-and-what
(or (not ergoemacs-use-beginning-or-end-of-line-only)
(and (eq 'on-repeat
ergoemacs-use-beginning-or-end-of-line-only)
@@ -1049,7 +1039,7 @@ the prefix arguments of `beginning-of-buffer',
(cond
((eq ergoemacs-beginning-or-end-of-line-and-what 'buffer)
(let ((pt (point)))
- (beginning-of-buffer)
+ (goto-char (point-min))
(when (= pt (point))
(call-interactively 'beginning-of-buffer)))
(setq this-command 'beginning-of-buffer))
@@ -1068,7 +1058,7 @@ the prefix arguments of `beginning-of-buffer',
(let ((line-move-visual nil))
(forward-line (- N 1))))
(let (pts tmp)
- (push (point-at-bol) pts)
+ (push (line-beginning-position) pts)
(save-excursion
;; (setq prefix-arg nil)
(setq current-prefix-arg nil)
@@ -1093,13 +1083,13 @@ the prefix arguments of `beginning-of-buffer',
(when (not (eolp))
(forward-char 1))
(save-excursion
- (while (re-search-backward (format "%s" comment-start-skip)
(point-at-bol) t))
- (while (re-search-forward (format "\\=%s" comment-start-skip)
(point-at-eol) t))
+ (while (re-search-backward (format "%s" comment-start-skip)
(line-beginning-position) t))
+ (while (re-search-forward (format "\\=%s" comment-start-skip)
(line-end-position) t))
(push (point) pts)
- (when (re-search-backward (format "%s\\=" comment-start-skip)
(point-at-bol) t)
- (while (re-search-backward (format "%s\\=" comment-start-skip)
(point-at-bol) t)
- (skip-chars-backward " \t" (point-at-bol)))
- (skip-chars-backward " \t" (point-at-bol))
+ (when (re-search-backward (format "%s\\=" comment-start-skip)
(line-beginning-position) t)
+ (while (re-search-backward (format "%s\\=" comment-start-skip)
(line-beginning-position) t)
+ (skip-chars-backward " \t" (line-beginning-position)))
+ (skip-chars-backward " \t" (line-beginning-position))
(push (point) pts)))))
(cond
((not pts)
@@ -1108,7 +1098,7 @@ the prefix arguments of `beginning-of-buffer',
(when (= pt (point))
(call-interactively 'move-beginning-of-line))))
(t
- (setq pts (sort pts '<))
+ (setq pts (sort pts #'<))
(dolist (x pts)
(save-excursion
(goto-char x)
@@ -1183,7 +1173,8 @@ the prefix arguments of `end-of-buffer',
(ignore-errors
(setq this-command 'scroll-other-window)
(scroll-other-window)
- t)) nil
+ t))
+ nil
(if (and ergoemacs-beginning-or-end-of-line-and-what
(or (not ergoemacs-use-beginning-or-end-of-line-only)
(and (eq 'on-repeat
ergoemacs-use-beginning-or-end-of-line-only)
@@ -1240,13 +1231,13 @@ the prefix arguments of `end-of-buffer',
(when ergoemacs-end-of-comment-line
(save-excursion
;; See http://www.emacswiki.org/emacs/EndOfLineNoComments
- (goto-char (point-at-bol))
- (when (re-search-forward (format "%s" comment-start-skip)
(point-at-eol) t)
+ (goto-char (line-beginning-position))
+ (when (re-search-forward (format "%s" comment-start-skip)
(line-end-position) t)
(goto-char (match-beginning 0)))
- (skip-syntax-backward " " (point-at-bol))
+ (skip-syntax-backward " " (line-beginning-position))
(push (point) pts)))
(when pts
- (setq pts (sort pts '<))
+ (setq pts (sort pts #'<))
(dolist (x pts)
(unless (<= x (point))
(push x tmp)))
@@ -1332,7 +1323,7 @@ Subsequent calls expands the selection to larger semantic
unit."
(mark-sexp -1))))
;;; TEXT TRANSFORMATION RELATED
-(defun ergoemacs-kill-line-backward (&optional number)
+(defun ergoemacs-kill-line-backward (&optional _number)
"Kill text between the beginning of the line to the cursor position.
If there's no text, delete the previous line ending."
(interactive "p")
@@ -1528,10 +1519,11 @@ 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
- #'downcase
- '(lambda (word) (capitalize (downcase word)))
- (split-string s (or char "_"))) ""))
+ (mapconcat #'identity (ergoemacs-mapcar-head
+ #'downcase
+ (lambda (word) (capitalize (downcase word)))
+ (split-string s (or char "_")))
+ ""))
(defun ergoemacs-camel-bounds (camel-case-chars)
"Return the camel-case bounds.
@@ -1781,7 +1773,7 @@ binding."
(defcustom ergoemacs-maximum-number-of-file-to-open 5
"Maximum number of files to open.
If less than or equal to zero, there is no limit."
- :type 'integerp
+ :type 'integer
:group 'ergoemacs-mode)
(defun ergoemacs-open-in-external-app (&optional file)
"Open the current file or dired marked files in external app.
@@ -2184,7 +2176,7 @@ When in `browse-kill-ring-mode', cycle backward through
the key ring.
"Run `yank' or `yank-pop' if this command is repeated.
This is `yank' if `ergoemacs-smart-paste' is nil.
This is `yank-pop' if `ergoemacs-smart-paste' is t and last command is a yank.
-This is `browse-kill-ring' if `ergoemacs-smart-paste' equals 'browse-kill-ring
and last command is a yank.
+This is `browse-kill-ring' if `ergoemacs-smart-paste' equals
`browse-kill-ring' and last command is a yank.
When in `browse-kill-ring-mode', cycle forward through the key ring.
@@ -2341,9 +2333,11 @@ ARG is the prefix argument for either command."
direction direction direction)
(defun ergoemacs-camelize (s &optional char)
"Convert under_score string S to CamelCase string."
- (mapconcat 'identity (mapcar
+ (mapconcat #'identity (mapcar
+ ;; FIXME: Is this different from just `capitalize'?
(lambda (word) (capitalize (downcase word)))
- (split-string s (or char "_"))) ""))
+ (split-string s (or char "_")))
+ ""))
@@ -2545,17 +2539,17 @@ Sends shell prompt string to process, then turns on
(require 'dirtrack)
(cond
((string-match "cmd\\(proxy\\)?.exe" shell)
- (ergoemacs-save-buffer-state
+ (with-silent-modifications
(set (make-local-variable 'dirtrack-list) (list "^\\([a-zA-Z]:.*\\)>"
1)))
(shell-dirtrack-mode -1)
(dirtrack-mode 1))
((string-match "powershell.exe" shell)
- (ergoemacs-save-buffer-state
+ (with-silent-modifications
(set (make-local-variable 'dirtrack-list) (list "^PS
\\([a-zA-Z]:.*\\)>" 1)))
(shell-dirtrack-mode -1)
(dirtrack-mode 1))
(t ;; Assume basic abc@host:dir structure
- (ergoemacs-save-buffer-state
+ (with-silent-modifications
(set (make-local-variable 'dirtrack-list) (list
"^\\(?:.*?@\\)?\\(?:.*?:\\)?\\(?:[^ ]* \\)? *\\(.*\\) *\\([$#]\\|\\]\\)" 1)))
(shell-dirtrack-mode -1)
(dirtrack-mode 1))))))
diff --git a/ergoemacs-layouts.el b/ergoemacs-layouts.el
index c0f38120d7..7642c87c8b 100644
--- a/ergoemacs-layouts.el
+++ b/ergoemacs-layouts.el
@@ -1,6 +1,6 @@
-;;; ergoemacs-layouts.el --- keyboard layouts for ErgoEmacs -*
lexical-binding: t -*-
+;;; ergoemacs-layouts.el --- keyboard layouts for ErgoEmacs -*-
lexical-binding: t -*-
-;; Copyright (C) 2013-2021 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2023 Free Software Foundation, Inc.
;; Maintainer: Matthew L. Fidler
;; Keywords: convenience
@@ -415,7 +415,7 @@ If LAYOUT is unspecified, use `ergoemacs-keyboard-layout'."
,@(mapcar
(lambda(elt)
`(const :tag ,elt :value ,elt))
- (sort (ergoemacs-layouts--list t) 'string<))))
+ (sort (ergoemacs-layouts--list t) #'string<))))
(defun ergoemacs-layouts--custom-documentation (&optional lays ini)
"Get a documentation list of all known layouts.
@@ -424,7 +424,7 @@ LAYS is the layouts being processed.
If INI is non-nil, create information about the autohotkey ini
file."
- (let ((lays (or lays (sort (ergoemacs-layouts--list t) 'string<))))
+ (let ((lays (or lays (sort (ergoemacs-layouts--list t) #'string<))))
(mapconcat
(lambda(lay)
(let* ((variable (intern (concat "ergoemacs-layout-" lay)))
@@ -543,8 +543,7 @@ 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)
@@ -578,14 +577,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))
@@ -653,7 +648,7 @@ LAYOUT can be either a symbol or string."
;; Return the text we displayed.
(buffer-string))))))
-(defalias 'describe-ergoemacs-layout 'ergoemacs-layout-describe)
+(defalias 'describe-ergoemacs-layout #'ergoemacs-layout-describe)
(provide 'ergoemacs-layouts)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/ergoemacs-macros.el b/ergoemacs-macros.el
index cae95e474a..a6c1883b29 100644
--- a/ergoemacs-macros.el
+++ b/ergoemacs-macros.el
@@ -1,6 +1,6 @@
;;; ergoemacs-macros.el --- Macros for ergoemacs-mode -*- lexical-binding: t
-*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Maintainer: Matthew L. Fidler
;; Keywords: convenience
@@ -101,44 +101,8 @@ additional parsing routines defined by PARSE-FUNCTION."
(list plist remaining))))
;;;###autoload
-(defmacro ergoemacs-save-buffer-state (&rest body)
- "Eval BODY,
-then restore the buffer state under the assumption that no significant
-modification has been made in BODY. A change is considered
-significant if it affects the buffer text in any way that isn't
-completely restored again. Changes in text properties like `face' or
-`syntax-table' are considered insignificant. This macro allows text
-properties to be changed, even in a read-only buffer.
-
-This macro should be placed around all calculations which set
-\"insignificant\" text properties in a buffer, even when the buffer is
-known to be writeable. That way, these text properties remain set
-even if the user undoes the command which set them.
-
-This macro should ALWAYS be placed around \"temporary\" internal buffer
-changes \(like adding a newline to calculate a text-property then
-deleting it again\), so that the user never sees them on his
-`buffer-undo-list'.
-
-However, any user-visible changes to the buffer \(like auto-newlines\)
-must not be within a `ergoemacs-save-buffer-state', since the user then
-wouldn't be able to undo them.
-
-The return value is the value of the last form in BODY.
-
-This was stole/modified from `c-save-buffer-state'"
- `(let* ((modified (buffer-modified-p)) (buffer-undo-list t)
- (inhibit-read-only t) (inhibit-point-motion-hooks t)
- before-change-functions after-change-functions
- deactivate-mark
- buffer-file-name buffer-file-truename ; Prevent primitives checking
- ; for file modification
- )
- (unwind-protect
- (progn ,@body)
- (and (not modified)
- (buffer-modified-p)
- (set-buffer-modified-p nil)))))
+(define-obsolete-function-alias 'ergoemacs-save-buffer-state
+ #'with-silent-modifications "2023")
(defvar ergoemacs--map-properties-list
'(
@@ -305,64 +269,13 @@ This also creates functions:
- ergoemacs-translate--NAME-modal"
(declare (doc-string 2)
(indent 2))
- (let ((kb (make-symbol "kb")))
- (setq kb (ergoemacs-theme-component--parse-keys-and-body body-and-plist))
+ (let ((kb (ergoemacs-theme-component--parse-keys-and-body body-and-plist)))
- `(progn (puthash ,(intern (concat ":" (plist-get (nth 0 kb) ':name)))
- (lambda() ,(plist-get (nth 0 kb) ':description)
- (ergoemacs-translate--create :key ,(intern (concat ":"
(plist-get (nth 0 kb) ':name)))
- ,@(nth 0 kb)))
ergoemacs-translation-hash))))
-
-(defmacro ergoemacs-advice (function args &rest body-and-plist)
- "Defines an `ergoemacs-mode' advice.
-
-The structure is (ergoemacs-advice function args tags body-and-plist)
-
-When the tag :type equals :replace, the advice replaces the function.
-
-When :type is :replace that replaces a function (like `define-key')"
- (declare (doc-string 2)
- (indent 2))
- (let ((kb (make-symbol "kb")))
- (setq kb (ergoemacs-theme-component--parse-keys-and-body `(nil nil
,@body-and-plist)))
- (cond
- ((eq (plist-get (nth 0 kb) :type) :around)
- ;; FIXME: use `nadvice' for emacs 24.4+
- (macroexpand-all `(progn
- (defadvice ,function (around ,(intern (format
"ergoemacs-advice--%s" (symbol-name function))) ,args activate)
- ,(plist-get (nth 0 kb) :description)
- ,@(nth 1 kb)))))
- ((eq (plist-get (nth 0 kb) :type) :after)
- ;; FIXME: use `nadvice' for emacs 24.4+
- (macroexpand-all
- `(progn
- (defadvice ,function (after ,(intern (format
"ergoemacs-advice--after-%s" (symbol-name function))) ,args activate)
- ,(plist-get (nth 0 kb) :description)
- ,@(nth 1 kb)))))
- ((eq (plist-get (nth 0 kb) :type) :before)
- ;; FIXME: use `nadvice' for emacs 24.4+
- (macroexpand-all `(progn
- (defadvice ,function (before ,(intern (format
"ergoemacs-advice--%s" (symbol-name function))) ,args activate)
- ,(plist-get (nth 0 kb) :description)
- ,@(nth 1 kb)))))
- ((eq (plist-get (nth 0 kb) :type) :replace)
- (macroexpand-all `(progn
- (defalias ',(intern (format
"ergoemacs-advice--real-%s" (symbol-name function)))
- (symbol-function ',function) (concat ,(format
"ARGS=%s\n\n" args) (documentation ',function)
- ,(format
"\n\n`ergoemacs-mode' preserved the real `%s' in this function."
-
(symbol-name function))))
- (defun ,(intern (format "ergoemacs-advice--%s--"
function)) ,args
- ,(format "%s\n\n%s\n\n`ergoemacs-mode' replacement
function for `%s'.\nOriginal function is preserved in
`ergoemacs-advice--real-%s'"
- (documentation function)
- (plist-get (nth 0 kb) :description)
(symbol-name function) (symbol-name function))
- ,@(nth 1 kb))
- ;; Hack to make sure the documentation is in the
function...
- (defalias ',(intern (format "ergoemacs-advice--%s"
function)) ',(intern (format "ergoemacs-advice--%s--" function))
- ,(format "ARGS=%s\n\n%s\n\n%s\n\n`ergoemacs-mode'
replacement function for `%s'.\nOriginal function is preserved in
`ergoemacs-advice--real-%s'"
- args (documentation function) (plist-get
(nth 0 kb) :description) (symbol-name function) (symbol-name function)))
- ,(if (plist-get (nth 0 kb) :always)
- `(push ',function
ergoemacs-advice--permanent-replace-functions)
- `(push ',function
ergoemacs-advice--temp-replace-functions))))))))
+ `(puthash ,(intern (concat ":" (plist-get (nth 0 kb) ':name)))
+ (lambda() ,(plist-get (nth 0 kb) ':description)
+ (ergoemacs-translate--create :key ,(intern (concat ":"
(plist-get (nth 0 kb) ':name)))
+ ,@(nth 0 kb)))
+ ergoemacs-translation-hash)))
(defmacro ergoemacs-save-key-state (keymap-symbol &rest body)
diff --git a/ergoemacs-map.el b/ergoemacs-map.el
index 3771b50d7a..bd44e2a62e 100644
--- a/ergoemacs-map.el
+++ b/ergoemacs-map.el
@@ -1,6 +1,6 @@
;;; ergoemacs-map.el --- Ergoemacs map interface -*- lexical-binding: t -*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Filename: ergoemacs-map.el
;; Description:
@@ -183,43 +183,43 @@ save the infromationin the `ergoemacs-map--alist' hash."
(let ((old-breadcrumb ergoemacs-map--breadcrumb)
breadcrumb-base type old-len)
(if (and symbol (setq old-len (ergoemacs-gethash symbol
ergoemacs-map--alist))
- (= (length alist) old-len)) alist
+ (= (length alist) old-len))
+ alist
(when symbol
(puthash symbol (length alist) ergoemacs-map--alist)
(setq breadcrumb-base (format "%s:%s" old-breadcrumb symbol)))
(setq ergoemacs-map--alist-atom-symbol-reset-when-volatile symbol)
(prog1
- (unwind-protect
- (prog1 (mapcar
- (lambda(elt)
- (cond
- ;; ((not (ergoemacs-sv (car elt)))
- ;; ;; not enabled, ignore any changes to this map...?
- ;; elt)
- ((eq (car elt) 'ergoemacs-mode) elt)
- ((and (not (setq type (ergoemacs (cdr elt)
:installed-p))) ergoemacs-mode)
- ;; Install `ergoemacs-mode' into the keymap
- (ergoemacs-map--alist-atom (car elt) (cdr elt)
breadcrumb-base))
- ((not type)
- ;; Install `ergoemacs-mode' user protection into the
- ;; keymap.
- (ergoemacs-map--alist-atom (car elt) (cdr elt)
breadcrumb-base t))
- ((eq :cond-map type)
- ;; Don't change conditional maps. Change in
alists...?
- elt)
- ((and ergoemacs-mode (eq :protected-p type))
- ;; Change protection into full ergoemacs-mode
installation
- (ergoemacs-map--alist-atom (car elt) (ergoemacs (cdr
elt) :original) breadcrumb-base))
- ((eq :protected-p type)
- ;; Already protected.
- elt)
- ((and ergoemacs-mode type)
- ;; Already installed
- elt)
- ((and (not ergoemacs-mode) type)
- (ergoemacs-map--alist-atom (car elt) (ergoemacs (cdr
elt) :original-user) breadcrumb-base))))
- alist)
- (setq ergoemacs-map--breadcrumb old-breadcrumb)))
+ (mapcar
+ (lambda(elt)
+ (cond
+ ;; ((not (ergoemacs-sv (car elt)))
+ ;; ;; not enabled, ignore any changes to this map...?
+ ;; elt)
+ ((eq (car elt) 'ergoemacs-mode) elt)
+ ((and (not (setq type (ergoemacs (cdr elt) :installed-p)))
ergoemacs-mode)
+ ;; Install `ergoemacs-mode' into the keymap
+ (ergoemacs-map--alist-atom (car elt) (cdr elt) breadcrumb-base))
+ ((not type)
+ ;; Install `ergoemacs-mode' user protection into the
+ ;; keymap.
+ (ergoemacs-map--alist-atom (car elt) (cdr elt) breadcrumb-base
t))
+ ((eq :cond-map type)
+ ;; Don't change conditional maps. Change in alists...?
+ elt)
+ ((and ergoemacs-mode (eq :protected-p type))
+ ;; Change protection into full ergoemacs-mode installation
+ (ergoemacs-map--alist-atom (car elt) (ergoemacs (cdr elt)
:original) breadcrumb-base))
+ ((eq :protected-p type)
+ ;; Already protected.
+ elt)
+ ((and ergoemacs-mode type)
+ ;; Already installed
+ elt)
+ ((and (not ergoemacs-mode) type)
+ (ergoemacs-map--alist-atom (car elt) (ergoemacs (cdr elt)
:original-user) breadcrumb-base))))
+ alist)
+ (setq ergoemacs-map--breadcrumb old-breadcrumb)
(setq ergoemacs-map--alist-atom-symbol-reset-when-volatile nil)))))
(defvar ergoemacs-map--alists (make-hash-table))
diff --git a/ergoemacs-mapkeymap.el b/ergoemacs-mapkeymap.el
index 6f8a509c06..7850a369b5 100644
--- a/ergoemacs-mapkeymap.el
+++ b/ergoemacs-mapkeymap.el
@@ -136,7 +136,7 @@ them to be masked when mapping over the keymap."
(make-keymap))))
composed-list
parent
- calc-parent-p
+ ;; calc-parent-p
prefix-map
tmp)
(when (not prefix)
@@ -164,9 +164,9 @@ them to be masked when mapping over the keymap."
(when function
(funcall function key 'ergoemacs-prefix))
(ergoemacs-map-keymap--map-submap item function original key
flat-keymap nil-keys)
- (unless calc-parent-p
+ ;; (unless calc-parent-p
(setq composed-list (ergoemacs :composed-list keymap)
- parent (keymap-parent keymap)))
+ parent (keymap-parent keymap)) ;;)
(if composed-list
(dolist (map composed-list)
(when (and (ergoemacs-keymapp map)
diff --git a/ergoemacs-mode.el b/ergoemacs-mode.el
index fa94c9ddc8..2c0eabcfb8 100644
--- a/ergoemacs-mode.el
+++ b/ergoemacs-mode.el
@@ -1,6 +1,6 @@
;;; ergoemacs-mode.el --- Emacs mode based on common modern interface and
ergonomics. -*- lexical-binding: t -*-
-;; Copyright © 2007-2010, 2012-2021 Free Software Foundation, Inc.
+;; Copyright © 2007-2023 Free Software Foundation, Inc.
;; Author: Xah Lee <xah@xahlee.org>
;; David Capello <davidcapello@gmail.com>
@@ -305,10 +305,10 @@ Home page URL `http://ergoemacs.github.io/'
The `execute-extended-command' is now \\[execute-extended-command].
"
- nil
:lighter " ErgoEmacs"
:global t
:group 'ergoemacs-mode
+ ;; FIXME: This var is only ever set: never used!
(setq ergoemacs-mode--start-p t)
(if ergoemacs-mode
(progn
@@ -335,7 +335,7 @@ The `execute-extended-command' is now
\\[execute-extended-command].
((string-equal ergoemacs-theme "reduction")
(ergoemacs-setup-override-keymap))
(t (ergoemacs-setup-override-keymap)))
- (setq ergoemacs-require--ini-p t
+ (setq ergoemacs-require--ini-p t ;FIXME: Unused?
ergoemacs-send-keys-term ergoemacs-mode-send-emacs-keys)
(message "Ergoemacs-mode turned ON (%s)." ergoemacs-keyboard-layout))
@@ -432,13 +432,12 @@ This is structured by valid keyboard layouts for
basic ergoemacs functionality. For example, if you want M-t to
transpose words instead of running completion, call
- (ergoemacs-define-key ergoemacs-override-keymap (kbd \"M-t\")
'transpose-words)
+ (ergoemacs-define-key ergoemacs-override-keymap (kbd \"M-t\")
#\\='transpose-words)
-after initializing ergoemacs-mode.
-")
+after initializing ergoemacs-mode.")
(defvar ergoemacs-mark-active-keymap (let ((map (make-sparse-keymap)))
- (define-key map (kbd "TAB")
'indent-region)
+ (define-key map (kbd "TAB")
#'indent-region)
(define-key map [(shift control x)]
'ergoemacs--shift-control-x-prefix)
(define-key map [(shift control c)]
'ergoemacs--shift-control-c-prefix)
map)
@@ -470,13 +469,14 @@ after initializing ergoemacs-mode.
(ergoemacs-mode-regular . ,ergoemacs-override-keymap)
(ergoemacs-mode-regular . ,ergoemacs-keymap)
(ergoemacs-mode-send-emacs-keys . ,ergoemacs--send-emacs-keys-map)))
- (add-hook 'emulation-mode-map-alists ergoemacs-override-alist)
+ (add-to-list 'emulation-mode-map-alists ergoemacs-override-alist)
(advice-add 'undefined :around #'ergoemacs-advice-undefined)
(advice-add 'read-key :around #'ergoemacs-read-key))
(defun ergoemacs-remove-override-keymap ()
"Remove `ergoemacs-mode' keymaps."
- (remove-hook 'emulation-mode-map-alists 'ergoemacs-override-alist)
+ (setq emulation-mode-map-alists
+ (delq ergoemacs-override-alist emulation-mode-map-alists))
(advice-remove 'undefined #'ergoemacs-advice-undefined)
(advice-remove 'read-key #'ergoemacs-read-key))
diff --git a/ergoemacs-test.el b/ergoemacs-test.el
index 5d8591fd40..eb278af377 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-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Maintainer: Matthew L. Fidler
;; Keywords: convenience
@@ -28,6 +28,10 @@
;;; Code:
+(require 'ergoemacs-functions)
+(require 'ergoemacs-command-loop)
+(require 'ergoemacs-translate)
+
(eval-when-compile
(require 'cl-lib)
(require 'ergoemacs-macros))
@@ -135,8 +139,9 @@ sunt in culpa qui officia deserunt mollit anim id est
laborum.")
(defun ergoemacs-test ()
"Test ergoemacs issues."
(interactive)
- (let ((ret t)
- (test))
+ (let (;; (ret t)
+ ;; (test)
+ )
(elp-instrument-package "ergoemacs-")
(ert "^ergoemacs-test-")
(call-interactively 'elp-results)))
@@ -174,16 +179,16 @@ not using cua or cutting line. I think kill-region is
what is meant."
(goto-char (point-max))
(call-interactively 'ergoemacs-beginning-of-line-or-what)
(should (string= "Turn on ergoemacs-mode"
- (buffer-substring (point) (point-at-eol))))
+ (buffer-substring (point) (line-end-position))))
(call-interactively 'ergoemacs-beginning-of-line-or-what)
(should (string= " ; Turn on ergoemacs-mode"
- (buffer-substring (point) (point-at-eol))))
+ (buffer-substring (point) (line-end-position))))
(call-interactively 'ergoemacs-beginning-of-line-or-what)
(should (string= "(ergoemacs-mode 1)) ; Turn on ergoemacs-mode"
- (buffer-substring (point) (point-at-eol))))
+ (buffer-substring (point) (line-end-position))))
(call-interactively 'ergoemacs-beginning-of-line-or-what)
(should (string= " (ergoemacs-mode 1)) ; Turn on ergoemacs-mode"
- (buffer-substring (point) (point-at-eol)))))))
+ (buffer-substring (point) (line-end-position)))))))
(ert-deftest ergoemacs-test-function-eol-or-what ()
@@ -198,9 +203,9 @@ not using cua or cutting line. I think kill-region is what
is meant."
(call-interactively 'ergoemacs-end-of-line-or-what)
(should (string= " ; Turn on ergoemacs-mode"
- (buffer-substring (point) (point-at-eol))))
+ (buffer-substring (point) (line-end-position))))
(call-interactively 'ergoemacs-end-of-line-or-what)
- (should (= (point) (point-at-eol))))))
+ (should (= (point) (line-end-position))))))
(ert-deftest ergoemacs-test-function-unbind-commands-active ()
"Make sure the unbound keys work"
@@ -243,7 +248,7 @@ See Issue #138."
(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))
@@ -346,16 +351,15 @@ See Issue #138."
"Major mode for testing some issues with `ergoemacs-mode'.
\\{ergoemacs-test-major-mode-map}")
-(define-key ergoemacs-test-major-mode-map (kbd "C-s") 'search-forward)
-(define-key ergoemacs-test-major-mode-map (kbd "<f6>") 'search-forward)
-(define-key ergoemacs-test-major-mode-map (kbd "M-s a") 'isearch-forward)
-(define-key ergoemacs-test-major-mode-map (kbd "M-s b") 'isearch-backward)
+(define-key ergoemacs-test-major-mode-map (kbd "C-s") #'search-forward)
+(define-key ergoemacs-test-major-mode-map (kbd "<f6>") #'search-forward)
+(define-key ergoemacs-test-major-mode-map (kbd "M-s a") #'isearch-forward)
+(define-key ergoemacs-test-major-mode-map (kbd "M-s b") #'isearch-backward)
-(let ((ergoemacs-is-user-defined-map-change-p t))
+;; (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()
+ (define-key ergoemacs-test-major-mode-map (kbd "C-w")
#'ergoemacs-close-current-buffer))) ;; )
(ert-deftest ergoemacs-test-issue-349 ()
"Unbind <f6>"
@@ -388,10 +392,12 @@ See Issue #138."
(when (file-exists-p w-file)
(delete-file w-file))))
+(defvar ergoemacs-use-function-remapping)
+
(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
+ (let (;; ret
(ergoemacs-use-function-remapping t))
(with-temp-buffer
(ergoemacs-test-major-mode)
@@ -401,55 +407,48 @@ Part of addressing Issue #147."
;; The user-defined C-w should not affect kill-region remaps.
(should (not (eq (key-binding [ergoemacs-remap kill-region])
'ergoemacs-close-current-buffer))))))
+
+(require 'dired)
+
+(defvar ergoemacs-test--dired-sort-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "s"
+ (lambda () "sort by Size"
+ (interactive) (dired-sort-other (concat dired-listing-switches "-AlS
--si --time-style long-iso"))))
+ (define-key map "."
+ (lambda () "sort by eXtension"
+ (interactive) (dired-sort-other (concat dired-listing-switches "X"))))
+ (define-key map "t"
+ (lambda () "sort by Time"
+ (interactive) (dired-sort-other (concat dired-listing-switches "t"))))
+ (define-key map "n"
+ (lambda () "sort by Name"
+ (interactive) (dired-sort-other (concat dired-listing-switches ""))))
+ map))
+
+
+(defun ergoemacs-test--dired-hook ()
+ (define-key dired-mode-map "s" ergoemacs-test--dired-sort-map)
+ ;; Use "|", not "r".
+ (define-key dired-mode-map "|" #'dired-sort-menu-toggle-reverse)
+ )
+
(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)
- ))
+ (add-hook 'dired-mode-hook #'ergoemacs-test--dired-hook)
(dired ergoemacs-dir)
- (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))
+ (should (equal (key-binding (kbd "s s"))
+ (lookup-key "s" ergoemacs-test--dired-sort-map)))
+ (should (equal (key-binding (kbd "s ."))
+ (lookup-key "." ergoemacs-test--dired-sort-map)))
+ (should (equal (key-binding (kbd "s t"))
+ (lookup-key "t" ergoemacs-test--dired-sort-map)))
+ (should (equal (key-binding (kbd "s n"))
+ (lookup-key "n" ergoemacs-test--dired-sort-map)))
+ (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)
- )))
+ ;; FIXME: This does not restore `dired-mode-map'!
+ (remove-hook 'dired-mode-hook #'ergoemacs-test--dired-hook))
(ert-deftest ergoemacs-test-quail-translations ()
diff --git a/ergoemacs-theme-engine.el b/ergoemacs-theme-engine.el
index 78accc051f..1f6785e621 100644
--- a/ergoemacs-theme-engine.el
+++ b/ergoemacs-theme-engine.el
@@ -1,6 +1,6 @@
;;; ergoemacs-theme-engine.el --- Ergoemacs map interface -*- lexical-binding:
t -*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Filename: ergoemacs-theme-engine.el
;; Description:
@@ -135,7 +135,7 @@
(message "Wrote current ergoemacs bindings to ~/.inputrc")))
;;;###autoload
-(defalias 'ergoemacs-bash 'ergoemacs-theme-create-bash)
+(defalias 'ergoemacs-bash #'ergoemacs-theme-create-bash)
(defcustom ergoemacs-function-short-names
'((abort-recursive-edit "abort edit")
@@ -417,8 +417,7 @@ current buffer."
(setq ergoemacs-command-loop--read-key-prompt ""))))
(when (arrayp key-list)
;; Compatibility with old calling convention.
- (setq key-list (con
- s (list key-list) (if up-event (list up-event))))
+ (setq key-list (cons (list key-list) (if up-event (list up-event))))
(when buffer
(let ((raw (if (numberp buffer) (this-single-command-raw-keys) buffer)))
(setf (cdar (last key-list)) raw)))
@@ -753,7 +752,7 @@ to png files."
"ergoemacs-png-convert" "*ergoemacs-theme-png-convert*"
(nth 1 png-info))
ergoemacs-theme--png-last (nth 2 png-info))
- (set-process-sentinel process 'ergoemacs-theme--png--process))))))
+ (set-process-sentinel process #'ergoemacs-theme--png--process))))))
(defun ergoemacs-theme--png (&optional layout full-p reread)
"Get png file for layout, or create one.
diff --git a/ergoemacs-themes.el b/ergoemacs-themes.el
index 539661da56..032bed4879 100644
--- a/ergoemacs-themes.el
+++ b/ergoemacs-themes.el
@@ -1,6 +1,6 @@
;;; ergoemacs-themes.el --- ErgoEmacs keybindings and themes -*-
lexical-binding: t -*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Maintainer: Matthew L. Fidler
;; Authors: Matthew L. Fidler, Xah Lee, Drew Adams
@@ -30,15 +30,15 @@
(require 'ibuffer)
(defun ergoemacs-global-set-key (key command &optional extra-keys)
- "Translates KEY from a 'us' layout to the current layout.
+ "Translates KEY from a `us' layout to the current layout.
This also sets the binding as a global binding as COMMAND.
-For example, if your layout is 'us', the command
+For example, if your layout is `us', the command
- (ergoemaces-global-set-key (kbd \"M-k\") 'next-line)
+ (ergoemacs-global-set-key (kbd \"M-k\") #\\='next-line)
-will bind 'Meta-k' to next-line. If your layout is 'colemak', it will bind
-'Meta-e' to next-line.
+will bind `Meta-k' to next-line. If your layout is `colemak', it will bind
+`Meta-e' to next-line.
EXTRA-KEYS are untranslated keys that are appended."
(if extra-keys
@@ -51,16 +51,16 @@ EXTRA-KEYS are untranslated keys that are appended."
command)))
(defun ergoemacs-define-key (map key command &optional extra-keys)
- "Translates KEY from a 'us' layout to the current layout.
+ "Translates KEY from a `us' layout to the current layout.
In this case, the key is then defined in the MAP to run COMMAND.
-For example, if your layout is 'us', the command
+For example, if your layout is `us', the command
- (ergoemacs-define-key keymap (kbd \"M-k\") 'next-line)
+ (ergoemacs-define-key keymap (kbd \"M-k\") #\\='next-line)
-will bind 'Meta-k' to next-line. If your layout is 'colemak', it will bind
-'Meta-e' to next-line.
+will bind `Meta-k' to next-line. If your layout is `colemak', it will bind
+`Meta-e' to next-line.
EXTRA-KEYS are untranslated keys that are appended."
(if extra-keys
diff --git a/ergoemacs-translate.el b/ergoemacs-translate.el
index 31e923155a..cd4499ac6b 100644
--- a/ergoemacs-translate.el
+++ b/ergoemacs-translate.el
@@ -1,6 +1,6 @@
;;; ergoemacs-translate.el --- Keyboard translation functions -*-
lexical-binding: t -*-
-;; Copyright © 2013-2021 Free Software Foundation, Inc.
+;; Copyright © 2013-2023 Free Software Foundation, Inc.
;; Filename: ergoemacs-translate.el
;; Description:
@@ -122,7 +122,7 @@
hash-f-t)))
(defun ergoemacs-translate--emacs-shift (key-seq &optional modifier prefix)
- "Uses emacs style shift-translation: M-Q becomes M-q.
+ "Uses Emacs style shift-translation: M-Q becomes M-q.
KEY-SEQ must be a vector. If there is no need to shift-translate
the key sequence return nil.
@@ -131,7 +131,7 @@ Optionally you can change how this function behaves.
Instead of translating the shifted key to the unshifted key, you
can remove another modifier. For example if you wanted to
-convert C-M-a to C-a, you could use 'meta as the MODIFIER
+convert C-M-a to C-a, you could use `meta' as the MODIFIER
argument to remove the M- modifier.
The PREFIX argument can add a key before the key where the
@@ -247,7 +247,7 @@ This will shift translate Alt+# to Alt+3."
(not (eq (event-convert-list (list 'shift (setq basic
(event-basic-type (aref key 0)))))
(ergoemacs-translate--event-convert-list (list
'ergoemacs-shift basic)))))
(setq ergoemacs-translate--define-key-if-defined-p nil
- ergoemacs-translate--define-key-replacement-function
'ergoemacs-command-loop--shift-translate)
+ ergoemacs-translate--define-key-replacement-function
#'ergoemacs-command-loop--shift-translate)
(vector (ergoemacs-translate--event-convert-list (append modifiers (list
'ergoemacs-shift basic)))))))
(defun ergoemacs-translate--ergoemacs-timeout (key)
@@ -266,7 +266,7 @@ seleceted (instead of copying the text)."
(memq 'ergoemacs-shift modifiers))))
(setq basic (ergoemacs-translate--event-basic-type (aref key 0))
ergoemacs-translate--define-key-if-defined-p nil
- ergoemacs-translate--define-key-replacement-function
'ergoemacs-command-loop--shift-timeout)
+ ergoemacs-translate--define-key-replacement-function
#'ergoemacs-command-loop--shift-timeout)
(vector (ergoemacs-translate--event-convert-list (append modifiers (list
'shift basic)))))))
(defun ergoemacs-translate--to-string (key)
@@ -355,8 +355,8 @@ This uses `ergoemacs-translate--apply-key'"
(defun ergoemacs-translate--event-modifiers (event &optional layout)
"Return a list of symbols representing the modifier keys in event EVENT.
This is different than `event-modifiers' in two ways:
-- Symbol keys like # will return 'ergoemacs-shift for a QWERTY keyboard.
-- Special keys like C-RET will return 'ergoemacs-control
+- Symbol keys like # will return `ergoemacs-shift' for a QWERTY keyboard.
+- Special keys like C-RET will return `ergoemacs-control'
LAYOUT is the keyboard layout."
(let ((modifiers (event-modifiers event))
tmp
@@ -407,7 +407,7 @@ MODIFIERS is the precalculated modifiers from
`ergoemacs-translate--event-modifiers'."
(if (vectorp event)
(progn
- (apply 'vector (mapcar (lambda(x) (ergoemacs-translate--event-layout x
layout-to layout-from basic modifiers)) event)))
+ (apply #'vector (mapcar (lambda(x) (ergoemacs-translate--event-layout
x layout-to layout-from basic modifiers)) event)))
(let* ((basic (or basic (ergoemacs-translate--event-basic-type event
layout-from)))
(modifiers (or modifiers (ergoemacs-translate--event-modifiers
event layout-from)))
new-modifiers
@@ -450,9 +450,9 @@ This also translates <C-i> to ?i, <C-m> to ?m <C-[> to ?[
(defun ergoemacs-translate--event-convert-list (list &optional layout)
"Convert the event description LIST to an event type.
This is different than `event-convert-list' because:
- - '(shift ?3) or '(ergoemacs-shift ?3) produces ?# on a QWERTY LAYOUT.
- - '(ergoemacs-control control ?m) produces C-RET
- - '(ergoemacs-gui control ?m) produces <C-m>. this applies for ?i and ?[ as
well.
+ - (shift ?3) or (ergoemacs-shift ?3) produces ?# on a QWERTY LAYOUT.
+ - (ergoemacs-control control ?m) produces C-RET
+ - (ergoemacs-gui control ?m) produces <C-m>. this applies for ?i and ?[ as
well.
- Mouse events allow click modifiers"
(let ((cur-list list)
elt
@@ -759,9 +759,9 @@ When NAME is a symbol, setup the translation function for
the symbol."
(dolist (type '("-universal-argument" "-negative-argument"
"-digit-argument" "-modal"))
(fset (intern (concat "ergoemacs-translate--" name-str type))
- 'ergoemacs-translate--setup-command-loop)
+ #'ergoemacs-translate--setup-command-loop)
(fset (intern (concat "ergoemacs-" name-str type))
- 'ergoemacs-translate--setup-command-loop)
+ #'ergoemacs-translate--setup-command-loop)
(when (string= type "-universal-argument")
(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))))))
@@ -1100,10 +1100,10 @@ This takes into consideration the modal state of
`ergoemacs-mode'."
(defun ergoemacs-translate--ahk-ini (&optional all-layouts all-themes)
"Creates the ini file used with the autohotkey script."
- (let ((layouts (or (and all-layouts (sort (ergoemacs-layouts--list)
'string<))
+ (let ((layouts (or (and all-layouts (sort (ergoemacs-layouts--list)
#'string<))
(and (eq (ergoemacs :layout) 'ergoemacs-layout-us) (list
"us"))
(list "us" ergoemacs-keyboard-layout)))
- (themes (or (and all-themes (sort (ergoemacs-theme--list) 'string<))
+ (themes (or (and all-themes (sort (ergoemacs-theme--list) #'string<))
(list ergoemacs-theme)))
(original-layout ergoemacs-keyboard-layout)
(original-theme ergoemacs-theme)