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

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

[elpa] externals/pyim 97fd721 11/36: New file pyim-scheme.el


From: ELPA Syncer
Subject: [elpa] externals/pyim 97fd721 11/36: New file pyim-scheme.el
Date: Thu, 22 Apr 2021 22:57:16 -0400 (EDT)

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

    New file pyim-scheme.el
---
 pyim-scheme.el | 300 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 pyim.el        | 265 +-------------------------------------------------
 2 files changed, 301 insertions(+), 264 deletions(-)

diff --git a/pyim-scheme.el b/pyim-scheme.el
new file mode 100644
index 0000000..30da3da
--- /dev/null
+++ b/pyim-scheme.el
@@ -0,0 +1,300 @@
+;;; pyim-scheme.el --- scheme tools for pyim.        -*- lexical-binding: t; 
-*-
+
+;; * Header
+;; Copyright (C) 2021 Free Software Foundation, Inc.
+
+;; Author: Feng Shu <tumashu@163.com>
+;; Maintainer: Feng Shu <tumashu@163.com>
+;; URL: https://github.com/tumashu/pyim
+;; Keywords: convenience, Chinese, pinyin, input-method
+;; Package-Requires: ((emacs "24.4") (async "1.6") (xr "1.13"))
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+;; * 代码                                                           :code:
+(require 'cl-lib)
+
+(defvar pyim-schemes nil
+  "Pyim 支持的所有拼音方案.")
+
+(defun pyim-scheme-add (scheme)
+  "Add SCHEME to `pyim-schemes'"
+  (if (listp scheme)
+      (let ((scheme-name (car scheme)))
+        (when (symbolp scheme-name)
+          (setq pyim-schemes
+                (remove (assoc scheme-name pyim-schemes)
+                        pyim-schemes)))
+        (push scheme pyim-schemes))
+    (message "PYIM: Invalid pyim scheme config!")))
+
+(defun pyim-scheme-get (scheme-name)
+  "获取名称为 SCHEME-NAME 的输入法方案。"
+  (when scheme-name
+    (assoc scheme-name pyim-schemes)))
+
+(defun pyim-scheme-name (&optional default)
+  "获取输入法 scheme"
+  (let (scheme-name)
+    (if (and pyim-assistant-scheme-enable
+             (not default))
+        (setq scheme-name
+              (or pyim-assistant-scheme
+                  pyim-default-scheme))
+      (setq scheme-name pyim-default-scheme))
+    (if (assq scheme-name pyim-schemes)
+        scheme-name
+      'quanpin)))
+
+(defun pyim-scheme-get-option (scheme-name option)
+  "获取名称为 SCHEME-NAME 的输入法方案,并提取其属性 OPTION 。"
+  (when scheme-name
+    (let* ((scheme (pyim-scheme-get scheme-name))
+           (scheme-inherit
+            (car (pyim-scheme-get
+                  (plist-get (cdr scheme) :inherit)))))
+      (if (member option (cdr scheme))
+          (plist-get (cdr scheme) option)
+        (pyim-scheme-get-option scheme-inherit option)))))
+
+(pyim-scheme-add
+ '(quanpin
+   :document "全拼输入法方案(不可删除)。"
+   :class quanpin
+   :first-chars "abcdefghijklmnopqrstuwxyz"
+   :rest-chars "vmpfwckzyjqdltxuognbhsrei'-a"
+   :prefer-trigger-chars "v"))
+
+(pyim-scheme-add
+ '(wubi
+   :document "五笔输入法。"
+   :class xingma
+   :first-chars "abcdefghijklmnopqrstuvwxyz"
+   :rest-chars "abcdefghijklmnopqrstuvwxyz'"
+   :code-prefix "." ;五笔词库中所有的 code 都以 "." 开头,防止和拼音词库冲突。
+   :code-split-length 4 ;默认将用户输入切成 4 个字符长的 code 列表(不计算 code-prefix)
+   :code-maximum-length 4 ;五笔词库中,code 的最大长度(不计算 code-prefix)
+   :prefer-trigger-chars nil))
+
+(pyim-scheme-add
+ '(cangjie
+   :document "倉頡输入法。"
+   :class xingma
+   :first-chars "abcdefghijklmnopqrstuvwxyz"
+   :rest-chars "abcdefghijklmnopqrstuvwxyz"
+   :code-prefix "@" ;仓颉输入法词库中所有的 code 都以 "@" 开头,防止词库冲突。
+   :code-split-length 5 ;默认将用户输入切成 5 个字符长的 code 列表(不计算 code-prefix)
+   :code-maximum-length 5 ;仓颉词库中,code 的最大长度(不计算 code-prefix)
+   :prefer-trigger-chars nil))
+
+(pyim-scheme-add
+ '(pyim-shuangpin
+   :document "与 pyim 配合良好的双拼输入法方案,源自小鹤双拼方案。"
+   :class shuangpin
+   :first-chars "abcdefghijklmnpqrstuvwxyz"
+   :rest-chars "abcdefghijklmnopqrstuvwxyz"
+   :prefer-trigger-chars "o"
+   :keymaps
+   (("a" "a" "a")
+    ("b" "b" "in")
+    ("c" "c" "ao")
+    ("d" "d" "ai")
+    ("e" "e" "e")
+    ("f" "f" "en")
+    ("g" "g" "eng")
+    ("h" "h" "ang")
+    ("i" "ch" "i")
+    ("j" "j" "an")
+    ("k" "k" "ing" "uai")
+    ("l" "l" "iang" "uang")
+    ("m" "m" "ian")
+    ("n" "n" "iao")
+    ("o" "o" "uo" "o")
+    ("p" "p" "ie")
+    ("q" "q" "iu")
+    ("r" "r" "uan")
+    ("s" "s" "iong" "ong")
+    ("t" "t" "ue" "ve")
+    ("u" "sh" "u")
+    ("v" "zh" "v" "ui")
+    ("w" "w" "ei")
+    ("x" "x" "ia" "ua")
+    ("y" "y" "un")
+    ("z" "z" "ou")
+    ("aa" "a")
+    ("aj" "an")
+    ("ad" "ai")
+    ("ac" "ao")
+    ("ah" "ang")
+    ("ee" "e")
+    ("ew" "ei")
+    ("ef" "en")
+    ("er" "er")
+    ("eg" "eng")
+    ("ag" "ng")
+    ("ao" "o")
+    ("au" "ou"))))
+
+(pyim-scheme-add
+ '(microsoft-shuangpin
+   :document "微软双拼方案。"
+   :class shuangpin
+   :first-chars "abcdefghijklmnopqrstuvwxyz"
+   :rest-chars "abcdefghijklmnopqrstuvwxyz;"
+   :prefer-trigger-chars nil
+   :keymaps
+   (("a" "a" "a")
+    ("b" "b" "ou")
+    ("c" "c" "iao")
+    ("d" "d" "uang" "iang")
+    ("e" "e" "e")
+    ("f" "f" "en")
+    ("g" "g" "eng")
+    ("h" "h" "ang")
+    ("i" "ch" "i")
+    ("j" "j" "an")
+    ("k" "k" "ao")
+    ("l" "l" "ai")
+    ("m" "m" "ian")
+    ("n" "n" "in")
+    ("o" "o" "uo" "o")
+    ("p" "p" "un")
+    ("q" "q" "iu")
+    ("r" "r" "uan" "er")
+    ("s" "s" "iong" "ong")
+    ("t" "t" "ue")
+    ("u" "sh" "u")
+    ("v" "zh" "ve" "ui")
+    ("w" "w" "ia" "ua")
+    ("x" "x" "ie")
+    ("y" "y" "uai" "v")
+    ("z" "z" "ei")
+    (";" ";" "ing")
+    ("oa" "a")
+    ("oj" "an")
+    ("ol" "ai")
+    ("ok" "ao")
+    ("oh" "ang")
+    ("oe" "e")
+    ("oz" "ei")
+    ("of" "en")
+    ("or" "er")
+    ("og" "eng")
+    ("oo" "o")
+    ("ob" "ou"))))
+
+(pyim-scheme-add
+ '(zhinengabc-shuangpin
+   :document "智能ABC双拼方案"
+   :class shuangpin
+   :first-chars "abcdefghjklmnopqrstvwxyz"
+   :rest-chars "abcdefghijklmnopqrstuvwxyz"
+   :prefer-trigger-chars nil
+   :keymaps
+   (("q" "q" "ei")
+    ("w" "w" "ian")
+    ("e" "ch" "e")
+    ("r" "r" "iu" "er")
+    ("t" "t" "uang" "iang")
+    ("y" "y" "ing")
+    ("u" "u" "u")
+    ("i" "i" "i")
+    ("o" "o" "o" "uo")
+    ("p" "p" "uan" "van")
+    ("a" "zh" "a")
+    ("s" "s" "ong" "iong")
+    ("d" "d" "ua" "ia")
+    ("f" "f" "en")
+    ("g" "g" "eng")
+    ("h" "h" "ang")
+    ("j" "j" "an")
+    ("k" "k" "ao")
+    ("l" "l" "ai")
+    ("z" "z" "iao")
+    ("x" "x" "ie")
+    ("c" "c" "in" "uai")
+    ("v" "sh" "v")
+    ("b" "b" "ou")
+    ("n" "n" "un")
+    ("m" "m" "ue" "ui")
+    ("oa" "a")
+    ("oj" "an")
+    ("ol" "ai")
+    ("ok" "ao")
+    ("oh" "ang")
+    ("oe" "e")
+    ("oz" "ei")
+    ("of" "en")
+    ("or" "er")
+    ("og" "eng")
+    ("oo" "o")
+    ("ob" "ou"))))
+
+(pyim-scheme-add
+ '(xiaohe-shuangpin
+   :document "小鹤双拼输入法方案。"
+   :class shuangpin
+   :first-chars "abcdefghijklmnopqrstuvwxyz"
+   :rest-chars "abcdefghijklmnopqrstuvwxyz"
+   :prefer-trigger-chars nil
+   :keymaps
+   (("a" "a" "a")
+    ("b" "b" "in")
+    ("c" "c" "ao")
+    ("d" "d" "ai")
+    ("e" "e" "e")
+    ("f" "f" "en")
+    ("g" "g" "eng")
+    ("h" "h" "ang")
+    ("i" "ch" "i")
+    ("j" "j" "an")
+    ("k" "k" "ing" "uai")
+    ("l" "l" "iang" "uang")
+    ("m" "m" "ian")
+    ("n" "n" "iao")
+    ("o" "o" "uo" "o")
+    ("p" "p" "ie")
+    ("q" "q" "iu")
+    ("r" "r" "uan")
+    ("s" "s" "iong" "ong")
+    ("t" "t" "ue" "ve")
+    ("u" "sh" "u")
+    ("v" "zh" "v" "ui")
+    ("w" "w" "ei")
+    ("x" "x" "ia" "ua")
+    ("y" "y" "un")
+    ("z" "z" "ou")
+    ("aa" "a")
+    ("an" "an")
+    ("ai" "ai")
+    ("ao" "ao")
+    ("ah" "ang")
+    ("ee" "e")
+    ("ei" "ei")
+    ("en" "en")
+    ("er" "er")
+    ("eg" "eng")
+    ("og" "ng")
+    ("oo" "o")
+    ("ou" "ou"))))
+
+;; * Footer
+(provide 'pyim-scheme)
+
+;;; pyim-scheme.el ends here
diff --git a/pyim.el b/pyim.el
index 67af23f..92049e1 100644
--- a/pyim.el
+++ b/pyim.el
@@ -583,6 +583,7 @@
 (require 'pyim-pinyin)
 (require 'pyim-punctuation)
 (require 'pyim-dict)
+(require 'pyim-scheme)
 
 (defgroup pyim nil
   "Pyim is a Chinese input method support quanpin, shuangpin, wubi and 
cangjie."
@@ -780,9 +781,6 @@ Only useful when use posframe.")
 ;;;###autoload
 (defvar pyim-titles '("PYIM " "PYIM-EN " "PYIM-AU ") "Pyim 在 mode-line 
中显示的名称.")
 
-(defvar pyim-schemes nil
-  "Pyim 支持的所有拼音方案.")
-
 (defvar pyim-entered-buffer " *pyim-entered-buffer*"
   "一个 buffer,用来处理用户已经输入的字符串: entered。
 
@@ -1798,256 +1796,6 @@ Return the input string.
     (when (and class (functionp func))
       (funcall func))))
 
-(defun pyim-scheme-add (scheme)
-  "Add SCHEME to `pyim-schemes'"
-  (if (listp scheme)
-      (let ((scheme-name (car scheme)))
-        (when (symbolp scheme-name)
-          (setq pyim-schemes
-                (remove (assoc scheme-name pyim-schemes)
-                        pyim-schemes)))
-        (push scheme pyim-schemes))
-    (message "PYIM: Invalid pyim scheme config!")))
-
-(pyim-scheme-add
- '(quanpin
-   :document "全拼输入法方案(不可删除)。"
-   :class quanpin
-   :first-chars "abcdefghijklmnopqrstuwxyz"
-   :rest-chars "vmpfwckzyjqdltxuognbhsrei'-a"
-   :prefer-trigger-chars "v"))
-
-(pyim-scheme-add
- '(wubi
-   :document "五笔输入法。"
-   :class xingma
-   :first-chars "abcdefghijklmnopqrstuvwxyz"
-   :rest-chars "abcdefghijklmnopqrstuvwxyz'"
-   :code-prefix "." ;五笔词库中所有的 code 都以 "." 开头,防止和拼音词库冲突。
-   :code-split-length 4 ;默认将用户输入切成 4 个字符长的 code 列表(不计算 code-prefix)
-   :code-maximum-length 4 ;五笔词库中,code 的最大长度(不计算 code-prefix)
-   :prefer-trigger-chars nil))
-
-(pyim-scheme-add
- '(cangjie
-   :document "倉頡输入法。"
-   :class xingma
-   :first-chars "abcdefghijklmnopqrstuvwxyz"
-   :rest-chars "abcdefghijklmnopqrstuvwxyz"
-   :code-prefix "@" ;仓颉输入法词库中所有的 code 都以 "@" 开头,防止词库冲突。
-   :code-split-length 5 ;默认将用户输入切成 5 个字符长的 code 列表(不计算 code-prefix)
-   :code-maximum-length 5 ;仓颉词库中,code 的最大长度(不计算 code-prefix)
-   :prefer-trigger-chars nil))
-
-(pyim-scheme-add
- '(pyim-shuangpin
-   :document "与 pyim 配合良好的双拼输入法方案,源自小鹤双拼方案。"
-   :class shuangpin
-   :first-chars "abcdefghijklmnpqrstuvwxyz"
-   :rest-chars "abcdefghijklmnopqrstuvwxyz"
-   :prefer-trigger-chars "o"
-   :keymaps
-   (("a" "a" "a")
-    ("b" "b" "in")
-    ("c" "c" "ao")
-    ("d" "d" "ai")
-    ("e" "e" "e")
-    ("f" "f" "en")
-    ("g" "g" "eng")
-    ("h" "h" "ang")
-    ("i" "ch" "i")
-    ("j" "j" "an")
-    ("k" "k" "ing" "uai")
-    ("l" "l" "iang" "uang")
-    ("m" "m" "ian")
-    ("n" "n" "iao")
-    ("o" "o" "uo" "o")
-    ("p" "p" "ie")
-    ("q" "q" "iu")
-    ("r" "r" "uan")
-    ("s" "s" "iong" "ong")
-    ("t" "t" "ue" "ve")
-    ("u" "sh" "u")
-    ("v" "zh" "v" "ui")
-    ("w" "w" "ei")
-    ("x" "x" "ia" "ua")
-    ("y" "y" "un")
-    ("z" "z" "ou")
-    ("aa" "a")
-    ("aj" "an")
-    ("ad" "ai")
-    ("ac" "ao")
-    ("ah" "ang")
-    ("ee" "e")
-    ("ew" "ei")
-    ("ef" "en")
-    ("er" "er")
-    ("eg" "eng")
-    ("ag" "ng")
-    ("ao" "o")
-    ("au" "ou"))))
-
-(pyim-scheme-add
- '(microsoft-shuangpin
-   :document "微软双拼方案。"
-   :class shuangpin
-   :first-chars "abcdefghijklmnopqrstuvwxyz"
-   :rest-chars "abcdefghijklmnopqrstuvwxyz;"
-   :prefer-trigger-chars nil
-   :keymaps
-   (("a" "a" "a")
-    ("b" "b" "ou")
-    ("c" "c" "iao")
-    ("d" "d" "uang" "iang")
-    ("e" "e" "e")
-    ("f" "f" "en")
-    ("g" "g" "eng")
-    ("h" "h" "ang")
-    ("i" "ch" "i")
-    ("j" "j" "an")
-    ("k" "k" "ao")
-    ("l" "l" "ai")
-    ("m" "m" "ian")
-    ("n" "n" "in")
-    ("o" "o" "uo" "o")
-    ("p" "p" "un")
-    ("q" "q" "iu")
-    ("r" "r" "uan" "er")
-    ("s" "s" "iong" "ong")
-    ("t" "t" "ue")
-    ("u" "sh" "u")
-    ("v" "zh" "ve" "ui")
-    ("w" "w" "ia" "ua")
-    ("x" "x" "ie")
-    ("y" "y" "uai" "v")
-    ("z" "z" "ei")
-    (";" ";" "ing")
-    ("oa" "a")
-    ("oj" "an")
-    ("ol" "ai")
-    ("ok" "ao")
-    ("oh" "ang")
-    ("oe" "e")
-    ("oz" "ei")
-    ("of" "en")
-    ("or" "er")
-    ("og" "eng")
-    ("oo" "o")
-    ("ob" "ou"))))
-
-(pyim-scheme-add
- '(zhinengabc-shuangpin
-   :document "智能ABC双拼方案"
-   :class shuangpin
-   :first-chars "abcdefghjklmnopqrstvwxyz"
-   :rest-chars "abcdefghijklmnopqrstuvwxyz"
-   :prefer-trigger-chars nil
-   :keymaps
-   (("q" "q" "ei")
-    ("w" "w" "ian")
-    ("e" "ch" "e")
-    ("r" "r" "iu" "er")
-    ("t" "t" "uang" "iang")
-    ("y" "y" "ing")
-    ("u" "u" "u")
-    ("i" "i" "i")
-    ("o" "o" "o" "uo")
-    ("p" "p" "uan" "van")
-    ("a" "zh" "a")
-    ("s" "s" "ong" "iong")
-    ("d" "d" "ua" "ia")
-    ("f" "f" "en")
-    ("g" "g" "eng")
-    ("h" "h" "ang")
-    ("j" "j" "an")
-    ("k" "k" "ao")
-    ("l" "l" "ai")
-    ("z" "z" "iao")
-    ("x" "x" "ie")
-    ("c" "c" "in" "uai")
-    ("v" "sh" "v")
-    ("b" "b" "ou")
-    ("n" "n" "un")
-    ("m" "m" "ue" "ui")
-    ("oa" "a")
-    ("oj" "an")
-    ("ol" "ai")
-    ("ok" "ao")
-    ("oh" "ang")
-    ("oe" "e")
-    ("oz" "ei")
-    ("of" "en")
-    ("or" "er")
-    ("og" "eng")
-    ("oo" "o")
-    ("ob" "ou"))))
-
-(pyim-scheme-add
- '(xiaohe-shuangpin
-   :document "小鹤双拼输入法方案。"
-   :class shuangpin
-   :first-chars "abcdefghijklmnopqrstuvwxyz"
-   :rest-chars "abcdefghijklmnopqrstuvwxyz"
-   :prefer-trigger-chars nil
-   :keymaps
-   (("a" "a" "a")
-    ("b" "b" "in")
-    ("c" "c" "ao")
-    ("d" "d" "ai")
-    ("e" "e" "e")
-    ("f" "f" "en")
-    ("g" "g" "eng")
-    ("h" "h" "ang")
-    ("i" "ch" "i")
-    ("j" "j" "an")
-    ("k" "k" "ing" "uai")
-    ("l" "l" "iang" "uang")
-    ("m" "m" "ian")
-    ("n" "n" "iao")
-    ("o" "o" "uo" "o")
-    ("p" "p" "ie")
-    ("q" "q" "iu")
-    ("r" "r" "uan")
-    ("s" "s" "iong" "ong")
-    ("t" "t" "ue" "ve")
-    ("u" "sh" "u")
-    ("v" "zh" "v" "ui")
-    ("w" "w" "ei")
-    ("x" "x" "ia" "ua")
-    ("y" "y" "un")
-    ("z" "z" "ou")
-    ("aa" "a")
-    ("an" "an")
-    ("ai" "ai")
-    ("ao" "ao")
-    ("ah" "ang")
-    ("ee" "e")
-    ("ei" "ei")
-    ("en" "en")
-    ("er" "er")
-    ("eg" "eng")
-    ("og" "ng")
-    ("oo" "o")
-    ("ou" "ou"))))
-
-(defun pyim-scheme-get (scheme-name)
-  "获取名称为 SCHEME-NAME 的输入法方案。"
-  (when scheme-name
-    (assoc scheme-name pyim-schemes)))
-
-(defun pyim-scheme-name (&optional default)
-  "获取输入法 scheme"
-  (let (scheme-name)
-    (if (and pyim-assistant-scheme-enable
-             (not default))
-        (setq scheme-name
-              (or pyim-assistant-scheme
-                  pyim-default-scheme))
-      (setq scheme-name pyim-default-scheme))
-    (if (assq scheme-name pyim-schemes)
-        scheme-name
-      'quanpin)))
-
 (defun pyim-toggle-assistant-scheme ()
   "临时切换到辅助输入法.
 
@@ -2062,17 +1810,6 @@ Return the input string.
           (not pyim-assistant-scheme-enable))
     (pyim-entered-refresh)))
 
-(defun pyim-scheme-get-option (scheme-name option)
-  "获取名称为 SCHEME-NAME 的输入法方案,并提取其属性 OPTION 。"
-  (when scheme-name
-    (let* ((scheme (pyim-scheme-get scheme-name))
-           (scheme-inherit
-            (car (pyim-scheme-get
-                  (plist-get (cdr scheme) :inherit)))))
-      (if (member option (cdr scheme))
-          (plist-get (cdr scheme) option)
-        (pyim-scheme-get-option scheme-inherit option)))))
-
 (defun pyim-imobjs-create (entered &optional scheme-name)
   "按照 SCHEME-NAME 对应的输入法方案,从 ENTERED 字符串中创建一个
 或者多个 imobj 组成的列表,不同的输入法,imobj 的结构也是不一样的。"



reply via email to

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