Improve discoverability of 'defvar' for suppressing warnings

* doc/lispref/compile.texi (Compiler Errors): Add index entries.
* doc/lispref/variables.texi (Defining Variables): Mention that
defvar with no value is used for suppressing compiler warnings.
(Bug#29400)
This commit is contained in:
Eli Zaretskii 2017-11-24 16:36:33 +02:00
parent 8a2b204e64
commit b4f67ebb92
2 changed files with 11 additions and 3 deletions

View file

@ -434,6 +434,7 @@ to what @code{eval-when-compile} does.
@node Compiler Errors
@section Compiler Errors
@cindex compiler errors
@cindex byte-compiler errors
Error and warning messages from byte compilation are printed in a
buffer named @file{*Compile-Log*}. These messages include file names
@ -450,6 +451,10 @@ compiled, and point shows how far the byte compiler was able to read;
the cause of the error might be nearby. @xref{Syntax Errors}, for
some tips for locating syntax errors.
@cindex byte-compiler warnings
@cindex free variable, byte-compiler warning
@cindex reference to free variable, compilation warning
@cindex function not known to be defined, compilation warning
A common type of warning issued by the byte compiler is for
functions and variables that were used but not defined. Such warnings
report the line number for the end of the file, not the locations
@ -490,12 +495,13 @@ The reference to @var{variable} must be in the @var{then-form} of the
@item
You can tell the compiler that a function is defined using
@code{declare-function}. @xref{Declaring Functions}.
@code{declare-function}. @xref{Declaring Functions}.
@item
Likewise, you can tell the compiler that a variable is defined using
@code{defvar} with no initial value. (Note that this marks the
variable as special.) @xref{Defining Variables}.
variable as special, i.e.@: dynamically bound.) @xref{Defining
Variables}.
@end itemize
You can also suppress any and all compiler warnings within a certain

View file

@ -435,7 +435,9 @@ dynamically bound value; @pxref{Void Variables}), then @var{value} is
evaluated and @var{symbol} is set to the result. But if @var{symbol}
is not void, @var{value} is not evaluated, and @var{symbol}'s value is
left unchanged. If @var{value} is omitted, the value of @var{symbol}
is not changed in any case.
is not changed in any case. Using @code{defvar} with no value is one
method of suppressing byte compilation warnings, see @ref{Compiler
Errors}.
If @var{symbol} has a buffer-local binding in the current buffer,
@code{defvar} acts on the default value, which is buffer-independent,