On Friday, January 4, 2019 10:08:33 PM CET Bart Van Assche wrote:
> In emacs 23.1 support for directory-local variables was added (see also
> https://lists.gnu.org/archive/html/info-gnu-emacs/2009-07/msg00000.html).
> Simplify the settings in coding-style.rst by using that feature.
> Additionally, do not inherit any settings from emacs' linux coding style
> to minimize dependencies on the version of emacs that is being used.
>
> I have verified with several large and nontrivial kernel source files
> that the new settings format code according to what checkpatch expects.
>
> Signed-off-by: Bart Van Assche <[email protected]>
> Cc: Matthew Wilcox <[email protected]>
> Cc: Geyslan G. Bem <[email protected]>
> Cc: Tiago Natel de Moura <[email protected]>
> Cc: Alison Chaiken <[email protected]>
> Cc: Joe Perches <[email protected]>
> Cc: Federico Vaga <[email protected]>
> Cc: Li Yang <[email protected]>
> ---
> Documentation/process/coding-style.rst | 57 +++++++++++++++++---------
> 1 file changed, 37 insertions(+), 20 deletions(-)
>
> Changes compared to v1:
> - Removed top-level .dir-locals.el file again and updated coding-style.rst
> instead. - Restored the humourous paragraph about emacs.
> - Left out Italian and Chinese translations.
Since now there are only code changes, I think you can apply them on both
Italian and Chinese translations.
As a general comment, I personally think that it worth to mention the fact
that the user can take this code (actually part of it) and put it in a .dir-
locals.el file in the top-level directory.
> diff --git a/Documentation/process/coding-style.rst
> b/Documentation/process/coding-style.rst index 277c113376a6..5013883aec8e
> 100644
> --- a/Documentation/process/coding-style.rst
> +++ b/Documentation/process/coding-style.rst
> @@ -592,26 +592,43 @@ values. To do the latter, you can stick the following
> in your .emacs file: (* (max steps 1)
> c-basic-offset)))
>
> - (add-hook 'c-mode-common-hook
> - (lambda ()
> - ;; Add kernel style
> - (c-add-style
> - "linux-tabs-only"
> - '("linux" (c-offsets-alist
> - (arglist-cont-nonempty
> - c-lineup-gcc-asm-reg
> - c-lineup-arglist-tabs-only))))))
> -
> - (add-hook 'c-mode-hook
> - (lambda ()
> - (let ((filename (buffer-file-name)))
> - ;; Enable kernel mode for the appropriate files
> - (when (and filename
> - (string-match (expand-file-name
> "~/src/linux-trees") - filename))
> - (setq indent-tabs-mode t)
> - (setq show-trailing-whitespace t)
> - (c-set-style "linux-tabs-only")))))
> + (dir-locals-set-class-variables
> + 'linux-kernel
> + '((c-mode . (
> + (c-basic-offset . 8)
> + (c-label-minimum-indentation . 0)
> + (c-offsets-alist . (
> + (arglist-close . c-lineup-arglist-tabs-only)
> + (arglist-cont-nonempty .
> + (c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only))
> + (arglist-intro . +)
> + (brace-list-intro . +)
> + (c . c-lineup-C-comments)
> + (case-label . 0)
> + (comment-intro . c-lineup-comment)
> + (cpp-define-intro . +)
> + (cpp-macro . -1000)
> + (cpp-macro-cont . +)
> + (defun-block-intro . +)
> + (else-clause . 0)
> + (func-decl-cont . +)
> + (inclass . +)
> + (inher-cont . c-lineup-multi-inher)
> + (knr-argdecl-intro . 0)
> + (label . -1000)
> + (statement . 0)
> + (statement-block-intro . +)
> + (statement-case-intro . +)
> + (statement-cont . +)
> + (substatement . +)
> + ))
> + (indent-tabs-mode . t)
> + (show-trailing-whitespace . t)
> + ))))
> +
> + (dir-locals-set-directory-class
> + (expand-file-name "~/src/linux-trees")
> + 'linux-kernel)
>
> This will make emacs go better with the kernel coding style for C
> files below ``~/src/linux-trees``.