elisp: Warning Tips

 
 D.5 Tips for Avoiding Compiler Warnings
 =======================================
 
    • Try to avoid compiler warnings about undefined free variables, by
      adding dummy ‘defvar’ definitions for these variables, like this:
 
           (defvar foo)
 
      Such a definition has no effect except to tell the compiler not to
      warn about uses of the variable ‘foo’ in this file.
 
    • Similarly, to avoid a compiler warning about an undefined function
      that you know _will_ be defined, use a ‘declare-function’ statement
      (SeeDeclaring Functions).
 
    • If you use many functions and variables from a certain file, you
      can add a ‘require’ for that package to avoid compilation warnings
      for them.  For instance,
 
           (eval-when-compile
             (require 'foo))
 
    • If you bind a variable in one function, and use it or set it in
      another function, the compiler warns about the latter function
      unless the variable has a definition.  But adding a definition
      would be unclean if the variable has a short name, since Lisp
      packages should not define short variable names.  The right thing
      to do is to rename this variable to start with the name prefix used
      for the other functions and variables in your package.
 
    • The last resort for avoiding a warning, when you want to do
      something that is usually a mistake but you know is not a mistake
      in your usage, is to put it inside ‘with-no-warnings’.  See
      Compiler Errors.