From fa7aedf19e21f7d1dade91920c2df762cbdcf11b Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Tue, 4 Oct 2011 09:21:00 +0100 Subject: [PATCH] customize Escreen to my liking setting the prefix key to C-z like Elscreen instead of C-\ and a bunch of other keyboard shortcuts --- helpers.el | 19 ++++++++++++++++++ keybindings.el | 54 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 65 insertions(+), 8 deletions(-) diff --git a/helpers.el b/helpers.el index 3788f93..004b015 100644 --- a/helpers.el +++ b/helpers.el @@ -95,3 +95,22 @@ (if (< (frame-parameter nil 'alpha) 100) (set-frame-parameter nil 'alpha (+ (frame-parameter nil 'alpha) +1)) (message "This is a minimum value of transparency!"))) + + +;; Escreen Helper (from http://blog.nguyenvq.com/2011/03/07/escreen-instead-of-elscreen-for-screen-like-features-in-emacs/) +(defun escreen-get-active-screen-numbers-with-emphasis () + "what the name says" + (interactive) + (let ((escreens (escreen-get-active-screen-numbers)) + (emphased "")) + (dolist (s escreens) + (setq emphased + (concat emphased (if (= escreen-current-screen-number s) + (propertize (number-to-string s) + ;;'face 'custom-variable-tag) " ") + 'face 'info-title-3) + ;;'face 'font-lock-warning-face) + ;;'face 'secondary-selection) + (number-to-string s)) + " "))) + (message "escreen: active screens: %s" emphased))) diff --git a/keybindings.el b/keybindings.el index 48e61cc..2ed7ce7 100644 --- a/keybindings.el +++ b/keybindings.el @@ -39,14 +39,6 @@ ;; Kill-Ring related. (global-set-key (kbd "M-Y") 'yank-pop-forwards) -;; ElScreen related shortcuts -(global-set-key (kbd "s-}") 'elscreen-next) -(global-set-key (kbd "s-{") 'elscreen-previous) -(global-set-key (kbd "C-z ,") 'elscreen-screen-nickname) -(global-set-key (kbd "C-z C-,") 'elscreen-screen-nickname) -(global-set-key (kbd "C-z l") 'elscreen-toggle) -(global-set-key (kbd "C-z C-l") 'elscreen-toggle) - ;; Fullscreen (works only with `brew install emacs --cocoa`) (global-set-key (kbd "s-") 'ns-toggle-fullscreen) @@ -72,3 +64,49 @@ (global-set-key (kbd "M-i") 'windmove-up) (global-set-key (kbd "M-j") 'windmove-left) (global-set-key (kbd "M-l") 'windmove-right) + +;; ElScreen related shortcuts +(when (require 'elscreen nil 'noerror) + (global-set-key (kbd "s-}") 'elscreen-next) + (global-set-key (kbd "s-{") 'elscreen-previous) + (global-set-key (kbd "C-z ,") 'elscreen-screen-nickname) + (global-set-key (kbd "C-z C-,") 'elscreen-screen-nickname) + (global-set-key (kbd "C-z l") 'elscreen-toggle) + (global-set-key (kbd "C-z C-l") 'elscreen-toggle)) + +;; Escreen customizations (with help from helpers.el). +(when (require 'escreen nil 'noerror) + + ;; Set prefix key to C-z. + (setq escreen-prefix-char (kbd "C-z")) + (global-set-key escreen-prefix-char 'escreen-prefix) + (define-key escreen-map escreen-prefix-char 'escreen-goto-last-screen) + + ;; Toggle screens. + (define-key escreen-map (kbd "l") 'escreen-goto-last-screen) + (define-key escreen-map (kbd "C-l") 'escreen-goto-last-screen) + + ;; List screens. + (define-key escreen-map (kbd "a") 'escreen-get-active-screen-numbers-with-emphasis) + (define-key escreen-map (kbd "C-a") 'escreen-get-active-screen-numbers-with-emphasis) + (define-key escreen-map (kbd ";") 'escreen-get-active-screen-numbers-with-emphasis) + (define-key escreen-map (kbd "C-;") 'escreen-get-active-screen-numbers-with-emphasis) + + ;; Goto screens. + (define-key escreen-map (kbd "o") 'escreen-goto-next-screen) + (define-key escreen-map (kbd "C-o") 'escreen-goto-next-screen) + (define-key escreen-map (kbd "i") 'escreen-goto-prev-screen) + (define-key escreen-map (kbd "C-i") 'escreen-goto-prev-screen) + (global-set-key (kbd "s-}") 'escreen-goto-next-screen) + (global-set-key (kbd "s-{") 'escreen-goto-prev-screen) + + ;; Ctrl versions of default commands. + (define-key escreen-map (kbd "C-c") 'escreen-create-screen) + (define-key escreen-map (kbd "C-g") 'escreen-goto-screen) + (define-key escreen-map (kbd "C-k") 'escreen-kill-screen) + (define-key escreen-map (kbd "C-n") 'escreen-goto-next-screen) + (define-key escreen-map (kbd "C-p") 'escreen-goto-prev-screen) + + ;; Show list of screens when you switch/create/kill. + (add-hook 'escreen-goto-screen-hook 'escreen-get-active-screen-numbers-with-emphasis) +)