From 3f44db4f7be24c6daacad0956f019610aeb5f868 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Wed, 13 May 2026 06:32:08 -0500 Subject: fix(calibredb-epub): point cj/nov--file-path at nov-file-name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fallback chain was checking `nov-epub-filename` and `nov-epub-file`, but neither symbol exists in nov.el — the real var is `nov-file-name`, set by `nov-mode` from the visited file. Both `boundp` arms always returned nil, so the fallbacks were dead code. The bug was dormant rather than active: `buffer-file-name` always holds the EPUB path for normal nov buffers and covered the first arm of the `or`. I replaced both wrong-named arms with a single live arm on `nov-file-name`, and added a Boundary test that exercises it. --- modules/calibredb-epub-config.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'modules') diff --git a/modules/calibredb-epub-config.el b/modules/calibredb-epub-config.el index c1dba8b5..bf9ec97e 100644 --- a/modules/calibredb-epub-config.el +++ b/modules/calibredb-epub-config.el @@ -322,12 +322,12 @@ computed column based on the window text area width." (t v)))) (defun cj/nov--file-path () - "Return the current EPUB file path when in nov-mode, or nil." + "Return the current EPUB file path when in nov-mode, or nil. +Falls back to nov's own `nov-file-name' (set by `nov-mode' from the visited +file) so the function still resolves when `buffer-file-name' has been cleared." (when (derived-mode-p 'nov-mode) - ;; In nov, the buffer visits the .epub; buffer-file-name is usually the EPUB. (or buffer-file-name - (and (boundp 'nov-epub-filename) nov-epub-filename) - (and (boundp 'nov-epub-file) nov-epub-file)))) + (and (boundp 'nov-file-name) nov-file-name)))) (defun cj/nov-jump-to-calibredb () "Open CalibreDB focused on the current EPUB's book entry. -- cgit v1.2.3