From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Kangas Newsgroups: gmane.emacs.devel Subject: Rename "window" to "pane" (after Emacs 27) Date: Tue, 29 Oct 2019 00:07:33 +0100 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="258950"; mail-complaints-to="usenet@blaine.gmane.org" To: Emacs developers Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Oct 29 00:09:06 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iPE8I-0015En-2j for ged-emacs-devel@m.gmane.org; Tue, 29 Oct 2019 00:09:06 +0100 Original-Received: from localhost ([::1]:45218 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iPE8G-0001XZ-E0 for ged-emacs-devel@m.gmane.org; Mon, 28 Oct 2019 19:09:04 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:55603) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iPE74-0000Hk-0N for emacs-devel@gnu.org; Mon, 28 Oct 2019 19:07:51 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iPE71-0004RG-Cf for emacs-devel@gnu.org; Mon, 28 Oct 2019 19:07:48 -0400 Original-Received: from mail-pg1-f169.google.com ([209.85.215.169]:43311) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iPE71-0004Qj-6X for emacs-devel@gnu.org; Mon, 28 Oct 2019 19:07:47 -0400 Original-Received: by mail-pg1-f169.google.com with SMTP id l24so8030133pgh.10 for ; Mon, 28 Oct 2019 16:07:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=N/rtfWLrtUhh2jUj/nFGmgRp0m0j1GioKuFe28yk8/A=; b=ITMxcl5KWmRynKqtkE4WM/+NtrYssjcjChzBu/CJQnInYV4+a3VgfmFGgC61zXCS+F 9lcyXJ0LsaG7oxFO1se75PqE8UKFbn6rn5GH+rsqxwlxqc+0I9HisHAfl62suXU7cOAN ZP5FCXY8UFvvJYn1a9SrpphXIEEny2FwFiQwiuaxvr4i0y1pxojQbVuw0qvQAcqvlQgk zS3bKDq0V29R706heLd34z1QoiAuwRVhaKR/fHMFqgBDqb5uzwVdcye0LCTjHqtb5rTG ke3QV1aVB4hYIp7UjlWGBbimgZiRm+B7yOdJyzow9kH+NgyHWYVLj38Rl+mG6FjScech 26QA== X-Gm-Message-State: APjAAAWWvbd46phSbg6T2fa3Vln1lwFkiBDcf811W+/DGlLIqLP6nyia 9REmxJNoCzq2N2nO8M/R3B+x0b7N6/PGohU94HI+PQXM X-Google-Smtp-Source: APXvYqycGN+oJfyLpcthNG4+Jcl7Bpx0V+MFhHFgxJKL2qv3G/I0zpfTWyVE1oUaxuHJYhBu3H0B0H/+TBhOVzxoLAQ= X-Received: by 2002:a17:90a:a406:: with SMTP id y6mr2312911pjp.106.1572304065182; Mon, 28 Oct 2019 16:07:45 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.215.169 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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" Xref: news.gmane.org gmane.emacs.devel:241566 Archived-At: In 2014, there was a discussion about renaming "window" to "pane". The current terminology dates back to the early 1980's, and while it's unfortunate that other editors released since have adopted different terminology, I believe it's time to admit defeat. What we call a "frame" is known as a "window" to 99.9 % of our new users, and to make things worse we use "window" to describe something else entirely. See the discussion here: https://lists.gnu.org/archive/html/emacs-devel/2014-01/msg00532.html https://lists.gnu.org/archive/html/emacs-devel/2014-01/msg00496.html https://lists.gnu.org/archive/html/emacs-devel/2014-01/msg00610.html https://lists.gnu.org/archive/html/emacs-devel/2014-01/msg00555.html In that discussion, Stefan Monnier wrote (quoting RMS): >> Conceivably we could rename "window" to "pane" and "frame" to "window". >> I think the two renamings would have to be done in two different releases, >> perhaps a year or two apart. > Yup, it'd have to be a many-steps process: > - first, rename "window" to "pane" > - then rename "frame" to "window" (so frames would have 3 names: > screens, frames, and windows; tho admittedly we did finally get rid of > the "screen" aliases a few years ago). > > With a distinction between the Texinfo+docstring level and the Elisp > code level. > > At the Lisp level, after renaming selected-window to selected-pane, we'd > have to wait for the selected-window compatibility alias to disappear > before we can rename selected-frame to selected-window. I'd estimate > that getting rid of the selected-window compatibility alias would take at > least 20 years. > > This said, the "what you call a window is called a frame" is not nearly > as problematic as "what we call window is not what you think", so maybe > renaming "window" to "pane" would get us most of the benefit. > > So maybe the first step is the only one that really matters, and maybe > my grand children can consider the second step when their time comes. > > I'm not sure how much change that represents, but if someone wants to > take a stab at it... I'd be interested to see what it looks like. I'd like to volunteer to take a stab at the first part here, namely renaming "window" to "pane". I've thought about this for a while, and I don't think the changes involved are unfeasible. I believe a realistic plan might look something like this: 1. Change the names of the Lisp level functions to be named "window" instead of "pane" in window.c and window.el. Make the old names into defaliases. Update calls in Emacs to use the new names. (I'm not sure if it would make sense to rename "window.{c,el}" to "pane.{c,el}" given how that makes it harder to browse Git history.) 2. Update elisp and emacs manual to introduce "pane" as a synonym for "window". Make it clear that "pane" is the new and preferred terminology, but that old code and documentation might use "window" to mean the same thing. 3. Update doc strings of all functions changed above to talk about panes instead of windows. I think this could be done in a feature branch, and, if the experiment looks good, maybe we could considering merging it for Emacs 28. I'd suggest to *not* do the following as part of the above initial plan: - Update the C level code to use the new "pane" terminology. - Update the Lisp code to internally only refer to "panes" (e.g. in let-bindings) - Rename functions outside of window.el or window.c (OTOH, there's only ~500 of them, so maybe it's feasible?) - Update all doc strings of all functions in Emacs where "window" shows up. - Mark the above aliases obsolete. (We could do that later.) The excluded points would of course, in the context of a rename, make sense to do eventually. I believe they are too big tasks to do in a single feature branch (perhaps we could do parts). I'd therefore suggest to first introduce the new terminology as the preferred one, merge that, and then make these other changes incrementally over time. (BTW, I count 56.480 hits for "window" in the tree, excluding ChangeLogs, and presumably including a bunch of false positives for window system, etc.) Thoughts? Best regards, Stefan Kangas