unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Jeff Dwork" <jeff.dwork@amd.com>
Cc: eddy@opera.no, emacs-devel@gnu.org
Subject: Re: customize
Date: Fri, 2 Aug 2002 17:46:44 -0700	[thread overview]
Message-ID: <15691.10228.135288.202730@localhost.localdomain> (raw)
In-Reply-To: <200207300100.g6U100I14581@aztec.santafe.edu>

Here is an example of my problem with customize writing to .emacs
file.  I use 19.34 and I'm transitioning to 21.  Many things I do in
my version 19 .emacs are done differently in version 21, so I don't
want 21 to see my 19 stuff and my 19 stuff may not understand my
version 21 stuff.  So I tested the version in .emacs.

This is:
  GNU Emacs 21.1.1 (i686-pc-linux-gnu, X toolkit) of 2002-02-19 on
  go002
All invocations are:
  emacs --no-site-file

I start with this in .emacs:
********************************************
(if (< emacs-major-version 21)
    (progn
      ; here we set load-path for emacs 19
      ; this is just a dummy for test
      (setq jrd-init-var "19")
      (setq jrd-init-var2 "xx")
      )
  ; here we set load-path for emacs 21 and later
  ; this is just a dummy for test
  (setq jrd-init-var "21")
  (setq jrd-init-var2 "yy")
  )
********************************************

I start emacs 21, customize a variable and save it for the future.
I now have this:

********************************************
(if (< emacs-major-version 21)
    (progn
      ; here we set load-path for emacs 19
      ; this is just a dummy for test
      (setq jrd-init-var "19")
      (setq jrd-init-var2 "xx")
      )
  ; here we set load-path for emacs 21 and later
  ; this is just a dummy for test
  (setq jrd-init-var "21")
  (setq jrd-init-var2 "yy")
  )
