unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Mike Mattie <codermattie@gmail.com>
To: S??bastien Vauban <zthjwsqqafhv@spammotel.com>
Cc: help-gnu-emacs@gnu.org
Subject: Re: Nice Emacs Lisp
Date: Wed, 18 Mar 2009 14:31:16 -0700	[thread overview]
Message-ID: <20090318213115.GA6695@reforged> (raw)
In-Reply-To: <87mybiamwi.fsf@mundaneum.com>

[-- Attachment #1: Type: text/plain, Size: 2700 bytes --]

I use this in Grail:

;;----------------------------------------------------------------------
;; Host specific adaptation
;;
;; each host system has a site file that normalizes the platform
;; and extends the library search space for extra libraries it
;; manages.
;;
;; these files and platform specific customization are loaded by
;; platform here.
;;----------------------------------------------------------------------
(load-user-elisp
   (cond
     ((string-equal "gnu/linux" system-type)  "linux.el")
     ((string-equal "darwin"    system-type)  "darwin.el")
     ((string-equal "windows"   system-type)  "windows.el")))

note that load-user-elisp is a function of my own. You can substitute
that with (load) and a full path to the files.

I think the file approach is the cleanest, as it clearly separates
the logic of adapting to the platform from the platform code
itself which can become quite long, and more prone to simple
parentheses nesting errors when placed inside a form.

On Wed, Mar 18, 2009 at 04:09:01PM +0100, S??bastien Vauban wrote:
> Hello,
> 
> I'd like to mix Linux and Windows settings in my .emacs file, so that I can
> use GNU Emacs on both platforms with the same init file.
> 
> Currently, I've defined:
> 
> --8<---------------cut here---------------start------------->8---
> (defmacro GNULinux (&rest body)
>   (list 'if (string-match "linux" (prin1-to-string system-type)) (cons 'progn body)))
> 
> (defmacro Windows (&rest body)
>   (list 'if (string-match "windows" (prin1-to-string system-type)) (cons 'progn body)))
> --8<---------------cut here---------------end--------------->8---
> 
> and I write (for example):
> 
> --8<---------------cut here---------------start------------->8---
>     (setq bcc-cache-directory
>           (concat
>            (Windows "~/.emacs.d/byte-cache-ms-windows")
>            (GNULinux "~/.emacs.d/byte-cache-linux")))
> --8<---------------cut here---------------end--------------->8---
> 
> But do you know some better way to write the above (the concat function is not
> that clear there...), while avoiding such a construction:
> 
> --8<---------------cut here---------------start------------->8---
>     (Windows
>         (setq bcc-cache-directory "~/.emacs.d/byte-cache-ms-windows"))
>     (GNULinux
>         (setq bcc-cache-directory "~/.emacs.d/byte-cache-linux"))
> --8<---------------cut here---------------end--------------->8---
> 
> as I hate duplicating things (error-prone when changing one and not the
> other).
> 
> Best regards,
>   Seb
> 
> -- 
> S??bastien??Vauban

-- 
GnuPG Key: B9012279 is available from HKP server pgp.mit.edu

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

  parent reply	other threads:[~2009-03-18 21:31 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-18 15:09 Nice Emacs Lisp Sébastien Vauban
2009-03-18 17:45 ` tyler
2009-03-18 21:31 ` Mike Mattie [this message]
2009-03-18 22:13   ` Peter Dyballa
2009-03-18 22:42     ` Mike Mattie
2009-03-18 23:34       ` Peter Dyballa
2009-03-19 15:33         ` Drew Adams
     [not found]         ` <mailman.3579.1237478655.31690.help-gnu-emacs@gnu.org>
2009-03-20  9:11           ` rustom
2009-03-20 13:31             ` Mike Mattie

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=20090318213115.GA6695@reforged \
    --to=codermattie@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=zthjwsqqafhv@spammotel.com \
    /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.
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).