Skip to content

Instantly share code, notes, and snippets.

@priyadarshan
Forked from LaloHao/god-mode.lisp
Created July 23, 2016 08:50
Show Gist options
  • Save priyadarshan/81823d3ccf09e42ce6bbebd7a28acbc2 to your computer and use it in GitHub Desktop.
Save priyadarshan/81823d3ccf09e42ce6bbebd7a28acbc2 to your computer and use it in GitHub Desktop.
A mode-line status for stumpwm analogous to emacs' god-mode using command-mode.
;;; god-mode.lisp
(defvar *god-mode-enabled* nil)
(defvar *god-mode-enabled-text* "God")
(defvar *god-mode-disabled-text* "Default")
(defun god-mode ()
"Enables or disables `god-mode' by updating variable `god-mode-enabled'."
(if *god-mode-enabled*
(setf *god-mode-enabled* nil)
(setf *god-mode-enabled* t)))
(defun enable-god-mode (&optional (enable t))
"Modifies `command-mode' hooks to run `god-mode'."
(if enable
(values (remove-hook *COMMAND-MODE-START-HOOK* 'command-mode-start-message)
(remove-hook *COMMAND-MODE-END-HOOK* 'command-mode-end-message)
(add-hook *COMMAND-MODE-START-HOOK* 'god-mode)
(add-hook *COMMAND-MODE-END-HOOK* 'god-mode))
(values (remove-hook *COMMAND-MODE-START-HOOK* 'god-mode)
(remove-hook *COMMAND-MODE-END-HOOK* 'god-mode)
(add-hook *COMMAND-MODE-START-HOOK* 'command-mode-start-message)
(add-hook *COMMAND-MODE-END-HOOK* 'command-mode-end-message))))
(defun disable-god-mode ()
"Return `command-mode' hooks back to normal."
(enable-god-mode nil))
(defmacro god-mode-windows ()
'(list :eval '(if *god-mode-enabled*
"%W"
(slot-value (current-window) 'title))))
(defun fmt-god-mode-status (m1)
(declare (ignore m1))
(if *god-mode-enabled*
*god-mode-enabled-text*
*god-mode-disabled-text*))
(dolist (a '((#\s fmt-god-mode-status)))
(pushnew a *screen-mode-line-formatters* :test 'equal))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment