summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rekado-mode.el127
1 files changed, 0 insertions, 127 deletions
diff --git a/rekado-mode.el b/rekado-mode.el
deleted file mode 100644
index e7e4faa..0000000
--- a/rekado-mode.el
+++ /dev/null
@@ -1,127 +0,0 @@
-;;; -*- lexical-binding: t -*-
-
-;; ---------------- rekado minor mode --------------------
-(defvar rekado-permanent-mode-q nil "indicates whether permanent keys are active")
-(defvar rekado-mode-map (make-sparse-keymap) "keymap for rekado-mode")
-(defun rekado-mode-define-keys (define-permanent-keys)
- "Defines key bindings for rekado-mode. If the argument is t,
-the edit mode keys will be bound as well."
-
- ;; return a command that will enable transient-mark-mode if it isn't
- ;; yet active before running the command `cmd`
- (cl-labels ((transient-wrap (cmd)
- (lambda ()
- (interactive)
- (unless (and transient-mark-mode mark-active)
- (set-mark-command nil)
- (setq transient-mark-mode '(only . ,transient-mark-mode)))
- (funcall cmd))))
- (let* ((modal-keys
- `(("a" . move-beginning-of-line)
- ("e" . move-end-of-line)
-
- ;; jump to character
- ("f" . ace-jump-char-mode)
- ("i" . rekado-permanent-mode-exit)
- ;; undo as in vim
- ("u" . undo)
- ;; repeat as in vim
- ("." . repeat)
- ;; paste as in vim
- ("p" . (lambda ()
- (interactive)
- (next-line)
- (beginning-of-line)
- (yank)))
- ("P" . (lambda ()
- (interactive)
- (beginning-of-line)
- (yank)))
- ;; open line below/above as in vim
- ("o" . (lambda ()
- (interactive)
- (open-line-below)
- (rekado-permanent-mode-exit)))
- ("O" . (lambda ()
- (interactive)
- (open-line-above)
- (rekado-permanent-mode-exit)))
- ;; join lines (like J in vim)
- ("j" . (lambda ()
- (interactive)
- (join-line -1)))
- ;; change till the end of the line
- ("R" . (lambda ()
- (interactive)
- (kill-line)
- (rekado-permanent-mode-exit)))
- )))
- (progn
- ;; toggle permanent mode
- (define-key rekado-mode-map
- (kbd "<C-return>")
- 'rekado-permanent-mode-toggle)
-
- ;; toggle permanent mode
- (define-key rekado-mode-map
- (kbd "<M-SPC>")
- 'rekado-permanent-mode-toggle)
-
- (if define-permanent-keys
- ;; define permanent keys
- (progn
- (setq rekado-permanent-mode-q t)
- (mapc (lambda (pair)
- (define-key rekado-mode-map
- (kbd (car pair))
- (cdr pair)))
- modal-keys))
- ;; undefine permanent keys
- (progn
- (setq rekado-permanent-mode-q nil)
- (mapc (lambda (pair)
- (define-key rekado-mode-map
- (kbd (car pair))
- nil))
- modal-keys))))))
- rekado-mode-map)
-
-(defun open-line-below ()
- (interactive)
- (end-of-line)
- (newline)
- (indent-for-tab-command))
-
-(defun open-line-above ()
- (interactive)
- (beginning-of-line)
- (newline)
- (forward-line -1)
- (indent-for-tab-command))
-
-(defun rekado-permanent-mode-exit ()
- (interactive)
- (set-cursor-color "White")
- (rekado-mode-define-keys nil))
-
-(defun rekado-permanent-mode-toggle ()
- (interactive)
- (if rekado-permanent-mode-q
- (rekado-permanent-mode-exit)
- (progn
- (set-cursor-color "Red")
- (rekado-mode-define-keys 1))))
-
-;; disable permanent keys when in the minibuffer (also when running
-;; commands such as isearch)
-(add-hook 'post-command-hook (lambda () (if (minibufferp) (rekado-permanent-mode-exit))))
-
-(define-minor-mode rekado-mode
- "Cursor movement shortcuts while Alt is hold and editing
-shortcuts when permanent mode is active."
- :lighter " rekado"
- :global t
- :keymap rekado-mode-map
- :after-hook (rekado-mode-define-keys nil))
-
-(provide 'rekado-mode)