diff --git a/.gitignore b/.gitignore index 5bcc734ac5..c64326e60e 100644 --- a/.gitignore +++ b/.gitignore @@ -128,4 +128,4 @@ stamp-h[0-9] tmp /doc/os-config-lightweight-desktop.texi /nix/scripts/download -/etc/indent-package.el +/etc/indent-code.el diff --git a/configure.ac b/configure.ac index f628fa9d0d..9079a142dc 100644 --- a/configure.ac +++ b/configure.ac @@ -245,6 +245,6 @@ AC_CONFIG_FILES([scripts/guix], [chmod +x scripts/guix]) AC_CONFIG_FILES([test-env:build-aux/test-env.in], [chmod +x test-env]) AC_CONFIG_FILES([pre-inst-env:build-aux/pre-inst-env.in], [chmod +x pre-inst-env]) -AC_CONFIG_FILES([etc/indent-package.el], [chmod +x etc/indent-package.el]) +AC_CONFIG_FILES([etc/indent-code.el], [chmod +x etc/indent-code.el]) AC_OUTPUT diff --git a/doc/contributing.texi b/doc/contributing.texi index 9fc1eb54d8..4454df1f98 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -256,12 +256,17 @@ If you do not use Emacs, please make sure to let your editor knows these rules. To automatically indent a package definition, you can also run: @example -./etc/indent-package.el gnu/packages/@var{file}.scm @var{package} +./etc/indent-code.el gnu/packages/@var{file}.scm @var{package} @end example @noindent This automatically indents the definition of @var{package} in -@file{gnu/packages/@var{file}.scm} by running Emacs in batch mode. +@file{gnu/packages/@var{file}.scm} by running Emacs in batch mode. To +indent a whole file, omit the second argument: + +@example +./etc/indent-code.el gnu/services/@var{file}.scm +@end example We require all top-level procedures to carry a docstring. This requirement can be relaxed for simple private procedures in the @@ -374,7 +379,7 @@ or a package update along with fixes to that package. @item Please follow our code formatting rules, possibly running the -@command{etc/indent-package.el} script to do that automatically for you +@command{etc/indent-code.el} script to do that automatically for you (@pxref{Formatting Code}). @end enumerate diff --git a/etc/indent-package.el.in b/etc/indent-code.el.in similarity index 73% rename from etc/indent-package.el.in rename to etc/indent-code.el.in index 3188809f0b..7556b30cc8 100755 --- a/etc/indent-package.el.in +++ b/etc/indent-code.el.in @@ -1,7 +1,8 @@ #!@EMACS@ --script -;;; indent-package.el --- Run Emacs to indent a package definition. +;;; indent-code.el --- Run Emacs to indent a package definition. ;; Copyright © 2017 Alex Kost +;; Copyright © 2017 Ludovic Courtès ;; This file is part of GNU Guix. @@ -20,8 +21,8 @@ ;;; Commentary: -;; This scripts indents the given package definition in the specified file -;; using Emacs. +;; This scripts indents the given file or package definition in the specified +;; file using Emacs. ;;; Code: @@ -35,6 +36,7 @@ (pcase command-line-args-left (`(,file-name ,package-name) + ;; Indent the definition of PACKAGE-NAME in FILE-NAME. (find-file file-name) (goto-char (point-min)) (if (re-search-forward (concat "^(define\\(-public\\) +" @@ -47,7 +49,14 @@ (message "Done!")) (error "Package '%s' not found in '%s'" package-name file-name))) + (`(,file-name) + ;; Indent all of FILE-NAME. + (find-file file-name) + (let ((indent-tabs-mode nil)) + (indent-region (point-min) (point-max)) + (save-buffer) + (message "Done!"))) (x - (error "Usage: indent-package.el FILE PACKAGE"))) + (error "Usage: indent-code.el FILE [PACKAGE]"))) -;;; indent-package.el ends here +;;; indent-code.el ends here