EXWM/Helm: Bind global Helm commands with ambrevar/exwm-global-set-key.
parent
8d96f5b6c3
commit
bca3245dc5
|
@ -12,6 +12,15 @@
|
|||
;;; See https://github.com/ch11ng/exwm/issues/285
|
||||
;;; and https://gitlab.com/interception/linux/plugins/caps2esc/issues/2.
|
||||
|
||||
;; Looks like there is a bug between Helm and EXWM global keys which leads Helm
|
||||
;; to display nothing when only `exwm-input-set-key' is used.
|
||||
;; https://github.com/ch11ng/exwm/issues/816
|
||||
(defun ambrevar/exwm-global-set-key (keys command)
|
||||
"Bind KEYS to COMMAND.
|
||||
KEYS is passed to `kbd'."
|
||||
(define-key exwm-mode-map (kbd keys) command)
|
||||
(global-set-key (kbd keys) command))
|
||||
|
||||
;;; Rename buffer to window title.
|
||||
(defun ambrevar/exwm-rename-buffer-to-title () (exwm-workspace-rename-buffer exwm-title))
|
||||
(add-hook 'exwm-update-title-hook 'ambrevar/exwm-rename-buffer-to-title)
|
||||
|
@ -38,12 +47,8 @@
|
|||
(exwm-input-set-key (kbd "s-k") #'windmove-up)
|
||||
(exwm-input-set-key (kbd "s-l") #'windmove-right)
|
||||
(exwm-input-set-key (kbd "s-D") #'kill-this-buffer)
|
||||
;; WARNING: helm-mini and helm-find-files sometimes display nothing when bound
|
||||
;; with `exwm-input-set-key'. See below.
|
||||
(define-key exwm-mode-map (kbd "s-b") #'list-buffers)
|
||||
(global-set-key (kbd "s-b") #'list-buffers)
|
||||
(define-key exwm-mode-map (kbd "s-f") #'find-file)
|
||||
(global-set-key (kbd "s-f") #'find-file)
|
||||
(ambrevar/exwm-global-set-key "s-b" #'list-buffers)
|
||||
(ambrevar/exwm-global-set-key "s-f" #'find-file)
|
||||
|
||||
(when (require 'windower nil 'noerror)
|
||||
(exwm-input-set-key (kbd "s-<tab>") 'windower-switch-to-last-buffer)
|
||||
|
@ -65,21 +70,16 @@
|
|||
;; Need `with-eval-after-load' here since 'helm-map is not defined in 'helm-config.
|
||||
(ambrevar/define-keys helm-map
|
||||
"s-\\" 'helm-toggle-resplit-and-swap-windows)
|
||||
(exwm-input-set-key (kbd "s-c") #'helm-resume)
|
||||
;; WARNING: helm-mini and helm-find-files sometimes display nothing when bound
|
||||
;; with `exwm-input-set-key'.
|
||||
(define-key exwm-mode-map (kbd "s-b") #'helm-mini)
|
||||
(global-set-key (kbd "s-b") #'helm-mini)
|
||||
(define-key exwm-mode-map (kbd "s-f") #'helm-find-files)
|
||||
(global-set-key (kbd "s-f") #'helm-find-files)
|
||||
;; (push `(,(kbd "s-f") . helm-find-files) exwm-input-global-keys)
|
||||
(exwm-input-set-key (kbd "s-F") #'helm-locate)
|
||||
(ambrevar/exwm-global-set-key "s-c" #'helm-resume)
|
||||
(ambrevar/exwm-global-set-key "s-b" #'helm-mini)
|
||||
(ambrevar/exwm-global-set-key "s-f" #'helm-find-files)
|
||||
(ambrevar/exwm-global-set-key "s-F" #'helm-locate)
|
||||
(when (fboundp 'ambrevar/helm-locate-meta)
|
||||
(exwm-input-set-key (kbd "s-F") #'ambrevar/helm-locate-meta))
|
||||
(exwm-input-set-key (kbd "s-g") 'ambrevar/helm-grep-git-or-ag)
|
||||
(exwm-input-set-key (kbd "s-G") 'ambrevar/helm-grep-git-all-or-ag)
|
||||
(ambrevar/exwm-global-set-key "s-F" #'ambrevar/helm-locate-meta))
|
||||
(ambrevar/exwm-global-set-key "s-g" 'ambrevar/helm-grep-git-or-ag)
|
||||
(ambrevar/exwm-global-set-key "s-G" 'ambrevar/helm-grep-git-all-or-ag)
|
||||
;; Launcher
|
||||
(exwm-input-set-key (kbd "s-r") 'helm-run-external-command))
|
||||
(ambrevar/exwm-global-set-key "s-r" 'helm-run-external-command))
|
||||
|
||||
(when (require 'evil nil t)
|
||||
(exwm-input-set-key (kbd "s-<tab>") #'evil-switch-to-windows-last-buffer)
|
||||
|
@ -92,60 +92,61 @@
|
|||
(exwm-input-set-key (kbd "s-t") (lambda ()
|
||||
(interactive)
|
||||
(find-file (car org-agenda-files))))
|
||||
(exwm-input-set-key (kbd "s-<return>") #'eshell)
|
||||
(exwm-input-set-key (kbd "s-m") #'notmuch-hello)
|
||||
(exwm-input-set-key (kbd "s-n") #'elfeed)
|
||||
(exwm-input-set-key (kbd "s-e") #'eww))
|
||||
(exwm-input-set-key (kbd "s-t") 'helm-selector-org)
|
||||
(exwm-input-set-key (kbd "s-T") 'helm-selector-org-other-window)
|
||||
(exwm-input-set-key (kbd "s-<return>") 'ambrevar/helm-selector-sly)
|
||||
(exwm-input-set-key (kbd "S-s-<return>") 'ambrevar/helm-selector-sly-other-window)
|
||||
(exwm-input-set-key (kbd "s-m") #'helm-selector-notmuch)
|
||||
(exwm-input-set-key (kbd "s-M") #'helm-selector-notmuch-other-window)
|
||||
(exwm-input-set-key (kbd "s-n") #'helm-selector-elfeed)
|
||||
(exwm-input-set-key (kbd "s-N") #'helm-selector-elfeed-other-window) ; "n" for "news"
|
||||
(exwm-input-set-key (kbd "s-e") #'helm-selector-eww)
|
||||
(exwm-input-set-key (kbd "s-E") #'helm-selector-eww-other-window))
|
||||
(exwm-input-set-key (kbd "s-<return>") 'eshell)
|
||||
(exwm-input-set-key (kbd "s-m") 'notmuch-hello)
|
||||
(exwm-input-set-key (kbd "s-n") 'elfeed)
|
||||
(exwm-input-set-key (kbd "s-e") 'eww))
|
||||
(ambrevar/exwm-global-set-key "s-t" 'helm-selector-org)
|
||||
(ambrevar/exwm-global-set-key "s-T" 'helm-selector-org-other-window)
|
||||
(ambrevar/exwm-global-set-key "s-<return>" 'ambrevar/helm-selector-sly)
|
||||
(ambrevar/exwm-global-set-key "S-s-<return>" 'ambrevar/helm-selector-sly-other-window)
|
||||
(ambrevar/exwm-global-set-key "s-m" 'helm-selector-notmuch)
|
||||
(ambrevar/exwm-global-set-key "s-M" 'helm-selector-notmuch-other-window)
|
||||
(ambrevar/exwm-global-set-key "s-n" 'helm-selector-elfeed)
|
||||
(ambrevar/exwm-global-set-key "s-N" 'helm-selector-elfeed-other-window) ; "n" for "news"
|
||||
(ambrevar/exwm-global-set-key "s-e" 'helm-selector-eww)
|
||||
(ambrevar/exwm-global-set-key "s-E" 'helm-selector-eww-other-window))
|
||||
|
||||
(when (fboundp 'magit-status)
|
||||
(if (require 'helm-selector-magit nil :noerror)
|
||||
(progn
|
||||
(exwm-input-set-key (kbd "s-v") #'helm-selector-magit)
|
||||
(ambrevar/exwm-global-set-key "s-v" #'helm-selector-magit)
|
||||
(exwm-input-set-key (kbd "s-V") #'magit-status))
|
||||
(exwm-input-set-key (kbd "s-v") #'magit-status)))
|
||||
(when (fboundp 'emms-all)
|
||||
(exwm-input-set-key (kbd "s-a") #'emms-smart-browse)
|
||||
(exwm-input-set-key (kbd "S-s-<kp-enter>") #'emms-pause)
|
||||
(if (fboundp 'helm-emms)
|
||||
(exwm-input-set-key (kbd "s-A") #'helm-emms)
|
||||
(ambrevar/exwm-global-set-key "s-A" #'helm-emms)
|
||||
(exwm-input-set-key (kbd "s-A") #'emms)))
|
||||
|
||||
(when (fboundp 'helm-pass)
|
||||
(exwm-input-set-key (kbd "s-p") #'helm-pass))
|
||||
(ambrevar/exwm-global-set-key "s-p" #'helm-pass))
|
||||
|
||||
(autoload 'ambrevar/slime-to-repl "lisp")
|
||||
(exwm-input-set-key (kbd "s-<backspace>") #'helm-selector-sly)
|
||||
(ambrevar/exwm-global-set-key "s-<backspace>" #'ambrevar/helm-selector-sly-non-ambrevar)
|
||||
;; TODO: Apparently, S-s-<backspace> is not recognized.
|
||||
(ambrevar/exwm-global-set-key "M-s-<backspace>" #'ambrevar/helm-selector-sly-non-ambrevar-other-window)
|
||||
(defun ambrevar/repl-switcher ()
|
||||
"Switch between Geiser and SLIME REPLs."
|
||||
(interactive)
|
||||
;; TODO: Apparently, S-s-<backspace> is not recognized.
|
||||
(pcase
|
||||
(completing-read "Lisp: " '(cider geiser slime sly racket))
|
||||
("cider"
|
||||
(exwm-input-set-key (kbd "s-<backspace>") 'helm-selector-cider)
|
||||
(exwm-input-set-key (kbd "M-s-<backspace>") 'helm-selector-cider-other-window))
|
||||
(ambrevar/exwm-global-set-key "s-<backspace>" 'helm-selector-cider)
|
||||
(ambrevar/exwm-global-set-key "M-s-<backspace>" 'helm-selector-cider-other-window))
|
||||
("geiser"
|
||||
(autoload 'helm-geiser-repl-switch "init-scheme")
|
||||
(exwm-input-set-key (kbd "s-<backspace>") 'helm-selector-geiser)
|
||||
(exwm-input-set-key (kbd "M-s-<backspace>") 'helm-selector-geiser-other-window))
|
||||
(ambrevar/exwm-global-set-key "s-<backspace>" 'helm-selector-geiser)
|
||||
(ambrevar/exwm-global-set-key "M-s-<backspace>" 'helm-selector-geiser-other-window))
|
||||
("slime"
|
||||
(exwm-input-set-key (kbd "s-<backspace>") 'helm-selector-slime)
|
||||
(exwm-input-set-key (kbd "M-s-<backspace>") 'helm-selector-slime-other-window))
|
||||
(ambrevar/exwm-global-set-key "s-<backspace>" 'helm-selector-slime)
|
||||
(ambrevar/exwm-global-set-key "M-s-<backspace>" 'helm-selector-slime-other-window))
|
||||
("sly"
|
||||
(exwm-input-set-key (kbd "s-<backspace>") 'helm-selector-sly)
|
||||
(exwm-input-set-key (kbd "<M-s-backspace>") 'helm-selector-sly-other-window))
|
||||
(ambrevar/exwm-global-set-key "s-<backspace>" 'helm-selector-sly)
|
||||
(ambrevar/exwm-global-set-key "<M-s-backspace>" 'helm-selector-sly-other-window))
|
||||
("racket"
|
||||
(exwm-input-set-key (kbd "s-<backspace>") #'racket-repl))))
|
||||
(ambrevar/exwm-global-set-key "s-<backspace>" #'racket-repl))))
|
||||
(exwm-input-set-key (kbd "s-C-<backspace>") #'ambrevar/repl-switcher)
|
||||
|
||||
;;; External application shortcuts.
|
||||
|
@ -170,8 +171,8 @@
|
|||
"M-d" 'helm-buffer-run-kill-persistent
|
||||
"S-<return>" 'helm-buffer-switch-other-window)
|
||||
;; Web browser
|
||||
(exwm-input-set-key (kbd "s-w") #'helm-exwm-switch-browser)
|
||||
(exwm-input-set-key (kbd "s-W") #'helm-exwm-switch-browser-other-window))
|
||||
(ambrevar/exwm-global-set-key "s-w" #'helm-exwm-switch-browser)
|
||||
(ambrevar/exwm-global-set-key "s-W" #'helm-exwm-switch-browser-other-window))
|
||||
|
||||
(when (require 'desktop-environment nil 'noerror)
|
||||
;; REVIEW: Remove the override on next version release:
|
||||
|
|
Loading…
Reference in New Issue