emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/pyim 1b1cfd7: * pyim-candidates.el (pyim-candidates-cr


From: ELPA Syncer
Subject: [elpa] externals/pyim 1b1cfd7: * pyim-candidates.el (pyim-candidates-create-quanpin): 再次添加 jianpin 支持。
Date: Mon, 6 Dec 2021 02:57:26 -0500 (EST)

branch: externals/pyim
commit 1b1cfd71ab27b4def0c3dfac0a5f0052ef2aabdd
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>

    * pyim-candidates.el (pyim-candidates-create-quanpin): 再次添加 jianpin 支持。
---
 pyim-candidates.el | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/pyim-candidates.el b/pyim-candidates.el
index e8824ee..a4f33d2 100644
--- a/pyim-candidates.el
+++ b/pyim-candidates.el
@@ -112,7 +112,7 @@ IMOBJS 获得候选词条。"
 
 (defun pyim-candidates-create-quanpin (imobjs scheme-name &optional 
fast-search)
   "`pyim-candidates-create:quanpin' 内部使用的函数。"
-  (let (znabc-words personal-words common-words pinyin-chars-1 pinyin-chars-2)
+  (let (jianpin-words znabc-words personal-words common-words pinyin-chars-1 
pinyin-chars-2)
     ;; 智能ABC模式,得到尽可能的拼音组合,查询这些组合,得到的词条做为联想词。
     (let ((codes (mapcar (lambda (x)
                            (pyim-subconcat x "-"))
@@ -124,6 +124,31 @@ IMOBJS 获得候选词条。"
                               (pyim-zip codes))
                       fast-search)))
 
+    ;; 假如输入 "ni-h" ,那么搜索 code 为 "n-h" 的词条,然后筛选出所有拼音匹配
+    ;; "ni-h" 或者 "ni[^-]*-h" 的词条。
+    (dolist (imobj imobjs)
+      (when (and (> (length imobj) 1) pyim-enable-shortcode)
+        (let* ((w (pyim-dcache-get
+                   (mapconcat #'identity
+                              (pyim-codes-create imobj scheme-name 1)
+                              "-")
+                   '(ishortcode2word)))
+               (regexp1 (mapconcat #'identity
+                                   (pyim-codes-create imobj scheme-name)
+                                   "-"))
+               (regexp2 (mapconcat #'identity
+                                   (pyim-codes-create imobj scheme-name)
+                                   "[^-]*-"))
+               (w1 (cl-remove-if-not
+                    (lambda (cstr)
+                      (string-match-p regexp1 (pyim-cstring-to-pinyin cstr nil 
"-")))
+                    w))
+               (w2 (cl-remove-if-not
+                    (lambda (cstr)
+                      (string-match-p regexp2 (pyim-cstring-to-pinyin cstr nil 
"-")))
+                    w)))
+          (push (append w1 w2) jianpin-words))))
+
     ;; 获取个人词条,词库词条和第一汉字列表。
     (dolist (imobj imobjs)
       (let* (;; 个人词条
@@ -162,6 +187,7 @@ IMOBJS 获得候选词条。"
         (push w3 pinyin-chars-1)
         (push w4 pinyin-chars-2)))
 
+    (setq jianpin-words (pyim-zip (nreverse jianpin-words) fast-search))
     (setq personal-words (pyim-zip (nreverse personal-words) fast-search))
     (setq common-words (pyim-zip (nreverse common-words) fast-search))
     (setq pinyin-chars-1 (pyim-zip (nreverse pinyin-chars-1) fast-search))
@@ -180,6 +206,7 @@ IMOBJS 获得候选词条。"
       (print (list :imobjs imobjs
                    :personal-words personal-words
                    :common-words common-words
+                   :jianpin-words jianpin-words
                    :znabc-words znabc-words
                    :pinyin-chars-1
                    (cl-subseq pinyin-chars-1
@@ -191,6 +218,7 @@ IMOBJS 获得候选词条。"
     (delete-dups
      (delq nil
            `(,@personal-words
+             ,@jianpin-words
              ,@common-words
              ,@znabc-words
              ,@pinyin-chars-1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]