From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Daniel Colascione Newsgroups: gmane.emacs.devel Subject: Re: Proposal: new default bindings for winner and windmove Date: Mon, 01 Jul 2024 19:18:36 -0400 Message-ID: <875xto7lbn.fsf@dancol.org> References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31794"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Stefan Monnier , emacs-devel@gnu.org To: Stefan Kangas Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jul 02 01:19:41 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sOQJA-000836-Tb for ged-emacs-devel@m.gmane-mx.org; Tue, 02 Jul 2024 01:19:41 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sOQIK-0003JP-Ka; Mon, 01 Jul 2024 19:18:49 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sOQII-0003IM-9A for emacs-devel@gnu.org; Mon, 01 Jul 2024 19:18:46 -0400 Original-Received: from dancol.org ([2600:3c01:e000:3d8::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sOQIC-0005PB-SJ for emacs-devel@gnu.org; Mon, 01 Jul 2024 19:18:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=ZlE03C5aLK8r2I/tsuUuYEitQrigZ9gaw1rOqVQJy60=; b=qI3b1+wJHckXf3rPmh8H/H/mA9 kPCFAINLsxmIw33sazdf622Afxo1keDokPMwAHcERebt3LzV9HCT7xPtzMM+OLXEnS3O9JdXB24kN b36B2WOB/QOaXMNHrvRxBFUIOFjvgcJRbZsuQx78kK3hUmYIGJbAvqW4mhdXMVdHft+QIh1KXut0M ZNCpA16/vORVaRyLgU6s70jbIAU5XhO3jpyqlXdS861Tr6UYsO3HdntVKVdBRbhRj8LZiBWuXhCJT PIima74yQqytdnA4oPdOwA4U3Fy8sUYDUNeGBSeOdVVpCz/g1D+9GFOLncDBW6s0sdu1I5Dj8cdTP yVnu06jw==; Original-Received: from 2603-9001-4203-1ab2-318f-67e7-8a9b-1387.inf6.spectrum.com ([2603:9001:4203:1ab2:318f:67e7:8a9b:1387]:55478 helo=localhost) by dancol.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sOQI8-0008PN-JX; Mon, 01 Jul 2024 19:18:37 -0400 In-Reply-To: (Stefan Kangas's message of "Sun, 30 Jun 2024 18:29:03 -0700") Received-SPF: pass client-ip=2600:3c01:e000:3d8::1; envelope-from=dancol@dancol.org; helo=dancol.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:321072 Archived-At: Stefan Kangas writes: > Thus, I don't think I see any compelling reason not to go ahead with > this change. I would propose that we now start discussing the specifics > of how to go about doing that (patches, proposed alternative solutions). How's this? commit 0af9a3225fe0d8771772ee510abd122d2881b211 Author: Daniel Colascione Date: Mon Jul 1 19:17:10 2024 -0400 Directional bindings for windmove * doc/emacs/windows.texi (Other Window): Describe new directional bindings. * etc/tutorials/TUTORIAL: Describe new directional bindings. * lisp/windmove.el: Bind C-x 4 followed by an arrow key to the corresponding windmove commands. diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index 5ad6850fed9..581f74833d3 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -185,6 +185,27 @@ Other Window back and finish supplying the minibuffer argument that is requested. @xref{Minibuffer Edit}. +@kindex C-x 4 LEFT +@kindex C-x 4 RIGHT +@kindex C-x 4 UP +@kindex C-x 4 DOWN + +Using the keyboard, you can switch windows directionally by typing +@kbd{C-x 4} followed by an arrow key. Emacs determines the direction of +movement using the geometry of windows on the screen rather than history +of recently-selected windows, so these commands may often by less +surprising than @kbd{C-x o} above. + +@kindex C-x 4 S-LEFT +@kindex C-x 4 S-RIGHT +@kindex C-x 4 S-UP +@kindex C-x 4 S-DOWN + +These commands are like the other directional movement commands, except +that Emacs, instead of moving point to the window in the desired +direction, moves the whole buffer state, as if taking the current buffer +and moving it to the desired window. + @findex next-window-any-frame The @code{other-window} command will normally only switch to the next window in the current frame (unless otherwise configured). If you diff --git a/etc/tutorials/TUTORIAL b/etc/tutorials/TUTORIAL index 4718e0d9430..daba3e4615f 100644 --- a/etc/tutorials/TUTORIAL +++ b/etc/tutorials/TUTORIAL @@ -907,6 +907,11 @@ cursor which blinks when you are not typing. The other windows have their own cursor positions; if you are running Emacs in a graphical display, those cursors are drawn as unblinking hollow boxes. +You can also use arrow keys prefixed by C-x 4 to move +between windows directionally. + +>> Type C-x 4 to move to the window above the current one. + The command C-M-v is very useful when you are editing text in one window and using the other window just for reference. Without leaving the selected window, you can scroll the text in the other window with diff --git a/lisp/windmove.el b/lisp/windmove.el index b4e77102abd..db3b52393bf 100644 --- a/lisp/windmove.el +++ b/lisp/windmove.el @@ -854,6 +854,23 @@ windmove-swap-states-default-keybindings :type windmove--default-keybindings-type :version "28.1") +;;;###autoload +(define-key ctl-x-4-map [left] 'windmove-left) +;;;###autoload +(define-key ctl-x-4-map [right] 'windmove-right) +;;;###autoload +(define-key ctl-x-4-map [up] 'windmove-up) +;;;###autoload +(define-key ctl-x-4-map [down] 'windmove-down) +;;;###autoload +(define-key ctl-x-4-map [(shift left)] 'windmove-swap-states-left) +;;;###autoload +(define-key ctl-x-4-map [(shift right)] 'windmove-swap-states-right) +;;;###autoload +(define-key ctl-x-4-map [(shift up)] 'windmove-swap-states-up) +;;;###autoload +(define-key ctl-x-4-map [(shift down)] 'windmove-swap-states-down) + (provide 'windmove)