X-Git-Url: https://plomlompom.com/repos/?p=plomvi.el;a=blobdiff_plain;f=plomvi.el;h=577e674c1812f857d1fa1f19a46452c24ebbfcee;hp=4d1b9e3cfa5db15a21b6abffd7ea06a165e8529e;hb=01c1fcc4286f774711988b07d692a05cb185ec2e;hpb=c789535cda371cde21e6cd02a3394e9b7e6145b1 diff --git a/plomvi.el b/plomvi.el index 4d1b9e3..577e674 100644 --- a/plomvi.el +++ b/plomvi.el @@ -43,10 +43,6 @@ -(defun plomvi-nothing() - "Do nothing. Used to shadow self-insert bindings in `plomvi-mode-editable-map'." - (interactive)) - (defun plomvi-half-scroll() "Scroll down half a screen width." (interactive) @@ -193,29 +189,6 @@ Note that this ignores killed rectangles." (interactive "cplomvi-replace-char") (delete-char 1) (insert-char c) (left-char)) -;;; some attempt at a redo feature, not very successful, documented here for -;;; research purposes -; -;(setq plomvi-in-redo nil) ; should be made buffer-local -;(setq plomvi-undo-count 0) ; should be made buffer-local -;(defun plomvi-undo() -; (interactive) -; (undo-only) -; (setq plomvi-in-redo nil) -; (setq plomvi-undo-count (+ plomvi-undo-count 1))) -;(defun plomvi-redo() -; (interactive) -; (if (> plomvi-undo-count 0) -; (progn -; (if (null plomvi-in-redo) -; (progn -; (insert-char ?\s 1) -; (undo) -; (setq plomvi-in-redo t))) -; (progn -; (undo) -; (setq plomvi-undo-count (- plomvi-undo-count 1)))))) - (defun plomvi-no-redo() "Tell user what to do, since implementing vim redo was too much of a hassle." (interactive) @@ -234,12 +207,10 @@ Note that this ignores killed rectangles." (defvar plomvi-mode-basic-map (make-sparse-keymap) "Keymap for `plomvi-mode' on read-only buffers. -In contrast to the keymap `plomvi-editable-mode' for editable buffers, -this not only excludes keybindings for editing text, but also does not -shadow keybindings that are bound to `self-insert-command'. - -Thus, it on the whole shadows much fewer keybindings of other keymaps -that can therefore be used for other purposes.") +In contrast to the keymap `plomvi-editable-mode' for editable +buffers, this excludes keybindings for editing text, which thus +become available to be used for other purposes.") +(suppress-keymap plomvi-mode-basic-map t) (define-key plomvi-mode-basic-map (kbd ":") 'plomvi-prompt) (define-key plomvi-mode-basic-map (kbd "C-w") 'other-window) (define-key plomvi-mode-basic-map (kbd "k") 'previous-line) @@ -275,11 +246,9 @@ that can therefore be used for other purposes.") (defvar plomvi-mode-editable-map (make-sparse-keymap) "Keymap for `plomvi-mode' on editable buffers. -Inherits from `plomvi-mode-basic-map', but adds keybindings for text editing -and shadows keybindings bound to `self-insert-command' to avoid accidentally -typing text outside of what would be Vim's Insert mode.") +Inherits from `plomvi-mode-basic-map', but adds keybindings for +text editing.") (set-keymap-parent plomvi-mode-editable-map plomvi-mode-basic-map) -(define-key plomvi-mode-editable-map [remap self-insert-command] 'plomvi-nothing) (define-key plomvi-mode-editable-map (kbd "i") 'plomvi-deactivate) (define-key plomvi-mode-editable-map (kbd "x") 'plomvi-x) (define-key plomvi-mode-editable-map (kbd "o") 'plomvi-newline-below) @@ -287,8 +256,6 @@ typing text outside of what would be Vim's Insert mode.") (define-key plomvi-mode-editable-map (kbd "r") 'plomvi-replace-char) (define-key plomvi-mode-editable-map (kbd "u") 'undo-only) (define-key plomvi-mode-editable-map (kbd "C-r") 'plomvi-no-redo) -;(define-key plomvi-mode-editable-map (kbd "u") 'plomvi-undo) -;(define-key plomvi-mode-editable-map (kbd "C-r") 'plomvi-redo) (define-key plomvi-mode-editable-map (kbd "I") 'string-insert-rectangle) (define-key plomvi-mode-editable-map (kbd "p") 'plomvi-paste-forward) (define-key plomvi-mode-editable-map (kbd "P") 'plomvi-paste-backward) @@ -320,9 +287,9 @@ or, on editable buffers, `plomvi-mode-editable'. The latter two's values in `minor-mode-map-alist' toggle either `plomvi-mode-basic-map' or `plomvi-mode-editable-map'." (interactive (list (or current-prefix-arg 'toggle))) - (let ((enable (if (eq arg 'toggle) - (not plomvi-mode) - (> (prefix-numeric-value arg) 0 )))) + (let ((enable (if (eq arg 'toggle) ; follow suggestions + (not plomvi-mode) ; from (elisp)Minor + (> (prefix-numeric-value arg) 0 )))) ; Mode Conventions (if enable (unless (minibufferp) (if buffer-read-only