From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Stephen J. Turnbull" Newsgroups: gmane.emacs.devel Subject: Honoring traditional defaults [was: Transient Mark Mode on by default] Date: Tue, 25 Mar 2008 07:15:10 +0900 Message-ID: <874pavg45t.fsf@uwakimon.sk.tsukuba.ac.jp> References: <87myopnj0l.fsf@stupidchicken.com> <20080324115510.GA1563@muc.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1206396414 31807 80.91.229.12 (24 Mar 2008 22:06:54 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 24 Mar 2008 22:06:54 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Mar 24 23:07:25 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Jdup3-0004Jp-O0 for ged-emacs-devel@m.gmane.org; Mon, 24 Mar 2008 23:07:18 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JduoR-0004Lh-Ot for ged-emacs-devel@m.gmane.org; Mon, 24 Mar 2008 18:06:39 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JduoN-0004L5-CS for emacs-devel@gnu.org; Mon, 24 Mar 2008 18:06:35 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JduoL-0004Kq-8i for emacs-devel@gnu.org; Mon, 24 Mar 2008 18:06:34 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JduoL-0004Kn-6U for emacs-devel@gnu.org; Mon, 24 Mar 2008 18:06:33 -0400 Original-Received: from mtps02.sk.tsukuba.ac.jp ([130.158.97.224]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JduoK-0004w2-FQ for emacs-devel@gnu.org; Mon, 24 Mar 2008 18:06:32 -0400 Original-Received: from uwakimon.sk.tsukuba.ac.jp (uwakimon.sk.tsukuba.ac.jp [130.158.99.156]) by mtps02.sk.tsukuba.ac.jp (Postfix) with ESMTP id A827A7FFA for ; Tue, 25 Mar 2008 07:06:17 +0900 (JST) Original-Received: by uwakimon.sk.tsukuba.ac.jp (Postfix, from userid 1000) id D8B611A29F3; Tue, 25 Mar 2008 07:15:10 +0900 (JST) In-Reply-To: X-Mailer: VM 7.19 under 21.5 (beta28) "fuki" 2785829fe37c XEmacs Lucid X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:93338 Archived-At: The only reason not to make Windows/Mac-like behavior the default that makes sense to me is if we think that traditional Emacs behavior is *clearly* superior for *most* beginners, enough to make it worth a short period of confusion and annoyance while they learn to use the Emacs behaviors. For something as controversial (and deservedly so) as t-m-m, I think trying the change at this stage in the release cycle is a good idea. On the other hand, the "everything I need to know about Emacs I learned in kindergarten" crowd *should* have a "revert to tradition" customization available. Something like an alist of prior defaults for customizable variables, having the form ((VAR (VERSION PRIOR-DEFAULT) ...) ...), where VAR is the symbol naming a customizable variable, VERSION is a version string identifying a point of change, and PRIOR-DEFAULT the previous default value. Then there would be a command `custom-set-all-to-prior-defaults' or so, which would get a version from the user, defaulting to the prior public release. Next, map over the alist of defaults accumulating the most recent default prior to the user-specified version, if any. Call this the "prior defaults alist". Now the command maps over the prior defaults alist. If a variable appears as a key in the prior defaults alist, and the user has a customization, we ignore it, and continue with the next variable. If the user has no customization for the variable, then we create one, setting the user's customization to the prior default. Finally, it emits a warning telling the user which variables it customized. If desired, there could also be a customizable variable for determining how far back to turn the clock, something like `emacs-version-for-prior-defaults'. Presumably Alan would set this to "18.59" or so. This would be used instead of the "most recent public release" as the default for `custom-set-all-to-prior-defaults'. IMO this handles changes in defaults with a minimum of annoyance to those with a classical education while making it possible to change defaults to something more friendly to the GUI generation. To be honest, I'm not interested in implementing this scheme at this time, but if and when I get around to it, I'll post here. If somebody decides to grab the ball and run with it, I'd appreciate the courtesy of an email, though.