Homepage: https://emacswiki.org/emacs/download/ppindent.el
Author: Craig McDaniel
Updated:
Indents C preprocessor directives
PPINDENT indents C-preprocessor statements depending on the current #if..., #el.., #endif level. It only modifies lines with "#" as the first non-blank character and therefore does not conflict with the normal C indentation. Unlike a true indent, it inserts the requisite number of spaces after, rather than before the "#" character. This type of preprocesor indent is commonly used to provide the most compatibility with different C-compilers. Example: #ifdef WOO .... #if defined(X) && !defined(Y) #ifdef Q8 ... #else ... .... #elif defined (Z) .... #endif #endif #endif After "M-x ppindent-c" becomes: #ifdef WOO .... # if defined(X) && !defined(Y) # ifdef Q8 ... # else ... .... # elif defined (Z) .... # endif # endif #endif Two functions are provided: PPINDENT-C indents as described above. PPINDENT-H does not indent the first level, assuming that .h/.hpp files use an #ifdef guard around the entire file. You can customize PPINDENT-INCREMENT if you want to use something other than 2 spaces for the indent.