Skip to content

Instantly share code, notes, and snippets.

@fourier
Created January 29, 2018 22:11
Show Gist options
  • Save fourier/89bec896a1258d21d3302b847f9e3e55 to your computer and use it in GitHub Desktop.
Save fourier/89bec896a1258d21d3302b847f9e3e55 to your computer and use it in GitHub Desktop.
Emacs bind esc to close temporary windows
;; use Esc to close temporary windows
(let ((hotkey
(if window-system (kbd "<escape>") "\M-q")))
(global-set-key hotkey 'txm-close-temporary-window)
;; in cc-modes M-q redefined
(define-key c-mode-map hotkey 'txm-close-temporary-window)
(define-key c++-mode-map hotkey 'txm-close-temporary-window))
(defun txm-close-temporary-window ()
"Close all temporary windows in current frame.
Return t if any of windows were closed."
(interactive)
(save-selected-window
(let (result)
(dolist (window (window-list))
(select-window window)
(cond ((or (eq major-mode 'help-mode)
(eq major-mode 'compilation-mode)
(eq major-mode 'completion-list-mode)
(eq major-mode 'Man-mode)
(eq major-mode 'apropos-mode)
(eq major-mode 'grep-mode)
(string= (buffer-name) "*slime-description*"))
(quit-window)
(setf result t))
((eq major-mode 'magit-popup-mode)
(magit-popup-quit)
(setf result t))
((eq major-mode 'gnu-apl-keymap-mode)
(gnu-apl-show-keyboard))))
result)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment