From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] Make `C-x {' and `C-x }' repeatable Date: Fri, 24 May 2013 01:04:40 +0300 Organization: JURTA Message-ID: <87txlts7so.fsf@mail.jurta.org> References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1369348551 25305 80.91.229.3 (23 May 2013 22:35:51 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 23 May 2013 22:35:51 +0000 (UTC) Cc: Gauthier =?iso-8859-1?Q?=D6stervall?= , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri May 24 00:35:48 2013 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Ufe6t-0003nj-Ve for ged-emacs-devel@m.gmane.org; Fri, 24 May 2013 00:35:48 +0200 Original-Received: from localhost ([::1]:39737 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ufe6t-00087h-K8 for ged-emacs-devel@m.gmane.org; Thu, 23 May 2013 18:35:47 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:35201) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ufe6p-00087G-LL for emacs-devel@gnu.org; Thu, 23 May 2013 18:35:44 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ufe6o-0002xK-NS for emacs-devel@gnu.org; Thu, 23 May 2013 18:35:43 -0400 Original-Received: from ps18281.dreamhost.com ([69.163.218.105]:55031 helo=ps18281.dreamhostps.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ufe6o-0002wN-IY for emacs-devel@gnu.org; Thu, 23 May 2013 18:35:42 -0400 Original-Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 9B187258B9E91C; Thu, 23 May 2013 15:35:39 -0700 (PDT) In-Reply-To: (Stefan Monnier's message of "Thu, 23 May 2013 09:41:28 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-Received-From: 69.163.218.105 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:159754 Archived-At: >> I will give it a try, but I feel that functionality should be >> built-in. > > Yes clearly, that is needed before we can consider it to make C-x > [{}^] redundant. If the goal is to replace `C-x [{}^]' with one global keybinding, the currently free and intuitive key prefix for window related commands would be `C-x w', so that a command to activate window-resizing key sequence could be bound to `C-x w r'. Until this is implemented, something like below could help for experimenting with possible implementations: (defvar window-resize-keymap (let ((map (make-sparse-keymap))) ;; Standard keys: (define-key map "0" 'delete-window) (define-key map "1" 'delete-other-windows) (define-key map "2" 'split-window-below) (define-key map "3" 'split-window-right) (define-key map "o" 'other-window) (define-key map "^" 'enlarge-window) (define-key map "}" 'enlarge-window-horizontally) (define-key map "{" 'shrink-window-horizontally) (define-key map "-" 'shrink-window-if-larger-than-buffer) (define-key map "+" 'balance-windows) ;; Additional keys: (define-key map "v" 'shrink-window) (define-key map [down] 'shrink-window) (define-key map [up] 'enlarge-window) (define-key map [left] 'shrink-window-horizontally) (define-key map [right] 'enlarge-window-horizontally) map) "Keymap to resize windows.") (advice-add 'enlarge-window-horizontally :after (lambda (delta) (set-temporary-overlay-map window-resize-keymap))) (advice-add 'shrink-window-horizontally :after (lambda (delta) (set-temporary-overlay-map window-resize-keymap))) (advice-add 'enlarge-window :after (lambda (delta &optional horizontal) (set-temporary-overlay-map window-resize-keymap))) (advice-add 'shrink-window :after (lambda (delta &optional horizontal) (set-temporary-overlay-map window-resize-keymap))) (defun window-resize-init () (interactive) (message "Use window-resizing keys...") (set-temporary-overlay-map window-resize-keymap)) (define-key ctl-x-map "wr" 'window-resize-init)