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

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

[elpa] externals/pyim 09a1be1 1/2: 使用 `pyim-pymap-py2cchar-get' 搜索更多的词条


From: ELPA Syncer
Subject: [elpa] externals/pyim 09a1be1 1/2: 使用 `pyim-pymap-py2cchar-get' 搜索更多的词条
Date: Sun, 5 Dec 2021 21:57:27 -0500 (EST)

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

    使用 `pyim-pymap-py2cchar-get' 搜索更多的词条
    
    如果 pyim-candidates-create-quanpin 找不到第一个拼音对应的汉字,那就进一步使用
    `pyim-pymap-py2cchar-get' 来查找,这个函数支持声母搜索。可以得到更多的词条。
---
 pyim-candidates.el | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/pyim-candidates.el b/pyim-candidates.el
index edc7f02..05fb070 100644
--- a/pyim-candidates.el
+++ b/pyim-candidates.el
@@ -31,6 +31,7 @@
 (require 'pyim-common)
 (require 'pyim-dcache)
 (require 'pyim-codes)
+(require 'pyim-pymap)
 
 (defgroup pyim-candidates nil
   "Candidates of pyim."
@@ -111,7 +112,7 @@ IMOBJS 获得候选词条。"
 
 (defun pyim-candidates-create-quanpin (imobjs scheme-name &optional 
fast-search)
   "`pyim-candidates-create:quanpin' 内部使用的函数。"
-  (let (znabc-words pinyin-chars personal-words common-words)
+  (let (znabc-words personal-words common-words pinyin-chars-1 pinyin-chars-2)
     ;; 智能ABC模式,得到尽可能的拼音组合,查询这些组合,得到的词条做为联想词。
     (let ((codes (mapcar (lambda (x)
                            (pyim-subconcat x "-"))
@@ -143,14 +144,23 @@ IMOBJS 获得候选词条。"
                     '(code2word))))
              ;; 第一个汉字
              (w3 (pyim-dcache-get
-                  (car (pyim-codes-create imobj scheme-name)))))
+                  (car (pyim-codes-create imobj scheme-name))))
+             ;; 如果 w3 找不到第一个拼音对应的汉字,那就进一步使用
+             ;; `pyim-pymap-py2cchar-get' 来查找,这个函数支持声母搜索。可以得到
+             ;; 更多的词条。
+             (w4 (unless w3
+                   (mapcar #'char-to-string
+                           (pyim-zip (pyim-pymap-py2cchar-get
+                                      (car (pyim-codes-create imobj 
scheme-name))))))))
         (push w1 personal-words)
         (push w2 common-words)
-        (push w3 pinyin-chars)))
+        (push w3 pinyin-chars-1)
+        (push w4 pinyin-chars-2)))
 
     (setq personal-words (pyim-zip (nreverse personal-words) fast-search))
     (setq common-words (pyim-zip (nreverse common-words) fast-search))
-    (setq pinyin-chars (pyim-zip (nreverse pinyin-chars) fast-search))
+    (setq pinyin-chars-1 (pyim-zip (nreverse pinyin-chars-1) fast-search))
+    (setq pinyin-chars-2 (pyim-zip (nreverse pinyin-chars-2) fast-search))
 
     ;; 个人词条排序:使用词频信息对个人词库得到的候选词排序,第一个词条的位置
     ;; 比较特殊,不参与排序,具体原因请参考 `pyim-page-select-word' 中的
@@ -166,16 +176,21 @@ IMOBJS 获得候选词条。"
                    :personal-words personal-words
                    :common-words common-words
                    :znabc-words znabc-words
-                   :pinyin-chars
-                   (cl-subseq pinyin-chars
-                              0 (min (length pinyin-chars) 5)))))
+                   :pinyin-chars-1
+                   (cl-subseq pinyin-chars-1
+                              0 (min (length pinyin-chars-1) 5))
+                   :pinyin-chars-2
+                   (cl-subseq pinyin-chars-2
+                              0 (min (length pinyin-chars-2) 5)))))
 
     (delete-dups
      (delq nil
            `(,@personal-words
              ,@common-words
              ,@znabc-words
-             ,@pinyin-chars)))))
+             ,@pinyin-chars-1
+             ,@pinyin-chars-2
+             )))))
 
 (defun pyim-candidates-create:shuangpin (imobjs _scheme-name &optional async)
   "`pyim-candidates-create' 处理双拼输入法的函数."



reply via email to

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