Generalize doom-file-cookie-p

And move it to doom-file-cookie-p for anyone to use.
This commit is contained in:
Henrik Lissner 2019-10-04 22:42:53 -04:00
parent 5b5dbe1c47
commit 297728bf74
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
5 changed files with 21 additions and 12 deletions

View file

@ -137,6 +137,24 @@ MATCH is a string regexp. Only entries that match it will be included."
result))))
result))
;;;###autoload
(defun doom-file-cookie-p (file &optional cookie null-value)
"Returns the evaluated result of FORM in a ;;;###COOKIE FORM at the top of
FILE.
If COOKIE doesn't exist, return NULL-VALUE."
(unless (file-exists-p file)
(signal 'file-missing file))
(unless (file-readable-p file)
(error "%S is unreadable" file))
(with-temp-buffer
(insert-file-contents file nil 0 256)
(if (re-search-forward (format "^;;;###%s " (regexp-quote (or cookie "if")))
nil t)
(let ((load-file-name file))
(eval (sexp-at-point) t))
null-value)))
;;;###autoload
(defmacro file-exists-p! (files &optional directory)
"Returns non-nil if the FILES in DIRECTORY all exist.