fix(lib): doom-compile-function throwing native-compiler-error

This commit is contained in:
Henrik Lissner 2022-09-16 16:15:07 +02:00
parent 559229c250
commit c5e88d229f
No known key found for this signature in database
GPG Key ID: B60957CA074D39A3
2 changed files with 22 additions and 13 deletions

View File

@ -249,14 +249,22 @@ TRIGGER-HOOK is a list of quoted hooks and/or sharp-quoted functions."
((add-hook hook fn -101)))
fn)))
(defun doom-compile-function (fn &optional level)
"Compile FN, and natively, if possible."
(if (featurep 'native-compile)
(let ((native-comp-speed (or level native-comp-speed)))
(unless (subr-native-elisp-p (symbol-function fn))
(native-compile fn)))
(unless (byte-code-function-p (symbol-function fn))
(with-no-warnings (byte-compile fn)))))
(defun doom-compile-functions (&rest fns)
"Queue FNS to be byte/natively-compiled after a brief delay."
(with-memoization (get 'doom-compile-function 'timer)
(run-with-idle-timer
1 t (fn! (when-let ((fn (pop fns))
(fndef (indirect-function fn)))
(if (featurep 'native-compile)
(unless (subr-native-elisp-p fndef)
(doom-log "native-compile: Compiling %s" fn)
(native-compile fn))
(unless (byte-code-function-p fndef)
(doom-log "byte-compile: Compiling %s" fn)
(byte-compile fn))))
(unless fns
(cancel-timer (get 'doom-compile-function 'timer))
(put 'doom-compile-function 'timer nil))))))
;;

View File

@ -601,10 +601,11 @@ Adapted from 'https://www.reddit.com/r/emacs/comments/d7x7x8/finally_fixing_inde
(desired-indent)
(normal-indent))))))
;; HACK: These functions are called often and as part of performance-sensitive
;; processes, so we compile them if the file isn't already compiled.
(mapc #'doom-compile-function '(+emacs-lisp-highlight-vars-and-faces
+emacs-lisp-truncate-pin
+emacs-lisp--calculate-lisp-indent-a))
;; HACK: Quite a few functions here are called often, and so are especially
;; performance sensitive, so we compile this file on-demand, at least, until
;; Doom adds a formal compile step to 'doom sync'.
(doom-compile-functions #'+emacs-lisp-highlight-vars-and-faces
#'+emacs-lisp-truncate-pin
#'+emacs-lisp--calculate-lisp-indent-a)
;;; autoload.el ends here