summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/init-god-mode.el43
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)