branch: externals/ergoemacs-mode commit 21624e9eb242c912f4ead2a430c7060082c17d01 Author: Matthew Fidler <514778+mattfid...@users.noreply.github.com> Commit: Matthew Fidler <514778+mattfid...@users.noreply.github.com>
Bug fix for calculate bindings and update for the modes modified --- ergoemacs-calculate-bindings.el | 90 ++++++++++++++++--------------- ergoemacs-key-description.el | 8 --- ergoemacs-themes.el | 115 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 156 insertions(+), 57 deletions(-) diff --git a/ergoemacs-calculate-bindings.el b/ergoemacs-calculate-bindings.el index 2612d2e..f09b8e7 100644 --- a/ergoemacs-calculate-bindings.el +++ b/ergoemacs-calculate-bindings.el @@ -110,17 +110,19 @@ (declare-function ergoemacs-translate--event-layout "ergoemacs-translate") (declare-function help--symbol-completion-table "help-fns") -(defun ergoemacs-calculate-bindings-for-current-binding (keymap space) +(defun ergoemacs-calculate-bindings-for-current-binding (keymap space cb) "Calculate ergoemcs keybindings for a KEYMAP and dislay in another buffer. -SPACE represents the amount of sacing to add" +SPACE represents the amount of sacing to add +CB is the buffer to use for keymap" (dolist (elt ergoemacs-lookup-bindings-list) (let* ((command (nth 1 elt)) (key (nth 0 elt)) (key-code (read-kbd-macro key)) - (bind (lookup-key (symbol-value keymap) key-code))) - (when bind + (bind (with-current-buffer cb + (lookup-key (symbol-value keymap) key-code)))) + (when (commandp bind) (dolist (ergoemacs-command (where-is-internal command ergoemacs-override-keymap nil t t)) - (insert (format "%s(ergoemacs-define-key %s (kbd \"%s\") '%s)" space (symbol-name keymap) + (insert (format "%s(ergoemacs-define-key %s (kbd \"%s\") '%s)" space (symbol-name keymap) (key-description (ergoemacs-translate--event-layout ergoemacs-command "us" ergoemacs-keyboard-layout)) (symbol-name bind)))))))) @@ -129,43 +131,47 @@ SPACE represents the amount of sacing to add" (defun ergoemacs-calculate-bindings-for-both-themes (keymap) "Calculates ergoemacs-style bindings for KEYMAP." (interactive - (let ((v (variable-at-point)) - (enable-recursive-minibuffers t) - (orig-buffer (current-buffer)) - val) - (setq val (completing-read - (if (and (symbolp v) (keymapp (symbol-value v))) - (format - "Calculate egoemacs-mode keybindings for keymap (default %s): " v) - "Calculate ergoemacs-mode keybindings: ") - #'help--symbol-completion-table - (lambda (vv) - ;; In case the variable only exists in the buffer - ;; the command we switch back to that buffer before - ;; we examine the variable. - (with-current-buffer orig-buffer - (and (boundp vv) (keymapp (symbol-value vv))))) - t nil nil - (if (and (symbolp v) (keymapp (symbol-value v))) - (symbol-name v)))) - (list (if (equal val "") - v (intern val))))) - (when (stringp v) - (error "This funcion requires a keymap")) - (setq ergoemacs-calculate-bindings-for-both-theme--tmp - (copy-keymap ergoemacs-override-keymap) - ergoemacs-override-keymap (make-sparse-keymap)) - (let ((buf (get-buffer-create (format "*ergoemacs keybindings for keymap %s*" keymap)))) - (with-output-to-temp-buffer buf - (with-current-buffer buf - (insert "(if (string-equal ergoemacs-theme \"reduction\")\n (progn") - (ergoemacs-install-reduction-theme) - (ergoemacs-calculate-bindings-for-current-binding keymap "\n ") - (insert ")") - (setq ergoemacs-override-keymap (make-sparse-keymap)) - (ergoemacs-install-standard-theme) - (ergoemacs-calculate-bindings-for-current-binding keymap "\n ") - (insert ")")))) + (save-excursion + (let* ((v (variable-at-point)) + (enable-recursive-minibuffers t) + (orig-buffer (current-buffer)) + val) + (setq val (completing-read + (if (and (symbolp v) (keymapp (symbol-value v))) + (format + "Calculate egoemacs-mode keybindings for keymap (default %s): " v) + "Calculate ergoemacs-mode keybindings: ") + #'help--symbol-completion-table + (lambda (vv) + ;; In case the variable only exists in the buffer + ;; the command we switch back to that buffer before + ;; we examine the variable. + (with-current-buffer orig-buffer + (and (boundp vv) (keymapp (symbol-value vv))))) + t nil nil + (if (and (symbolp v) (keymapp (symbol-value v))) + (symbol-name v)))) + (list (if (equal val "") v (intern val)))))) + (let ((cb (current-buffer))) + (unless cb + (error "Cannot determine the buffer")) + (prin1 (type-of keymap)) + (setq ergoemacs-calculate-bindings-for-both-theme--tmp + (copy-keymap ergoemacs-override-keymap) + ergoemacs-override-keymap (make-sparse-keymap)) + (let ((buf (get-buffer-create (format "*ergoemacs keybindings for keymap %s*" (symbol-name keymap))))) + (with-output-to-temp-buffer buf + (with-current-buffer buf + (insert "(ergoemacs-save-key-state '") + (insert (symbol-name keymap)) + (insert " (if (string-equal ergoemacs-theme \"reduction\")\n (progn") + (ergoemacs-install-reduction-theme) + (ergoemacs-calculate-bindings-for-current-binding keymap "\n " cb) + (insert ")") + (setq ergoemacs-override-keymap (make-sparse-keymap)) + (ergoemacs-install-standard-theme) + (ergoemacs-calculate-bindings-for-current-binding keymap "\n " cb) + (insert "))"))))) (setq ergoemacs-override-keymap ergoemacs-calculate-bindings-for-both-theme--tmp ergoemacs-calculate-bindings-for-both-theme--tmp nil)) diff --git a/ergoemacs-key-description.el b/ergoemacs-key-description.el index 0bd9acd..1ba401c 100644 --- a/ergoemacs-key-description.el +++ b/ergoemacs-key-description.el @@ -70,8 +70,6 @@ (declare-function ergoemacs-map--cache-- "ergoemacs-map") -(declare-function ergoemacs-component--help-link "ergoemacs-component") - (declare-function ergoemacs-map-keymap "ergoemacs-mapkeymap") (declare-function ergoemacs-advice--real-substitute-command-keys "C") @@ -448,12 +446,6 @@ KBD is the keyboard code. LAYOUT is the layout that is used." (setq ret (cons 'ergoemacs-component-help (nth 1 ret))))) ret)) -(defun ergoemacs-key-description--setup-xrefs () - "Setup cross refecnes in help buffer." - (ergoemacs-component--help-link)) - -(add-hook 'temp-buffer-show-hook 'ergoemacs-key-description--setup-xrefs) - (defun ergoemacs-key-description--keymap-item (&optional elt keymap help) "Get keymap description for ELT based on KEYMAP. diff --git a/ergoemacs-themes.el b/ergoemacs-themes.el index af6b3ce..fa9567a 100644 --- a/ergoemacs-themes.el +++ b/ergoemacs-themes.el @@ -1369,7 +1369,19 @@ In a terminal, this can be either arrow keys (e.g. meta+O A == <up>) or regular (define-key org-mode-map [remap end-of-line] 'org-end-of-line) (define-key org-mode-map [remap forward-paragraph] 'org-forward-paragraph) (define-key org-mode-map [remap backward-paragraph] 'org-backward-paragraph) - (define-key org-mode-map [remap ergoemacs-paste] 'ergoemacs-org-yank))) + (define-key org-mode-map [remap ergoemacs-paste] 'ergoemacs-org-yank) + (if (string-equal ergoemacs-theme "reduction") + (progn + (ergoemacs-define-key org-mode-map (kbd "<C-up>") 'org-backward-element) + (ergoemacs-define-key org-mode-map (kbd "<C-down>") 'org-forward-element) + (ergoemacs-define-key org-mode-map (kbd "<M-up>") 'org-backward-element) + (ergoemacs-define-key org-mode-map (kbd "<M-down>") 'org-forward-element)) + (ergoemacs-define-key org-mode-map (kbd "M-U") 'org-backward-element) + (ergoemacs-define-key org-mode-map (kbd "<C-up>") 'org-backward-element) + (ergoemacs-define-key org-mode-map (kbd "M-O") 'org-forward-element) + (ergoemacs-define-key org-mode-map (kbd "<C-down>") 'org-forward-element) + (ergoemacs-define-key org-mode-map (kbd "<M-up>") 'org-backward-element) + (ergoemacs-define-key org-mode-map (kbd "<M-down>") 'org-forward-element)))) (add-hook 'org-load-hook #'ergoemacs-install-org-bindings) @@ -1378,7 +1390,13 @@ In a terminal, this can be either arrow keys (e.g. meta+O A == <up>) or regular "Install `log-edit' key bindings." (ergoemacs-save-key-state 'log-edit-mode-map - (define-key log-edit-mode-map [remap save-buffer] 'log-edit-done))) + (define-key log-edit-mode-map [remap save-buffer] 'log-edit-done) + (if (string-equal ergoemacs-theme "reduction") + (progn + (ergoemacs-define-key log-edit-mode-map (kbd "M-m") 'log-edit-beginning-of-line) + (ergoemacs-define-key log-edit-mode-map (kbd "<home>") 'log-edit-beginning-of-line)) + (ergoemacs-define-key log-edit-mode-map (kbd "<home>") 'log-edit-beginning-of-line) + (ergoemacs-define-key log-edit-mode-map (kbd "M-h") 'log-edit-beginning-of-line)))) (with-eval-after-load 'log-edit (ergoemacs-install-log-edit-bindings)) @@ -1387,21 +1405,62 @@ In a terminal, this can be either arrow keys (e.g. meta+O A == <up>) or regular "Install `eshell' bindings." (ergoemacs-save-key-state 'eshell-mode-map - (define-key eshell-mode-map [remap move-beginning-of-line] 'eshell-bol))) + (define-key eshell-mode-map [remap move-beginning-of-line] 'eshell-bol) + (if (string-equal ergoemacs-theme "reduction") + (progn + (ergoemacs-define-key eshell-mode-map (kbd "M-m") 'eshell-bol) + (ergoemacs-define-key eshell-mode-map (kbd "<home>") 'eshell-bol) + (ergoemacs-define-key eshell-mode-map (kbd "M-t") 'eshell-complete-lisp-symbol)) + (ergoemacs-define-key eshell-mode-map (kbd "<home>") 'eshell-bol) + (ergoemacs-define-key eshell-mode-map (kbd "M-h") 'eshell-bol) + (ergoemacs-define-key eshell-mode-map (kbd "M-t") 'eshell-complete-lisp-symbol)))) + (add-hook 'eshell-post-command-hook #'ergoemacs-install-eshell-bindings) (defun ergoemacs-install-comint-bindings () "Install comint key bindings." (ergoemacs-save-key-state 'comint-mode-map - (define-key comint-mode-map [remap move-beginning-of-line] 'comint-bol))) + (define-key comint-mode-map [remap move-beginning-of-line] 'comint-bol) + (if (string-equal ergoemacs-theme "reduction") + (progn + (ergoemacs-define-key comint-mode-map (kbd "<delete>") 'comint-delchar-or-maybe-eof) + (ergoemacs-define-key comint-mode-map (kbd "M-f") 'comint-delchar-or-maybe-eof) + (ergoemacs-define-key comint-mode-map (kbd "C-g") 'comint-delchar-or-maybe-eof)) + (ergoemacs-define-key comint-mode-map (kbd "<delete>") 'comint-delchar-or-maybe-eof) + (ergoemacs-define-key comint-mode-map (kbd "M-f") 'comint-delchar-or-maybe-eof) + (ergoemacs-define-key comint-mode-map (kbd "C-g") 'comint-delchar-or-maybe-eof)))) (with-eval-after-load 'comint (ergoemacs-install-comint-bindings)) (defun ergoemacs-install-dired-bindings () "Install `dired-mode-map' bindings." - (define-key dired-mode-map [remap query-replace] 'dired-do-query-replace-regexp) - (define-key dired-mode-map [remap query-replace-regexp] 'dired-do-query-replace-regexp)) + (ergoemacs-save-key-state + 'dired-mode-map + (define-key dired-mode-map [remap query-replace] 'dired-do-query-replace-regexp) + (define-key dired-mode-map [remap query-replace-regexp] 'dired-do-query-replace-regexp) + (if (string-equal ergoemacs-theme "reduction") + (progn + (ergoemacs-define-key dired-mode-map (kbd "M-d") 'dired-unmark-backward) + (ergoemacs-define-key dired-mode-map (kbd "DEL") 'dired-unmark-backward) + (ergoemacs-define-key dired-mode-map (kbd "M-e") 'dired-unmark-all-files) + (ergoemacs-define-key dired-mode-map (kbd "<C-backspace>") 'dired-unmark-all-files) + (ergoemacs-define-key dired-mode-map (kbd "M-DEL") 'dired-unmark-all-files) + (ergoemacs-define-key dired-mode-map (kbd "<C-up>") 'dired-prev-marked-file) + (ergoemacs-define-key dired-mode-map (kbd "<C-down>") 'dired-next-marked-file) + (ergoemacs-define-key dired-mode-map (kbd "<M-up>") 'dired-prev-marked-file) + (ergoemacs-define-key dired-mode-map (kbd "<M-down>") 'dired-next-marked-file)) + (ergoemacs-define-key dired-mode-map (kbd "M-d") 'dired-unmark-backward) + (ergoemacs-define-key dired-mode-map (kbd "DEL") 'dired-unmark-backward) + (ergoemacs-define-key dired-mode-map (kbd "M-e") 'dired-unmark-all-files) + (ergoemacs-define-key dired-mode-map (kbd "<C-backspace>") 'dired-unmark-all-files) + (ergoemacs-define-key dired-mode-map (kbd "M-DEL") 'dired-unmark-all-files) + (ergoemacs-define-key dired-mode-map (kbd "M-U") 'dired-prev-marked-file) + (ergoemacs-define-key dired-mode-map (kbd "<C-up>") 'dired-prev-marked-file) + (ergoemacs-define-key dired-mode-map (kbd "M-O") 'dired-next-marked-file) + (ergoemacs-define-key dired-mode-map (kbd "<C-down>") 'dired-next-marked-file) + (ergoemacs-define-key dired-mode-map (kbd "<M-up>") 'dired-prev-marked-file) + (ergoemacs-define-key dired-mode-map (kbd "<M-down>") 'dired-next-marked-file)))) (add-hook 'dired-load-hook #'ergoemacs-install-dired-bindings) (defvar calc-mode-map) @@ -1409,7 +1468,49 @@ In a terminal, this can be either arrow keys (e.g. meta+O A == <up>) or regular "Install `calc-mode' bindings." (ergoemacs-save-key-state 'comint-mode-map - (define-key calc-mode-map [remap ergoemacs-undo] 'calc-undo))) + (define-key calc-mode-map [remap ergoemacs-undo] 'calc-undo) + (if (string-equal ergoemacs-theme "reduction") + (progn + (ergoemacs-define-key calc-mode-map (kbd "M-d") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "DEL") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "<delete>") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "M-f") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "C-g") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "M-e") 'calc-pop-above) + (ergoemacs-define-key calc-mode-map (kbd "<C-backspace>") 'calc-pop-above) + (ergoemacs-define-key calc-mode-map (kbd "M-DEL") 'calc-pop-above) + (ergoemacs-define-key calc-mode-map (kbd "<C-insert>") 'calc-copy-region-as-kill) + (ergoemacs-define-key calc-mode-map (kbd "<menu> c") 'calc-copy-region-as-kill) + (ergoemacs-define-key calc-mode-map (kbd "M-c") 'calc-copy-region-as-kill) + (ergoemacs-define-key calc-mode-map (kbd "<S-insert>") 'calc-yank) + (ergoemacs-define-key calc-mode-map (kbd "C-v") 'calc-yank) + (ergoemacs-define-key calc-mode-map (kbd "<remap> <cua-paste>") 'calc-yank) + (ergoemacs-define-key calc-mode-map (kbd "<menu> v") 'calc-yank) + (ergoemacs-define-key calc-mode-map (kbd "M-v") 'calc-yank) + (ergoemacs-define-key calc-mode-map (kbd "<menu> 5") 'calc-percent) + (ergoemacs-define-key calc-mode-map (kbd "M-5") 'calc-percent) + (ergoemacs-define-key calc-mode-map (kbd "M-g") 'calc-kill) + (ergoemacs-define-key calc-mode-map (kbd "<deleteline>") 'calc-kill) + (ergoemacs-define-key calc-mode-map (kbd "M-t") 'calc-roll-up)) + (ergoemacs-define-key calc-mode-map (kbd "M-d") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "DEL") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "<delete>") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "M-f") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "C-g") 'calc-pop) + (ergoemacs-define-key calc-mode-map (kbd "M-e") 'calc-pop-above) + (ergoemacs-define-key calc-mode-map (kbd "<C-backspace>") 'calc-pop-above) + (ergoemacs-define-key calc-mode-map (kbd "M-DEL") 'calc-pop-above) + (ergoemacs-define-key calc-mode-map (kbd "<C-insert>") 'calc-copy-region-as-kill) + (ergoemacs-define-key calc-mode-map (kbd "M-c") 'calc-copy-region-as-kill) + (ergoemacs-define-key calc-mode-map (kbd "<S-insert>") 'calc-yank) + (ergoemacs-define-key calc-mode-map (kbd "C-v") 'calc-yank) + (ergoemacs-define-key calc-mode-map (kbd "<remap> <cua-paste>") 'calc-yank) + (ergoemacs-define-key calc-mode-map (kbd "M-v") 'calc-yank) + (ergoemacs-define-key calc-mode-map (kbd "M-5") 'calc-percent) + (ergoemacs-define-key calc-mode-map (kbd "M-g") 'calc-kill) + (ergoemacs-define-key calc-mode-map (kbd "<deleteline>") 'calc-kill) + (ergoemacs-define-key calc-mode-map (kbd "M-t") 'calc-roll-up)))) + (add-hook 'calc-load-hook #'ergoemacs-install-calc-bindings) (ergoemacs-translation normal ()