-(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)
(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)
(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)
(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)
(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)
`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