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)
This commit is contained in:
Philip Kaludercic 2023-05-07 21:37:01 +02:00
parent 60d5a015d1
commit 6fa9332e7c

View file

@ -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."