branch: externals/greader
commit 3a488652be9feba923d496fd7171b02771a48f9c
Author: Michelangelo Rodriguez <[email protected]>
Commit: Michelangelo Rodriguez <[email protected]>
Fix: Ensure dictionary commands use the correct buffer
The greader-dict functions could fail when called from a buffer other than
the one where "greader-reading-mode" was active.
To solve this, "greader-dict.el" now uses the "greader--current-buffer"
variable to find the correct buffer. This variable is now set more
reliably via a new hook in "greader-reading-mode".
This change centralizes the logic for tracking the active reading buffer,
making dictionary operations more robust.
---
greader-dict.el | 14 +++++++++-----
greader.el | 15 +++++++++++++--
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/greader-dict.el b/greader-dict.el
index d8719cd5a9..42511c8bd1 100644
--- a/greader-dict.el
+++ b/greader-dict.el
@@ -221,18 +221,22 @@ buffer."
(declare (indent defun))
`(with-temp-buffer
(setq greader-dictionary (buffer-local-value 'greader-dictionary
-
greader-dict--current-reading-buffer))
+ (or
+ greader--current-buffer
+
greader-dict--current-reading-buffer)))
(setq greader-dict-filename (buffer-local-value
'greader-dict-filename
- greader-dict--current-reading-buffer))
+ (or greader--current-buffer
greader-dict--current-reading-buffer)))
(setq greader-dict-local-language (buffer-local-value
'greader-dict-local-language
- greader-dict--current-reading-buffer))
+ (or greader--current-buffer
greader-dict--current-reading-buffer)))
(setq greader-filters (buffer-local-value 'greader-filters
-
greader-dict--current-reading-buffer))
+ (or
+ greader--current-buffer
+
greader-dict--current-reading-buffer)))
(setq greader-dict-toggle-filters (buffer-local-value
'greader-dict-toggle-filters
- greader-dict--current-reading-buffer))
+ (or greader--current-buffer
greader-dict--current-reading-buffer)))
,@body))
;; filters.
diff --git a/greader.el b/greader.el
index dae98d70b0..7b6fe6b6eb 100644
--- a/greader.el
+++ b/greader.el
@@ -308,6 +308,14 @@ if set to t, when you call function `greader-read', that
function sets a
(setq buffer (current-buffer)))
(equal buffer greader--current-buffer))
+(defun greader--set-current-buffer (&optional buffer)
+ "Set `greader--current-buffer' using BUFFER.
+If BUFFER is omitted or nil, use `current-buffer' as BUFFER."
+ (unless buffer
+ (setq buffer (current-buffer)))
+ (unless greader--current-buffer
+ (setq greader--current-buffer buffer)))
+
;;;###autoload
(define-minor-mode greader-reading-mode
nil
@@ -315,8 +323,11 @@ if set to t, when you call function `greader-read', that
function sets a
:keymap greader-reading-map
:lighter " reading..."
(if greader-reading-mode
- (setq greader--current-buffer (current-buffer))
- (setq greader--current-buffer nil)))
+ (progn
+ (setq greader--current-buffer (current-buffer))
+ (add-hook 'greader-before-get-sentence-hook
#'greader--set-current-buffer))
+ (setq greader--current-buffer nil)
+ (remove-hook 'greader-before-get-sentence-hook
#'greader--set-current-buffer)))
(defun greader-set-bookmark-for-greader ()
"Imposta il segnalibro ad ogni interruzione della lettura."