emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Honoring traditional defaults [was: Transient Mark Mode on by defaul


From: Lennart Borgman (gmail)
Subject: Re: Honoring traditional defaults [was: Transient Mark Mode on by default]
Date: Tue, 25 Mar 2008 01:12:01 +0100
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071031 Thunderbird/2.0.0.9 Mnenhy/0.7.5.666

Stephen J. Turnbull wrote:
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<wink>.  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.

I think implementing the scheme is easy. I have attached a starter.

;;; custsets.el --- Sets of named customizations
;;
;; Author: Lennart Borgman (lennart O borgman A gmail O com)
;; Created: 2008-03-25T00:17:06+0100 Mon
;; Version:
;; Last-Updated:
;; URL:
;; Keywords:
;; Compatibility:
;;
;; Features that might be required by this library:
;;
;;   None
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:
;;
;; After an idea expressed by among other Stephen Turnbull on the
;; emacs devel list.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Change log:
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; see the file COPYING.  If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
;; Floor, Boston, MA 02110-1301, USA.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Code:

(defcustom custsets-sets
  '(
    ("Windows"
     (cua-mode t)
     )
    )
  "Sets of customizations."
  :group 'custsets)

(defun custsets-turn-on (set-name)
  (interactive "sCustomization set: ")
  (let ((set (assoc-string set-name custsets-sets t)))
    (unless set
      (error "Can't find customization set %s" set-name))
    (dolist (opt-rec (cdr set))
      (let* ((opt (car opt-rec))
             (val (cdr opt-rec))
             (saved-opt (get opt 'saved-value))
             (saved-val saved-opt) ;; fix-me
             (ask (if saved-opt
                      (format "You have currently customized %s to %s. Change 
this to %s? "
                              opt saved-opt val)
                    (format "Customize %s to %s? " opt val)))
             )
        (when (y-or-n-p ask)
          (customize-set-variable opt val)
          (customize-set-value opt val)
          (customize-mark-to-save opt))
        )
      )
    (custom-save-all)))


(provide 'custsets)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; custsets.el ends here

reply via email to

[Prev in Thread] Current Thread [Next in Thread]