(custom-set-variables
  ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 '(confirm-kill-emacs (quote y-or-n-p)))
(custom-set-faces
  ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 )
********************************************

But this won't work because the custom-set-variables is outside the
if.  I could write some code to make emacs 19 ignore this function,
but I don't want to.  So I move custom-set-* inside the if.

********************************************
(if (< emacs-major-version 21)
    (progn
      ; here we set load-path for emacs 19
      ; this is just a dummy for test
      (setq jrd-init-var "19")
      (setq jrd-init-var2 "xx")
      )
  ; here we set load-path for emacs 21 and later
  ; this is just a dummy for test
  (setq jrd-init-var "21")

  ; move custom stuff so only emacs 21 sees it

(custom-set-variables
  ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 '(confirm-kill-emacs (quote y-or-n-p)))
(custom-set-faces
  ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 )


  (setq jrd-init-var2 "yy")
  )
********************************************

I run emacs 21 again and customize another variable and I get this:

********************************************
(if (< emacs-major-version 21)
    (progn
      ; here we set load-path for emacs 19
      ; this is just a dummy for test
      (setq jrd-init-var "19")
      (setq jrd-init-var2 "xx")
      )
  ; here we set load-path for emacs 21 and later
  ; this is just a dummy for test
  (setq jrd-init-var "21")

  ; move custom stuff so only emacs 21 sees it

(custom-set-variables
  ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 '(confirm-kill-emacs (quote y-or-n-p)))
(custom-set-faces
  ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 )


  (setq jrd-init-var2 "yy")
  )
(custom-set-variables
  ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 '(confirm-kill-emacs (quote y-or-n-p))
 '(partial-completion-mode t nil (complete)))
(custom-set-faces
  ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 )
********************************************

Now we have two instances of custom-set-variables, which is not good.

If I leave the custom-set stuff where emacs 21 wrote it the first
time, I can add code after it and emacs will find what it wrote and
modify it correctly, although Eddy seems to have found problems with
this.  I only did a simple test.

In any case, this is all fixed by customizing custom-file.  Then
customize modifies a file that contains only code written by customize
and I can load custom-file from my .emacs however I want.

As long as custom-file has reasonably prominent mention in the initial
customize buffer, I don't think it is necessary to change the
default. 

Thanks for all your good works,
Jeff


Richard Stallman writes:
 > To: eddy@opera.no
 > cc: jeff.dwork@amd.com, emacs-devel@gnu.org
 > Subject: Re: customize
 > Date: Mon, 29 Jul 2002 19:00:00 -0600 (MDT)
 > 
 >     > I documented custom-face, but I don't see a reason to change the
 >     > default to use a different file.
 > 
 >     Jeff was discussing customisation of custom-file, not custom-face.
 > 
 > It was custom-file that I documented.  I wrote the wrong name in the
 > message.
 > 
 >       * Database reason: one file then contains only customize's actions,
 > 	making it much easier to keep track of which pieces of one's
 > 	config come from where.
 > 
 > It is easy enough to distinguish--the stuff written by Customize
 > is compact, distinctive, and clearly labeled.
 > 
 >       * Priority/ordering reason: customize adds things to the end of its
 > 	file: this is sensible for it, but potentially bad for elisp which
 > 	needs to be executed after customizations; using a separate file
 > 	for customize lets my ~/.emacs load the customize part early, late
 > 	or in between, at my option, rather than having it always be last.
 > 
 > There appears to be some controversy about whether this is really true.
 > Part of the controversy may be that your description of the problem
 > is heavy on emotions and the facts are not clear.
 > 
 >     > After it is there, you can add stuff in ~/.emacs after it.
 >     and get a layer-cake of intermingled fragments, some of one's own
 >     construction, others added by customize
 > 
 > Could you show an example of this?  As far as I know, customize writes
 > all its definitions for variables in a single sexp, and all its specs
 > for faces in a single sexp, and this can't produce very many layers.
 > 
 > If you show me what the problem looks like, maybe I can change Customize
 > to edit the file in a way that is more convenient.
 > 
 >       * Byte-compilation: putting it all in a separate .el file provides
 > 	for the possibility of byte-compiling the customization elisp.
 > 
 > You can byte-compile .emacs, so is this really an advantage?

-- 
Jeff Dwork                      |           jeff.dwork@amd.com
Advanced Micro Devices, M/S 45  | 408-749-5216 (voice) 408-774-8448 (fax)
PO Box 3453                     |----------------------------------------
Sunnyvale, Ca 94088-3453        | 

  reply	other threads:[~2002-08-03  0:46 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E17SKgH-00005W-00@whorl.intern.opera.no>
     [not found] ` <200207111201.g6BC1OM16938@aztec.santafe.edu>
     [not found]   ` <E17SgpB-0003rO-00@whorl.intern.opera.no>
2002-07-14 15:22     ` customize Richard Stallman
2002-07-15  9:18       ` customize Edward Welbourne
2002-07-15 14:08         ` customize Stefan Monnier
2002-07-15 15:36           ` customize Edward Welbourne
2002-07-16 13:28         ` customize Richard Stallman
     [not found]     ` <15680.26449.937153.817907@localhost.localdomain>
2002-07-27 18:53       ` customize Richard Stallman
2002-07-29 11:17         ` customize Edward Welbourne
2002-07-29 12:49           ` customize Kai Großjohann
2002-07-29 13:50             ` customize Edward Welbourne
2002-07-29 15:22               ` customize chad
2002-08-05 17:47                 ` customize Per Abrahamsen
2002-08-06 16:53                   ` customize chad
2002-08-09  6:52                   ` customize Stefan Monnier
2002-08-09  8:32                     ` customize Edward Welbourne
2002-08-10 12:30                       ` customize Stefan Monnier
2002-08-12  8:00                         ` customize, futility of byte-compiling Edward Welbourne
2002-08-12 10:01                           ` Per Abrahamsen
2002-08-12 16:14                           ` Stefan Monnier
2002-08-10 17:16                     ` customize Richard Stallman
2002-08-13 16:28                       ` customize Stefan Monnier
2002-08-14  5:15                         ` customize Richard Stallman
2002-08-14 21:51                           ` customize Stefan Monnier
2002-07-29 16:15               ` customize Per Abrahamsen
2002-07-29 18:15                 ` customize Edward Welbourne
2002-07-29 19:42                   ` customize Kai Großjohann
2002-07-30  8:32                     ` customize Edward Welbourne
2002-07-30 11:32                       ` customize Robert J. Chassell
2002-07-30  5:16                   ` customize Eli Zaretskii
2002-07-30  5:14               ` customize Eli Zaretskii
2002-07-30  1:00           ` customize Richard Stallman
2002-08-03  0:46             ` Jeff Dwork [this message]
2002-08-09  7:33           ` customize Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=15691.10228.135288.202730@localhost.localdomain \
    --to=jeff.dwork@amd.com \
    --cc=eddy@opera.no \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).