unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Conditional compilation to avoid "assignment to free variable"
@ 2008-09-24 19:46 Michael Hoffman
  2008-09-24 19:54 ` Joost Diepenmaat
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Michael Hoffman @ 2008-09-24 19:46 UTC (permalink / raw)
  To: help-gnu-emacs

I use the same .emacs file on multiple systems, and each have various 
packages installed. There are various forms in my .emacs to only 
interact with these packages if they are actually installed:

(when (locate-library "auctex")
   (load "auctex.el" nil t t)
   (setq TeX-auto-save t))

When I byte-compile, however, I get a warning like this:

emacs.el:320:9:Warning: assignment to free variable `TeX-auto-save'

Is there a way to skip over that form at compile time if the library 
cannot be found? I tried various permutations of using 
eval-when-compile, but I still get the warning.

I suppose the other solution is to wrap the setq in a boundp check, but 
this seems silly as the result of the boundp check will be the same as 
the result of locate-library.

In this case, I may be able to use a custom variable instead but I am 
looking for a more general solution.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Conditional compilation to avoid "assignment to free variable"
  2008-09-24 19:46 Conditional compilation to avoid "assignment to free variable" Michael Hoffman
@ 2008-09-24 19:54 ` Joost Diepenmaat
  2008-09-24 21:34 ` Chetan
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Joost Diepenmaat @ 2008-09-24 19:54 UTC (permalink / raw)
  To: help-gnu-emacs

Michael Hoffman <4g4trz802@sneakemail.com> writes:

> I use the same .emacs file on multiple systems, and each have various
> packages installed. There are various forms in my .emacs to only
> interact with these packages if they are actually installed:
>
> (when (locate-library "auctex")
>   (load "auctex.el" nil t t)
>   (setq TeX-auto-save t))
>
> When I byte-compile, however, I get a warning like this:
>
> emacs.el:320:9:Warning: assignment to free variable `TeX-auto-save'
>
> Is there a way to skip over that form at compile time if the library
> cannot be found? I tried various permutations of using
> eval-when-compile, but I still get the warning.

Did you try the following?

(eval-when-compile
  (require 'my-macro-package))

(when (locate-library "auctex")
  (setq TeX-auto-save t))

HTH,
Joost.

-- 
Joost Diepenmaat | blog: http://joost.zeekat.nl/ | work: http://zeekat.nl/


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Conditional compilation to avoid "assignment to free variable"
  2008-09-24 19:46 Conditional compilation to avoid "assignment to free variable" Michael Hoffman
  2008-09-24 19:54 ` Joost Diepenmaat
@ 2008-09-24 21:34 ` Chetan
  2008-09-24 22:09 ` Glenn Morris
  2008-09-25  0:11 ` Chetan
  3 siblings, 0 replies; 5+ messages in thread
From: Chetan @ 2008-09-24 21:34 UTC (permalink / raw)
  To: help-gnu-emacs

Michael Hoffman <4g4trz802@sneakemail.com> writes:

> I use the same .emacs file on multiple systems, and each have various packages
> installed. There are various forms in my .emacs to only interact with these
> packages if they are actually installed:
>
> (when (locate-library "auctex")
>   (load "auctex.el" nil t t)
>   (setq TeX-auto-save t))
>
> When I byte-compile, however, I get a warning like this:
>
> emacs.el:320:9:Warning: assignment to free variable `TeX-auto-save'
>
> Is there a way to skip over that form at compile time if the library cannot be
> found? I tried various permutations of using eval-when-compile, but I still get
> the warning.
>
> I suppose the other solution is to wrap the setq in a boundp check, but this
> seems silly as the result of the boundp check will be the same as the result of
> locate-library.
>
> In this case, I may be able to use a custom variable instead but I am looking
> for a more general solution.
C-h f eval-when-compile


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Conditional compilation to avoid "assignment to free variable"
  2008-09-24 19:46 Conditional compilation to avoid "assignment to free variable" Michael Hoffman
  2008-09-24 19:54 ` Joost Diepenmaat
  2008-09-24 21:34 ` Chetan
@ 2008-09-24 22:09 ` Glenn Morris
  2008-09-25  0:11 ` Chetan
  3 siblings, 0 replies; 5+ messages in thread
From: Glenn Morris @ 2008-09-24 22:09 UTC (permalink / raw)
  To: help-gnu-emacs

Michael Hoffman wrote:

> (when (locate-library "auctex")
>   (load "auctex.el" nil t t)
>   (setq TeX-auto-save t))
>
> When I byte-compile, however, I get a warning like this:
>
> emacs.el:320:9:Warning: assignment to free variable `TeX-auto-save'

Byte-compiling your .emacs is pretty much a waste of time (you've
probably already invested more time in it than it might ever save you).
Worry about warnings while doing so is really a waste of time; but the 
standard method of suppressing free variable warnings is

(defvar TeX-auto-save)
(setq TeX-auto-save t)


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Conditional compilation to avoid "assignment to free variable"
  2008-09-24 19:46 Conditional compilation to avoid "assignment to free variable" Michael Hoffman
                   ` (2 preceding siblings ...)
  2008-09-24 22:09 ` Glenn Morris
@ 2008-09-25  0:11 ` Chetan
  3 siblings, 0 replies; 5+ messages in thread
From: Chetan @ 2008-09-25  0:11 UTC (permalink / raw)
  To: help-gnu-emacs

Michael Hoffman <4g4trz802@sneakemail.com> writes:

> I use the same .emacs file on multiple systems, and each have various packages
> installed. There are various forms in my .emacs to only interact with these
> packages if they are actually installed:
>
> (when (locate-library "auctex")
>   (load "auctex.el" nil t t)
>   (setq TeX-auto-save t))
>
> When I byte-compile, however, I get a warning like this:
>
> emacs.el:320:9:Warning: assignment to free variable `TeX-auto-save'
>
> Is there a way to skip over that form at compile time if the library cannot be
> found? I tried various permutations of using eval-when-compile, but I still get
> the warning.
>
> I suppose the other solution is to wrap the setq in a boundp check, but this
> seems silly as the result of the boundp check will be the same as the result of
> locate-library.
>
> In this case, I may be able to use a custom variable instead but I am looking
> for a more general solution.
I don't have auctex installed, so I cannot check. However, I am
wondering, what is this variable used for? Does tex mode not use
auto-save-mode? Or if it is for saving file before running tex, does is
not use the compile infrastructure?

Chetan


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-09-25  0:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-24 19:46 Conditional compilation to avoid "assignment to free variable" Michael Hoffman
2008-09-24 19:54 ` Joost Diepenmaat
2008-09-24 21:34 ` Chetan
2008-09-24 22:09 ` Glenn Morris
2008-09-25  0:11 ` Chetan

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).