Insert translation template with using value of `gadict-tr'.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Wed, 09 Nov 2016 20:54:48 +0200
changeset 652 fa97354a56d3
parent 651 08417d7454ec
child 653 632a0415fad3
Insert translation template with using value of `gadict-tr'.
contrib/gadict.el
--- a/contrib/gadict.el	Wed Nov 09 12:45:30 2016 +0200
+++ b/contrib/gadict.el	Wed Nov 09 20:54:48 2016 +0200
@@ -22,10 +22,13 @@
 
 ;;; Code:
 
+(defconst gadict--pos '("n" "v" "adj" "adv" "pron" "prep" "num" "conj" "int" "phr" "phr.v" "contr" "abbr" "prefix")
+  "Defined parts of speech.")
+
 (defconst gadict--art-lang-regex (regexp-opt '("en" "ru" "uk" "la")))
 (defconst gadict--art-rel-regex (regexp-opt '("ant" "syn" "rel" "topic" "hyper" "hypo")))
 (defconst gadict--art-var-regex (regexp-opt '("rare" "v1" "v2" "v3" "s" "pl" "male" "female" "abbr" "comp" "super" "Am" "Br" "Au")))
-(defconst gadict--art-pos-regex (regexp-opt '("n" "v" "adj" "adv" "pron" "prep" "num" "conj" "int" "phr" "phr.v" "contr" "abbr" "prefix")))
+(defconst gadict--art-pos-regex (regexp-opt gadict--pos))
 
 (defgroup gadict nil
   "gadict-mode customization."
@@ -210,9 +213,41 @@
     (gadict-insert-template headword))
   (recenter))
 
+(defun gadict--find-headword-end ()
+  (save-excursion
+    (end-of-line)
+    (re-search-backward "^__$")
+    (re-search-forward "^$")
+    (forward-char)
+    (re-search-forward "^$")
+    (point)))
+
+(defun gadict-insert-translation (pos)
+  "Insert translation template with using value of `gadict-tr'."
+  (interactive (list (completing-read "POS: " gadict--pos nil t)))
+  (let ( (headword-end (gadict--find-headword-end)) )
+    (if (< (point) headword-end)
+        (goto-char headword-end)
+      (re-search-forward "^\\(?:\\|__\\)$")
+      (when (eq (char-before) ?_)
+        (beginning-of-line)
+        ;; (newline)
+        ;; (backward-char)
+        ))
+    (insert-char ?\n)
+    (insert pos)
+    (insert-char ?\n)
+    (save-excursion
+      (mapc (lambda (lang)
+              (insert lang)
+              (insert ": \n"))
+            (split-string gadict-tr ",")))
+    (end-of-line) ))
+
 (defun gadict-setup-keymap ()
   "Setup gadict keymap."
-  (define-key (current-local-map) [S-return] 'gadict-search)
+  (define-key (current-local-map) [M-return] 'gadict-search)
+  (define-key (current-local-map) [S-return] 'gadict-insert-translation)
   (define-key (current-local-map) [C-return] 'gadict-insert-template-in-order))
 
 ;;;###autoload