all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Dani Moncayo <dmoncayo@gmail.com>
To: Drew Adams <drew.adams@oracle.com>
Cc: help-gnu-emacs@gnu.org
Subject: Re: Using the same custom file in two different OSes
Date: Wed, 16 Jan 2013 22:03:05 +0100	[thread overview]
Message-ID: <CAH8Pv0hQ3RbuoJeAuoat9eo=yEK73ymXrs8+o7ndHGpSHGr=Vg@mail.gmail.com> (raw)
In-Reply-To: <A67A23F287DA44CC989BE1173F6160C7@us.oracle.com>

On Mon, Jan 14, 2013 at 11:05 PM, Drew Adams <drew.adams@oracle.com> wrote:
>> Mmmm I'm afraid I'm unable to keep my custom file free of my
>> platform-specific stuff. I've just seen this behavior:
>> 1. I remove the `default' and `variable-pitch' lines from my
>> custom file.
>> 2. I exit Emacs, start it again and verify that my custom file doesn't
>> have the lines I removed.  Note that this session has loaded my init
>> file, which first loads my custom file and then makes the
>> platform-specific customization (in that order).
>> 3. I do some customization (change the box-width property of the
>> `mode-line' face, for example), and save it (C-x C-s).
>> 4. I reopen my custom file and see that the two lines I removed in #1
>> have been reinserted.
>>
>> Changing the order (first do the platform-specific customization and
>> the load the custom file) doesn't help.  The custom file is
>> regenerated (when I save any customization) entirely, including the
>> `default' and `variable-pitch' faces.
>
> Right.
>
> It's because your init file changes the faces but does not save those changes or
> cancel them.  Then, when you save changes with C-x C-s, that saves the faces you
> changed.
>
> You want to either (a) do what you do now: redefine the faces after loading your
> `custom-file' each time or (b) just tell Customize that the faces have _not_
> been changed (even though they have), before hitting C-x C-s.  That is, just
> tell Customize to ignore your changes.
>
> For that, you can just add those faces to option `customize-customized-ignore'
> (user preferences to ignore in `customize-customized').  For that you will need
> to load library cus-edit+.el.
> http://www.emacswiki.org/emacs-en/download/cus-edit%2b.el
>
> If you do not want to do that, then you can use code like this in your init
> file, just after setting the faces the way you want:
>
> (face-spec-set THE-FACE (get THE-FACE 'face-defface-spec) 'reset)
>
> That should work.  This should also do the trick, as an alternative:
>
> (put THE-FACE 'saved-face nil)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

That did the trick.

So, now I'm able to keep my custom file free of platform-dependent
settings, which are moved to the init file, like this:

  ;; Set the custom-file
  (setq custom-file "whatever")
  ;; Load the platform-independent customization
  (load custom-file)
  ;; Set the platform-specific customization
  (if (display-graphic-p)
    (if (eq system-type 'windows-nt)
        (custom-set-faces <Stuff specific to MS-Windows>)
      (custom-set-faces <Stuff specific to Other OSes>)))
  ;; Reset de state of the faces customized above, so that they
  ;; don't get written to the custom-file when some customization
  ;; is saved.
  (put 'default 'saved-face nil)
  (put 'variable-pitch 'saved-face nil)


Thanks Drew!

-- 
Dani Moncayo



  reply	other threads:[~2013-01-16 21:03 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-13 22:00 Using the same custom file in two different OSes Dani Moncayo
2013-01-13 22:18 ` Drew Adams
2013-01-14 18:46   ` Dani Moncayo
2013-01-14 19:13     ` Drew Adams
2013-01-14 19:42       ` Dani Moncayo
2013-01-14 21:55         ` Peter Dyballa
2013-01-14 23:00           ` Dani Moncayo
2013-01-15  8:25             ` Didier Verna
2013-01-15  8:42               ` Dani Moncayo
2013-01-14 22:05         ` Drew Adams
2013-01-16 21:03           ` Dani Moncayo [this message]
     [not found]           ` <mailman.17633.1358371586.855.help-gnu-emacs@gnu.org>
2013-01-17  8:43             ` Sebastien Vauban
2013-01-17 14:19               ` Drew Adams
2013-01-17 14:38                 ` Peter Dyballa
2013-01-17 15:22                   ` Dani Moncayo
2013-01-17 16:38                     ` Eli Zaretskii
2013-01-17 16:01                   ` Drew Adams
2013-01-17 16:33                   ` Eli Zaretskii
2013-01-17 16:32                 ` Eli Zaretskii
2013-01-17 16:57                   ` Drew Adams
2013-01-17 17:48                     ` Eli Zaretskii
2013-01-17 18:15                       ` Drew Adams
2013-01-17 18:44                         ` Eli Zaretskii
2013-01-15 13:27 ` Stefan Monnier
2013-01-15 20:27   ` Dani Moncayo
     [not found]   ` <mailman.17532.1358281671.855.help-gnu-emacs@gnu.org>
2013-01-16  8:58     ` Sebastien Vauban
2013-01-16 20:35       ` Dani Moncayo
2013-01-16 12:59     ` Jason Rumney

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

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

  git send-email \
    --in-reply-to='CAH8Pv0hQ3RbuoJeAuoat9eo=yEK73ymXrs8+o7ndHGpSHGr=Vg@mail.gmail.com' \
    --to=dmoncayo@gmail.com \
    --cc=drew.adams@oracle.com \
    --cc=help-gnu-emacs@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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.