summaryrefslogtreecommitdiff
path: root/greader-dict.el
diff options
context:
space:
mode:
authorMichelangelo Rodriguez <michelangelo.rodriguez@gmail.com>2024-07-26 01:15:24 +0200
committerMichelangelo Rodriguez <michelangelo.rodriguez@gmail.com>2024-07-26 01:15:24 +0200
commit00f53aaeeff2d2e6a994d60765d4619d8b6816f4 (patch)
treeb0f54cac9fd9f2098f7a1727fd0f457cb55b607e /greader-dict.el
parent9d74372e5a9ab244de145117a1c1ddecb5c29487 (diff)
greader-dict.el: now changing the dictionary works as expected.
Diffstat (limited to 'greader-dict.el')
-rw-r--r--greader-dict.el37
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)))))