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."

Reply via email to