branch: externals/greader commit 6db9710e60f3d7bd85ab6c3e95bf9f9ab208b2a9 Author: Michelangelo Rodriguez <michelangelo.rodrig...@gmail.com> Commit: Michelangelo Rodriguez <michelangelo.rodrig...@gmail.com>
Macro `with-greader-dict-temp-buffer' added. Now greader-dict.el uses this macro for operate with temp buffers. --- greader-dict.el | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/greader-dict.el b/greader-dict.el index 0c1a48078d..5c73cf3595 100644 --- a/greader-dict.el +++ b/greader-dict.el @@ -199,6 +199,30 @@ (defvar greader-dict-filter-indicator "\%f") +;; This macro calls `with-temp-buffer', setting all the necessary +;; local variables to useful values. This means that all sensible +;; variables will be bound to `greader-dict-current-buffer' local +;; values. +(defmacro with-greader-dict-temp-buffer (&rest body) + "Optimized `with-temp-buffer' for greader-dict. +Execute BODY in a temporary bufer as if we where in the reading +buffer." + `(with-temp-buffer + (setq greader-dictionary (buffer-local-value 'greader-dictionary + greader-dict--current-reading-buffer)) + (setq greader-dict-filename (buffer-local-value + 'greader-dict-filename + greader-dict--current-reading-buffer)) + (setq greader-dict-local-language (buffer-local-value + 'greader-dict-local-language + greader-dict--current-reading-buffer)) + (setq greader-filters (buffer-local-value 'greader-filters + greader-dict--current-reading-buffer)) + (setq greader-dict-toggle-filters (buffer-local-value + 'greader-dict-toggle-filters + greader-dict--current-reading-buffer)) + ,@body)) + (defvar-keymap greader-dict-filter-map :doc "key bindings for greader-dict filter feature." "C-r d f a" #'greader-dict-filter-add @@ -461,9 +485,7 @@ by adding every match found in the text as a word." (defun greader-dict-check-and-replace (text) "Return the TEXT passed to it, eventually modified according to `greader-dictionary' and variants." - (with-temp-buffer - (setq greader-dictionary (buffer-local-value 'greader-dictionary - greader-dict--current-reading-buffer)) + (with-greader-dict-temp-buffer (insert text) (goto-char (point-min)) (when @@ -504,15 +526,7 @@ by adding every match found in the text as a word." "Save greader-dictionary stored in `greader-dict-filename'." (unless (file-exists-p greader-dict-directory) (make-directory greader-dict-directory t)) - (with-temp-buffer - (setq greader-dictionary (buffer-local-value 'greader-dictionary - greader-dict--current-reading-buffer)) - (setq greader-dict-filename (buffer-local-value - 'greader-dict-filename - greader-dict--current-reading-buffer)) - (setq greader-dict-local-language (buffer-local-value - 'greader-dict-local-language - greader-dict--current-reading-buffer)) + (with-greader-dict-temp-buffer (maphash (lambda (k v) (insert "\"" k "\"" "=" v "\n")) @@ -534,17 +548,7 @@ user-error and aborts the reading process." (when (and (not greader-dict--saved-flag) (not force)) (user-error "Dictionary has been modified and not yet saved")) (when (file-exists-p (greader-dict--get-file-name)) - (with-temp-buffer - (setq greader-dictionary (buffer-local-value 'greader-dictionary - greader-dict--current-reading-buffer)) - (setq greader-dict-filename (buffer-local-value - 'greader-dict-filename - greader-dict--current-reading-buffer)) - (setq greader-filters (buffer-local-value 'greader-filters - greader-dict--current-reading-buffer)) - (setq greader-dict-toggle-filters (buffer-local-value - 'greader-dict-toggle-filters - greader-dict--current-reading-buffer)) + (with-greader-dict-temp-buffer (insert-file-contents (greader-dict--get-file-name)) (when-let* ((lines (string-lines (buffer-string) t))) (dolist (line lines)