From 9e1d11c572ed9d470f3aae1f07f9ca62a8d81045 Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Thu, 13 May 2010 23:47:41 -0700 Subject: [PATCH] [emacs] new function other-window-in-any-frame, bound to M-` (cmd-` on OS X) --- emacs | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/emacs b/emacs index 1d01644..20b87ea 100644 --- a/emacs +++ b/emacs @@ -308,7 +308,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; can't seem to un-hijack cmd-`, so make it do something useful -(global-set-key "\M-`" 'other-window) +(global-set-key "\M-`" 'other-window-in-any-frame) ;; custom key bindings under a common prefix (global-unset-key "\C-z") @@ -343,9 +343,15 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; utilities customizations +;; utilities & customizations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(fset 'comment-line + (lambda (&optional arg) + "Comment or uncomment the current line using `comment-dwim'." + (interactive "p") + (kmacro-call-macro (quote ([1 67108896 14 134217787 16] 0 "%d")) arg))) + (defun duplicate-line (&optional arg) "Duplicate the current line." (interactive "p") @@ -358,12 +364,22 @@ (newline) (insert txt))))) -(fset 'comment-line - (lambda (&optional arg) - "Comment or uncomment the current line using `comment-dwim'." - (interactive "p") - (kmacro-call-macro (quote ([1 67108896 14 134217787 16] 0 "%d")) arg))) +;; switch to the next window, in any visible frame +(defun other-window-in-any-frame (&optional arg) + "Switch to the next window using `next-window', with ALL-FRAMES +set to 'visible. If the next window is on a different frame +switch to that frame first using `select-frame-set-input-focus'. +If N is non-nil switch to the nth next window." + (interactive "p") + (let ((window (next-window (selected-window) nil 'visible))) + (when (not (member window (window-list))) + (dolist (frame (delq (selected-frame) (frame-list))) + (when (member window (window-list frame)) + (select-frame-set-input-focus frame)))) + (select-window window)) + (unless (= 1 arg) + (other-window-in-any-frame (- arg 1)))) ;; Reload the .emacs file with a minimum of effort, ;; first saving histories with Persistent