diff options
| author | Richard M. Stallman | 2004-11-16 17:30:48 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2004-11-16 17:30:48 +0000 |
| commit | 155cb2e57eb0ae8e874824bcaf733cfe97c4f788 (patch) | |
| tree | 4256b0a4d7752336823bb5fae29ee4f8b5c99e47 | |
| parent | 5d645852385218a0252ec29aabf3de28364d3ec5 (diff) | |
| download | emacs-155cb2e57eb0ae8e874824bcaf733cfe97c4f788.tar.gz emacs-155cb2e57eb0ae8e874824bcaf733cfe97c4f788.zip | |
(Coding Conventions): Separate defvar and require
methods to avoid warnings. Use require only when there are many
functions and variables from that package.
| -rw-r--r-- | lispref/tips.texi | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/lispref/tips.texi b/lispref/tips.texi index a85147f1d8f..4182260028b 100644 --- a/lispref/tips.texi +++ b/lispref/tips.texi | |||
| @@ -370,25 +370,34 @@ coherent if all libraries use the same conventions. | |||
| 370 | 370 | ||
| 371 | @item | 371 | @item |
| 372 | Try to avoid compiler warnings about undefined free variables, by adding | 372 | Try to avoid compiler warnings about undefined free variables, by adding |
| 373 | @code{defvar} definitions for these variables. | 373 | dummy @code{defvar} definitions for these variables, like this: |
| 374 | 374 | ||
| 375 | Sometimes adding a @code{require} for another package is useful to avoid | 375 | @example |
| 376 | compilation warnings for variables and functions defined in that | 376 | (defvar foo) |
| 377 | package. If you do this, often it is better if the @code{require} acts | 377 | @end example |
| 378 | only at compile time. Here's how to do that: | 378 | |
| 379 | Such a definition has no effect except to tell the compiler | ||
| 380 | not to warn about uses of the variable @code{foo} in this file. | ||
| 381 | |||
| 382 | @item | ||
| 383 | If you use many functions and variables from a certain file, you can | ||
| 384 | add a @code{require} for that package to avoid compilation warnings | ||
| 385 | for them. It is better if the @code{require} acts only at compile | ||
| 386 | time. Here's how to do this: | ||
| 379 | 387 | ||
| 380 | @example | 388 | @example |
| 381 | (eval-when-compile | 389 | (eval-when-compile |
| 382 | (require 'foo) | 390 | (require 'foo)) |
| 383 | (defvar bar-baz)) | ||
| 384 | @end example | 391 | @end example |
| 385 | 392 | ||
| 386 | If you bind a variable in one function, and use it or set it in another | 393 | @item |
| 387 | function, the compiler warns about the latter function unless the | 394 | If you bind a variable in one function, and use it or set it in |
| 388 | variable has a definition. But often these variables have short names, | 395 | another function, the compiler warns about the latter function unless |
| 389 | and it is not clean for Lisp packages to define such variable names. | 396 | the variable has a definition. But adding a definition would be |
| 390 | Therefore, you should rename the variable to start with the name prefix | 397 | unclean if the variable has a short names, since Lisp packages should |
| 391 | used for the other functions and variables in your package. | 398 | not define short variable names. The right thing to do is to rename |
| 399 | this variable to start with the name prefix used for the other | ||
| 400 | functions and variables in your package. | ||
| 392 | 401 | ||
| 393 | @item | 402 | @item |
| 394 | Indent each function with @kbd{C-M-q} (@code{indent-sexp}) using the | 403 | Indent each function with @kbd{C-M-q} (@code{indent-sexp}) using the |