diff options
| author | Michelangelo Rodriguez <michelangelo.rodriguez@gmail.com> | 2024-07-26 01:15:24 +0200 |
|---|---|---|
| committer | Michelangelo Rodriguez <michelangelo.rodriguez@gmail.com> | 2024-07-26 01:15:24 +0200 |
| commit | 00f53aaeeff2d2e6a994d60765d4619d8b6816f4 (patch) | |
| tree | b0f54cac9fd9f2098f7a1727fd0f457cb55b607e /greader-dict.el | |
| parent | 9d74372e5a9ab244de145117a1c1ddecb5c29487 (diff) | |
greader-dict.el: now changing the dictionary works as expected.
Diffstat (limited to 'greader-dict.el')
| -rw-r--r-- | greader-dict.el | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/greader-dict.el b/greader-dict.el index 063dec5..ce4c035 100644 --- a/greader-dict.el +++ b/greader-dict.el @@ -165,9 +165,14 @@ "Item types and relative prefixes.") ;; This function saves the contents of the hash table. -(defvar greader-dict-directory (concat user-emacs-directory - ".greader-dict/") +(defvar-local greader-dict-directory (concat user-emacs-directory + ".greader-dict/" + (greader-get-language) + "/") "The directory containing greader-dict files.") + +(defvar-local greader-dict-local-language (greader-get-language)) + (defvar-local greader-dict-filename "greader-dict.global" "File name where dictionary definitions are stored.") (defvar greader-dict--current-reading-buffer (current-buffer)) @@ -284,6 +289,8 @@ as a word definition." (add-hook 'greader-after-change-language-hook (lambda () (when greader-dict-mode + (setq greader-dict-local-language + (greader-get-language)) (greader-dict-read-from-dict-file))))))) ;; THanks to the loved and alwais useful elisp reference. @@ -494,6 +501,9 @@ Return nil if KEY is not present in `greader-dictionary'." (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)) (maphash (lambda (k v) (insert "\"" k "\"" "=" v "\n")) @@ -673,9 +683,23 @@ argument, only if `greader-dict-mode' is enabled." (declare-function greader-get-language nil) (defun greader-dict--get-file-name () "Return the absolute path of current dictionary file." - (concat greader-dict-directory (greader-get-language) "/" - (buffer-local-value 'greader-dict-filename - greader-dict--current-reading-buffer))) + (let ((language-part (car (last (split-string greader-dict-directory + "/" t))))) + (unless (equal language-part (buffer-local-value + 'greader-dict-local-language + greader-dict--current-reading-buffer)) + (setq greader-dict-directory (string-remove-suffix (concat + language-part + "/") + greader-dict-directory)) + (setq greader-dict-directory + (concat greader-dict-directory (buffer-local-value + 'greader-dict-local-language + greader-dict--current-reading-buffer) + "/")))) + (concat greader-dict-directory (buffer-local-value + 'greader-dict-filename + greader-dict--current-reading-buffer))) (defun greader-dict--set-file (type) "Set `greader-dict-filename' according to TYPE. @@ -774,8 +798,7 @@ asked." (greader-dict--set-file (intern new-dict)) (unless (file-exists-p (greader-dict--get-file-name)) (shell-command-to-string - (concat "touch " greader-dict-filename))) - (greader-dict--update) + (concat "touch " (greader-dict--get-file-name)))) (greader-dict--update)))) ;; (remove-hook 'buffer-list-update-hook #'greader-dict--update))))) |
