(fix) org-roam-file-p handle opening a buffer with no path (#2169)

* (fix) org-roam-file-p handle opening a buffer with no path

Found this issue when opening a .epub file with nov.el (a package
that renders EPUB file) because nov.el doesn't store the filename
in buffer-file-name, opening it caused errors with org-roam-file-p.

* (minor): org-roam-file-p check if filename is non-nil first
This commit is contained in:
c1-g
2022-04-24 06:36:09 +07:00
committed by GitHub
parent b948cfbe37
commit a073bcff5c

View File

@ -192,29 +192,30 @@ FILE is an Org-roam file if:
- It's located somewhere under `org-roam-directory' - It's located somewhere under `org-roam-directory'
- It has a matching file extension (`org-roam-file-extensions') - It has a matching file extension (`org-roam-file-extensions')
- It doesn't match excluded regexp (`org-roam-file-exclude-regexp')" - It doesn't match excluded regexp (`org-roam-file-exclude-regexp')"
(let* ((path (or file (buffer-file-name (buffer-base-buffer)))) (when (or file (buffer-file-name (buffer-base-buffer)))
(ext (when path (org-roam--file-name-extension path))) (let* ((path (or file (buffer-file-name (buffer-base-buffer))))
(ext (if (string= ext "gpg") (ext (org-roam--file-name-extension path))
(org-roam--file-name-extension (file-name-sans-extension path)) (ext (if (string= ext "gpg")
ext)) (org-roam--file-name-extension (file-name-sans-extension path))
(org-roam-dir-p (org-roam-descendant-of-p path org-roam-directory)) ext))
(valid-file-ext-p (member ext org-roam-file-extensions)) (org-roam-dir-p (org-roam-descendant-of-p path org-roam-directory))
(match-exclude-regexp-p (valid-file-ext-p (member ext org-roam-file-extensions))
(cond (match-exclude-regexp-p
((not org-roam-file-exclude-regexp) nil) (cond
((stringp org-roam-file-exclude-regexp) ((not org-roam-file-exclude-regexp) nil)
(string-match-p org-roam-file-exclude-regexp path)) ((stringp org-roam-file-exclude-regexp)
((listp org-roam-file-exclude-regexp) (string-match-p org-roam-file-exclude-regexp path))
(let (is-match) ((listp org-roam-file-exclude-regexp)
(dolist (exclude-re org-roam-file-exclude-regexp) (let (is-match)
(setq is-match (or is-match (string-match-p exclude-re path)))) (dolist (exclude-re org-roam-file-exclude-regexp)
is-match))))) (setq is-match (or is-match (string-match-p exclude-re path))))
(save-match-data is-match)))))
(and (save-match-data
path (and
org-roam-dir-p path
valid-file-ext-p org-roam-dir-p
(not match-exclude-regexp-p))))) valid-file-ext-p
(not match-exclude-regexp-p))))))
(defun org-roam-list-files () (defun org-roam-list-files ()
"Return a list of all Org-roam files under `org-roam-directory'. "Return a list of all Org-roam files under `org-roam-directory'.