From 6fa9332e7cdb28c3990f8d1444b02b65791713d6 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Sun, 7 May 2023 21:37:01 +0200 Subject: [PATCH] Ensure that EXTRA-DATA are always written when generating autoloads * lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Handle edge-case where no autoloads are found. (Bug#63260) --- lisp/emacs-lisp/loaddefs-gen.el | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/loaddefs-gen.el b/lisp/emacs-lisp/loaddefs-gen.el index 2a46fb7a022..5db9af21508 100644 --- a/lisp/emacs-lisp/loaddefs-gen.el +++ b/lisp/emacs-lisp/loaddefs-gen.el @@ -656,7 +656,20 @@ instead of just updating them with the new/changed autoloads." (write-region (point-min) (point-max) loaddefs-file nil 'silent) (byte-compile-info (file-relative-name loaddefs-file (car (ensure-list dir))) - t "GEN"))))))) + t "GEN"))))) + + ;; If processing files without any autoloads, the above loop will + ;; not generate any files. If the function was invoked with + ;; EXTRA-DATA, we want to ensure that even if no autoloads were + ;; found, that at least a file will have been generated containing + ;; the contents of EXTRA-DATA: + (when (and extra-data (not (file-exists-p output-file))) + (with-temp-buffer + (insert (loaddefs-generate--rubric output-file nil t)) + (search-backward "\f") + (insert extra-data) + (ensure-empty-lines 1) + (write-region (point-min) (point-max) output-file nil 'silent))))) (defun loaddefs-generate--print-form (def) "Print DEF in a format that makes sense for version control." -- 2.39.2