2017-08-09 01:34:07 +01:00
|
|
|
;;; lxdrive-mode --- A minor mode for fast cursor movement
|
|
|
|
;;; Commentary:
|
|
|
|
;;; Code:
|
2017-08-23 12:09:33 +01:00
|
|
|
|
2017-08-11 12:14:47 +01:00
|
|
|
(require 'expand-region)
|
2017-08-09 01:34:07 +01:00
|
|
|
|
|
|
|
(setq original-global-map global-map)
|
2017-08-10 11:53:00 +01:00
|
|
|
(boundp 'lxdrive-minor-mode)
|
2017-08-09 01:34:07 +01:00
|
|
|
|
|
|
|
(defun turn-off-lxdrive ()
|
2017-08-23 12:09:33 +01:00
|
|
|
"Toggle lxdrive mode."
|
2017-08-09 01:34:07 +01:00
|
|
|
(interactive)
|
|
|
|
(lxdrive-minor-mode nil)
|
2017-08-10 11:53:00 +01:00
|
|
|
(setq lxdrive-minor-mode nil)
|
2017-08-09 01:34:07 +01:00
|
|
|
(use-global-map original-global-map))
|
|
|
|
|
|
|
|
(defun turn-on-lxdrive ()
|
2017-08-23 12:09:33 +01:00
|
|
|
"Toggle lxdrive mode."
|
2017-08-09 01:34:07 +01:00
|
|
|
(interactive)
|
|
|
|
(lxdrive-minor-mode t)
|
|
|
|
(use-global-map lxdrive-mode-map))
|
|
|
|
|
2017-08-23 12:09:33 +01:00
|
|
|
(defun turn-off-and-command ()
|
|
|
|
"Turn off the lxdrive mode and run the counsel command."
|
2017-08-09 01:34:07 +01:00
|
|
|
(interactive)
|
|
|
|
(turn-off-lxdrive)
|
2017-08-23 12:09:33 +01:00
|
|
|
(counsel-M-x))
|
|
|
|
|
|
|
|
(defun switch-other ()
|
|
|
|
"Switch to the most recent buffer."
|
|
|
|
(interactive)
|
|
|
|
(switch-to-buffer (other-buffer)))
|
|
|
|
|
2017-08-09 01:34:07 +01:00
|
|
|
|
|
|
|
(defvar lxdrive-mode-map
|
|
|
|
(let ((map (make-sparse-keymap)))
|
|
|
|
;; Movement
|
|
|
|
(define-key map (kbd "l") 'forward-char)
|
|
|
|
(define-key map (kbd "j") 'backward-char)
|
|
|
|
(define-key map (kbd "i") 'previous-line)
|
|
|
|
(define-key map (kbd "k") 'next-line)
|
|
|
|
(define-key map (kbd "u") 'backward-word)
|
|
|
|
(define-key map (kbd "o") 'forward-word)
|
|
|
|
(define-key map (kbd "n") 'backward-paragraph)
|
|
|
|
(define-key map (kbd "m") 'forward-paragraph)
|
2017-08-09 12:24:54 +01:00
|
|
|
(define-key map (kbd "TAB") 'indent-for-tab-command)
|
2017-08-15 17:44:17 +01:00
|
|
|
(define-key map (kbd "`") 'cua-set-mark)
|
|
|
|
(define-key map (kbd "=") 'er/expand-region)
|
|
|
|
(define-key map (kbd "]") 'forward-page)
|
|
|
|
(define-key map (kbd "[") 'backward-page)
|
|
|
|
(define-key map (kbd "e") 'move-end-of-line)
|
|
|
|
(define-key map (kbd "a") 'move-beginning-of-line)
|
2017-08-10 00:43:42 +01:00
|
|
|
(define-key map (kbd "<f2>") 'go-to-line)
|
2017-08-15 17:44:17 +01:00
|
|
|
(define-key map (kbd "C-TAB") 'other-window)
|
2017-08-23 12:09:33 +01:00
|
|
|
(define-key map (kbd "M-TAB") 'switch-other)
|
2017-08-09 01:34:07 +01:00
|
|
|
|
|
|
|
;; Actions
|
2017-08-10 00:43:42 +01:00
|
|
|
(define-key map (kbd "RET") 'newline)
|
2017-08-15 17:44:17 +01:00
|
|
|
(define-key map (kbd "d") 'delete-char)
|
2017-08-09 12:24:54 +01:00
|
|
|
(define-key map (kbd "<backspace>") 'delete-backward-char)
|
|
|
|
(define-key map (kbd "y") 'cua-paste)
|
|
|
|
(define-key map (kbd "C-w") 'kill-region)
|
|
|
|
(define-key map (kbd "M-w") 'kill-ring-save)
|
|
|
|
|
2017-08-10 00:43:42 +01:00
|
|
|
(define-key map (kbd "h") 'kill-and-join-forward)
|
2017-08-15 17:44:17 +01:00
|
|
|
|
2017-08-10 00:43:42 +01:00
|
|
|
(define-key map (kbd "g") 'keyboard-quit)
|
2017-08-09 01:34:07 +01:00
|
|
|
(define-key map (kbd "z") 'undo)
|
2017-08-23 12:09:33 +01:00
|
|
|
(define-key map (kbd "/") 'undo)
|
2017-08-09 01:34:07 +01:00
|
|
|
|
2017-08-23 12:09:33 +01:00
|
|
|
(define-key map (kbd "M-x") 'turn-off-and-command)
|
2017-08-09 01:34:07 +01:00
|
|
|
(define-key map (kbd "C-x C-s") 'save-buffer)
|
2018-05-21 01:03:41 +01:00
|
|
|
(define-key map (kbd "SPC") 'self-insert-command)
|
|
|
|
|
2017-08-23 12:09:33 +01:00
|
|
|
;;(define-key map (kbd "ESC ESC") 'turn-off-lxdrive)
|
2018-05-21 01:03:41 +01:00
|
|
|
(define-key map (kbd "q") 'turn-off-lxdrive)
|
2017-08-10 00:43:42 +01:00
|
|
|
(define-key map (kbd "M-SPC") 'turn-off-lxdrive)
|
|
|
|
|
2017-08-09 01:34:07 +01:00
|
|
|
map)
|
|
|
|
"Keymap for lxdrive-minor-mode.")
|
|
|
|
|
|
|
|
(define-minor-mode lxdrive-minor-mode
|
|
|
|
"A minor mode so that my key settings override annoying major modes."
|
2017-08-15 17:44:17 +01:00
|
|
|
:global t
|
2017-08-09 01:34:07 +01:00
|
|
|
:lighter " lx")
|
|
|
|
|
2017-08-23 12:09:33 +01:00
|
|
|
;;(global-set-key (kbd "ESC ESC") 'turn-on-lxdrive)
|
2017-08-10 00:43:42 +01:00
|
|
|
(global-set-key (kbd "M-SPC") 'turn-on-lxdrive)
|
2017-08-23 12:09:33 +01:00
|
|
|
(global-set-key (kbd "M-TAB") 'switch-other)
|
2018-02-13 21:55:33 +00:00
|
|
|
(with-ability spaceline
|
|
|
|
(spaceline-toggle-lxdrive-on))
|
2017-08-15 17:44:17 +01:00
|
|
|
|
2017-08-09 01:34:07 +01:00
|
|
|
(provide 'extensions/editor/lxdrive-mode)
|
|
|
|
;;; lxdrive-mode ends here
|