diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/init-god-mode.el | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lisp/init-god-mode.el b/lisp/init-god-mode.el new file mode 100644 index 0000000..a9618fb --- /dev/null +++ b/lisp/init-god-mode.el @@ -0,0 +1,43 @@ +(require 'god-mode) +(global-set-key (kbd "<M-SPC>") 'god-mode-all) + +(defun original-god-mode-lookup-key-sequence (&optional key key-string-so-far) ()) +(fset 'original-god-mode-lookup-key-sequence (symbol-function 'god-mode-lookup-key-sequence)) + +(defun god-mode-lookup-key-sequence (&optional key key-string-so-far) + "Lookup the command for the given `key' (or the next keypress, +if `key' is nil). This function sometimes +recurses. `key-string-so-far' should be nil for the first call in +the sequence." + (interactive) + (message (format "%s" key)) + (case key + (?x (original-god-mode-lookup-key-sequence ?t key-string-so-far)) + (?t (original-god-mode-lookup-key-sequence ?x key-string-so-far)) + (t (original-god-mode-lookup-key-sequence key key-string-so-far)))) + +(defun my-update-cursor () + (if god-local-mode + (set-cursor-color "Red") + (set-cursor-color "White")) + (setq cursor-type (if (or god-local-mode buffer-read-only) + 'box + 'bar))) + +(define-key god-local-mode-map (kbd ".") 'repeat) + +(add-hook 'god-mode-enabled-hook 'my-update-cursor) +(add-hook 'god-mode-disabled-hook 'my-update-cursor) +(defun god-toggle-on-overwrite () + "Toggle god-mode on overwrite-mode." + (if (bound-and-true-p overwrite-mode) + (god-local-mode-pause) + (god-local-mode-resume))) + +(add-hook 'overwrite-mode-hook 'god-toggle-on-overwrite) +(define-key god-local-mode-map (kbd "i") 'god-local-mode) + +(global-set-key (kbd "C-x C-1") 'delete-other-windows) +(global-set-key (kbd "C-x C-2") 'split-window-below) +(global-set-key (kbd "C-x C-3") 'split-window-right) +(global-set-key (kbd "C-x C-0") 'delete-window) |