6.3.5 File Styles

The Emacs manual describes how you can customize certain variables on a per-file basis by including a file local variable block at the end of the file (see Local Variables in Files in GNU Emacs Manual).

So far, you’ve only seen a functional interface for setting styles in CC Mode, and this can’t be used here. CC Mode fills the gap by providing two variables for use in a file’s local variable list. Don’t use them anywhere else! These allow you to customize the style on a per-file basis:

Variable: c-file-style

Set this variable to a style name string in the Local Variables list. From now on, when you visit the file, CC Mode will automatically set the file’s style to this one using c-set-style.

Variable: c-file-offsets

Set this variable (in the Local Variables list) to an association list of the same format as c-offsets-alist. From now on, when you visit the file, CC Mode will automatically institute these offsets using c-set-offset.

Note that file style settings (i.e., c-file-style) are applied before file offset settings (i.e., c-file-offsets)23.

If you set any variable by the file local variables mechanism, that setting takes priority over all other settings, even those in your mode hooks (see Hooks). Any individual setting of a variable will override one made through c-file-style or c-file-offsets.



Also, if either of these are set in a file’s local variable section, all the style variable values are made local to that buffer, even if c-style-variables-are-local-p is nil. Since this variable is virtually always non-nil anyhow, you’re unlikely to notice this effect.