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

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

[elpa] externals/pyim fa0d22689d 7/8: Add pyim-dict-manager.el


From: ELPA Syncer
Subject: [elpa] externals/pyim fa0d22689d 7/8: Add pyim-dict-manager.el
Date: Sat, 28 May 2022 18:57:48 -0400 (EDT)

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

    Add pyim-dict-manager.el
---
 Development.org                      |   7 +-
 README.org                           |  22 +++--
 pyim-dict.el => pyim-dict-manager.el |  64 +-------------
 pyim-dict.el                         | 165 +----------------------------------
 pyim.el                              |   1 -
 5 files changed, 25 insertions(+), 234 deletions(-)

diff --git a/Development.org b/Development.org
index 91fbcdee10..3648277c30 100644
--- a/Development.org
+++ b/Development.org
@@ -12,9 +12,8 @@
 |     | PYIM 用户命令层:                                                  PYIM 视图层: 
|     |
 |     | ----------------                                                  
------------  |     |
 |     | Pyim 输入法相关命令                                               Page        
  |     |
-|     | Cregexp-utils                                                     
Preview       |     |
-|     | Cstring-utils                                                     
Indicator     |     |
-|     | Pymap-utils                                                            
         |     |
+|     | Cregexp-Utils, Cstring-Utils                                      
Preview       |     |
+|     | Pymap-Utils, Dict-Manager                                         
Indicator     |     |
 |     |                                                                        
         |     |
 |     |                 +---------------------------------------------+        
         |     |
 |     | 自动上屏器:     | PYIM 用例层: Process                       |                 
|     |
@@ -26,7 +25,7 @@
 |     |                 |      | Candidates, Outcome,          |      |        
         |     |
 |     |                 |      | Punctuations, Pinyin,         |      |        
         |     |
 |     |                 |      | Cstring, Cregexp,             |      |        
         |     |
-|     |                 |      | Scheme, Assistant-scheme      |      |        
         |     |
+|     |                 |      | Scheme, Assistant-Scheme      |      |        
         |     |
 |     |                 |      +-------------------------------+      |        
         |     |
 |     |                 |      | Common, Dcache, Pymap         |      |        
         |     |
 |     |                 |      |                               |      |        
         |     |
diff --git a/README.org b/README.org
index 7a6ea128f3..541382a785 100644
--- a/README.org
+++ b/README.org
@@ -9,14 +9,20 @@
 
 * 不兼容更新
 
-** <2022-05-29 Sun> Cregexp 和 Cstring 部分命令需要用户自己 require.
+** <2022-05-29 Sun> Cregexp, Cstring 和 Dict-Manager 一些功能需要用户手工 require.
 
-Pyim 将部分与输入法功能关联不大的 cregexp 和 cstring 命令独立出来了,默认不会加
-载,需要用户手动加载,这样可以减少 pyim 的依赖数量,降低 pyim 的代码复杂度。
+Pyim 将部分与输入法功能正常运行关联不大的 cregexp 和 cstring 命令独立出来了,默
+认不会加载,需要用户手动加载,这样可以减少 pyim 的依赖数量,降低 pyim 的代码复杂
+度。
+
+由于许多用户不使用 pyim-dict-manager, 所以默认也不 require 这个包。
 
 #+begin_src emacs-lisp
 (require 'pyim-cstring-utils)
 (require 'pyim-cregexp-utils)
+;; 如果用户是通过 elpa 来安装词库,或者直接手工管理 pyim-dicts 变量,就不需要
+;; 加载 pyim-dict-manager 这个包。
+(require 'pyim-dict-manager)
 #+end_src
 
 ** <2021-04-28 Wed> 五笔输入法和仓颉输入法的不兼容更新
@@ -450,8 +456,14 @@ pyim 默认没有携带任何拼音词库,用户可以使用下面几种方式
 
 [[file:snapshots/imewlconverter-wordfreq.gif]]
 
-生成词库后,运行 `pyim-dicts-manager' ,按照命令提示,将转换得到的词库文件的信息
-添加到 `pyim-dicts' 中,完成后运行命令 `pyim-restart' 或者重启emacs。
+生成词库后,
+
+#+begin_src emacs-lisp
+(require 'pyim-dict-manager)
+#+end_src
+
+然后运行 `pyim-dicts-manager' ,按照命令提示,将转换得到的词库文件的信息添加到
+`pyim-dicts' 中,完成后运行命令 `pyim-restart' 或者重启emacs。
 
 *** 第二种方式 (Linux & Unix 用户推荐使用)
 E-Neo 同学编写了一个词库转换工具: [[https://github.com/E-Neo/scel2pyim][scel2pyim]] , 
可以将一个搜狗词库转换为 pyim 词库。
diff --git a/pyim-dict.el b/pyim-dict-manager.el
similarity index 77%
copy from pyim-dict.el
copy to pyim-dict-manager.el
index ca8cd8146c..b0c5f66ecf 100644
--- a/pyim-dict.el
+++ b/pyim-dict-manager.el
@@ -1,4 +1,4 @@
-;;; pyim-dict.el --- dict tools for pyim.        -*- lexical-binding: t; -*-
+;;; pyim-dict-manager.el --- Dict manager for pyim.        -*- 
lexical-binding: t; -*-
 
 ;; * Header
 ;; Copyright (C) 2021 Free Software Foundation, Inc.
@@ -27,30 +27,12 @@
 
 ;;; Code:
 ;; * 代码                                                           :code:
+(require 'pyim-dict)
 
 (defgroup pyim-dict nil
   "Dict tools for pyim."
   :group 'pyim)
 
-(defcustom pyim-dicts nil
-  "一个列表,用于保存 `pyim' 的词库信息.
-每一个 element 都代表一条词库的信息, 用户可以使用词库管理命令
-`pyim-dicts-manager' 来添加词库信息,每一条词库信息都使用一个
-plist 来表示,比如:
-
-    (:name \"100万大词库\" :file \"/path/to/pinyin-bigdict.pyim\")
-
-其中:
-1. `:name'      代表词库名称,用户可以按照喜好来确定(可选项)。
-2. `:file'      表示词库文件,
-
-另外一个与这个变量功能类似的变量是: `pyim-extra-dicts', 专门
-用于和 elpa 格式的词库包集成。"
-  :type 'list)
-
-(defvar pyim-extra-dicts nil "与 `pyim-dicts' 类似, 用于和 elpa 格式的词库包集成。.")
-
-;; ** pyim 词库管理工具
 (defvar pyim-dict-manager-buffer "*pyim-dict-manager*")
 
 (defun pyim-dict-manager-refresh ()
@@ -213,45 +195,7 @@ plist 来表示,比如:
     (pyim-dict-manager-mode)
     (setq truncate-lines t)))
 
-(defun pyim-extra-dicts-add-dict (new-dict)
-  "添加 `new-dict' 到 `pyim-extra-dicts'.
-
-其中 NEW-DICT 的格式为:
-
-   (:name \"XXX\" :file \"/path/to/XXX.pyim\")
-
-这个函数用于制作 elpa 格式的词库 ,不建议普通用户使用。"
-  (let (replace result)
-    (dolist (dict pyim-extra-dicts)
-      (if (equal (plist-get dict :name)
-                 (plist-get new-dict :name))
-          (progn (push new-dict result)
-                 (setq replace t))
-        (push dict result)))
-    (setq result (reverse result))
-    (setq pyim-extra-dicts
-          (if replace result `(,@result ,new-dict)))
-    (message "Add pyim dict %S to `pyim-extra-dicts'." (plist-get new-dict 
:name))
-    t))
-
-(defun pyim-dict-name-available-p (dict-name)
-  "查询 `pyim-dicts' 中 `:name' 为 DICT-NAME 的词库信息是否存在。
-这个函数主要用于词库 package。"
-  (cl-some (lambda (x)
-             (let ((name (plist-get x :name)))
-               (equal name dict-name)))
-           pyim-dicts))
-
-(defun pyim-dict-file-available-p (dict-file)
-  "查询 `pyim-dicts' 中 `:file' 为 DICT-FILE 的词库信息是否存在。
-这个函数主要用于词库 package。"
-  (cl-some (lambda (x)
-             (let ((file (plist-get x :file)))
-               (equal (expand-file-name file)
-                      (expand-file-name dict-file))))
-           pyim-dicts))
-
 ;; * Footer
-(provide 'pyim-dict)
+(provide 'pyim-dict-manager)
 
-;;; pyim-dict.el ends here
+;;; pyim-dict-manager.el ends here
diff --git a/pyim-dict.el b/pyim-dict.el
index ca8cd8146c..be61dee7ca 100644
--- a/pyim-dict.el
+++ b/pyim-dict.el
@@ -1,4 +1,4 @@
-;;; pyim-dict.el --- dict tools for pyim.        -*- lexical-binding: t; -*-
+;;; pyim-dict.el --- Dict core tools for pyim.        -*- lexical-binding: t; 
-*-
 
 ;; * Header
 ;; Copyright (C) 2021 Free Software Foundation, Inc.
@@ -50,169 +50,6 @@ plist 来表示,比如:
 
 (defvar pyim-extra-dicts nil "与 `pyim-dicts' 类似, 用于和 elpa 格式的词库包集成。.")
 
-;; ** pyim 词库管理工具
-(defvar pyim-dict-manager-buffer "*pyim-dict-manager*")
-
-(defun pyim-dict-manager-refresh ()
-  "Refresh the contents of the *pyim-dict-manager* buffer."
-  (interactive)
-  (with-current-buffer pyim-dict-manager-buffer
-    (let ((inhibit-read-only t)
-          (dicts-list pyim-dicts)
-          (format-string "%-4s %-4s %-60s\n")
-          (face-attr '((foreground-color . "DarkOrange2")
-                       (bold . t)))
-          (i 1))
-      (erase-buffer)
-      (insert (propertize (format format-string "序号" "启用" "词库文件")
-                          'face face-attr))
-      (insert (propertize (format format-string
-                                  "----" "----"
-                                  
"----------------------------------------------------------------------\n")
-                          'face face-attr))
-      (if (not pyim-dicts)
-          (insert "拼音词库是 pyim 使用顺手与否的关键。根据经验估计:
-
-1. 当词库词条超过100万时 (词库文件>20M),pyim 选词频率大大降低。
-2. 当词库词条超过100万时,pyim 中文输入体验可以达到搜狗输入法的 80%。
-
-想快速体验 pyim 输入法的用户, 可以使用 pyim-basedict:
-
-     (require 'pyim-basedict)
-     (pyim-basedict-enable)
-
-喜欢折腾的用户可以从下面几个途径获得 pyim 更详细的信息。
-1. 使用 `C-h v pyim-dicts' 了解 pyim 词库文件格式。
-2. 了解如何导入其它输入法的词库。
-   1. 使用 package 管理器查看 pyim 包的简介
-   2. 阅读 pyim.el 文件 Commentary
-   3. 查看 pyim 在线 README:https://github.com/tumashu/pyim\n";)
-        (dolist (dict dicts-list)
-          (let ((disable (plist-get dict :disable))
-                (file (plist-get dict :file)))
-            (insert (propertize (format format-string
-                                        i (if disable "NO" "YES") file)
-                                'id i 'disable disable 'file file)))
-          (setq i (1+ i))))
-      (insert (propertize "
-操作命令:[A] 添加词库  [D] 删除词库   [P] 向上移动   [N] 向下移动  [g] 刷新页面
-          [s] 保存配置  [R] 重启输入法 [C-c C-c] 禁用/启用当前词库"
-                          'face face-attr)))))
-
-(defun pyim-dict-manager-toggle-dict (&optional _enable)
-  "启用当前行对应的词库。"
-  (interactive)
-  (when (equal (buffer-name) pyim-dict-manager-buffer)
-    (let* ((id (get-text-property (point) 'id))
-           (dict (cl-copy-list (nth (1- id) pyim-dicts)))
-           (disable (plist-get dict :disable))
-           (line (line-number-at-pos)))
-      (setf (nth (1- id) pyim-dicts) (plist-put dict :disable (not disable)))
-      (if (not disable)
-          (message "禁用当前词库")
-        (message "启用当前词库"))
-      (pyim-dict-manager-refresh)
-      (goto-char (point-min))
-      (forward-line (- line 1)))))
-
-(defun pyim-dict-manager-delete-dict ()
-  "从 `pyim-dicts' 中删除当前行对应的词库信息。"
-  (interactive)
-  (when (equal (buffer-name) pyim-dict-manager-buffer)
-    (let ((id (get-text-property (point) 'id))
-          (line (line-number-at-pos)))
-      (when (yes-or-no-p "确定要删除这条词库信息吗? ")
-        (setq pyim-dicts (delq (nth (1- id) pyim-dicts) pyim-dicts))
-        (pyim-dict-manager-refresh)
-        (goto-char (point-min))
-        (forward-line (- line 1))))))
-
-(defun pyim-dict-manager-dict-position-up ()
-  "向上移动词库。"
-  (interactive)
-  (when (equal (buffer-name) pyim-dict-manager-buffer)
-    (let* ((id (get-text-property (point) 'id))
-           (dict1 (nth (- id 1) pyim-dicts))
-           (dict2 (nth (- id 2) pyim-dicts))
-           (line (line-number-at-pos)))
-      (when (> id 1)
-        (setf (nth (- id 1) pyim-dicts) dict2)
-        (setf (nth (- id 2) pyim-dicts) dict1)
-        (pyim-dict-manager-refresh)
-        (goto-char (point-min))
-        (forward-line (- line 2))))))
-
-(defun pyim-dict-manager-dict-position-down ()
-  "向下移动词库。"
-  (interactive)
-  (when (equal (buffer-name) pyim-dict-manager-buffer)
-    (let* ((id (get-text-property (point) 'id))
-           (dict1 (nth (- id 1) pyim-dicts))
-           (dict2 (nth id pyim-dicts))
-           (length (length pyim-dicts))
-           (line (line-number-at-pos)))
-      (when (< id length)
-        (setf (nth (1- id) pyim-dicts) dict2)
-        (setf (nth id pyim-dicts) dict1)
-        (pyim-dict-manager-refresh)
-        (goto-char (point-min))
-        (forward-line line)))))
-
-(defun pyim-dict-manager-save-dict-info ()
-  "使用 `customize-save-variable' 函数将 `pyim-dicts' 保存到 '~/.emacs' 文件中。"
-  (interactive)
-  ;; 将`pyim-dict'的设置保存到emacs配置文件中。
-  (customize-save-variable 'pyim-dicts pyim-dicts)
-  (message "将 pyim 词库配置信息保存到 ~/.emacs 文件。"))
-
-(defun pyim-dict-manager-add-dict ()
-  "为 `pyim-dicts' 添加词库信息。"
-  (interactive)
-  (when (equal (buffer-name) pyim-dict-manager-buffer)
-    (let ((line (line-number-at-pos))
-          dict name file first-used)
-      (setq name (read-from-minibuffer "请输入词库名称: "))
-      (setq file (read-file-name "请选择词库文件: " "~/"))
-      (setq first-used  (yes-or-no-p "是否让 pyim 优先使用词库? "))
-      (setq dict `(:name ,name :file ,file))
-      (if first-used
-          (add-to-list 'pyim-dicts dict)
-        (add-to-list 'pyim-dicts dict t))
-      (pyim-dict-manager-refresh)
-      (goto-char (point-min))
-      (forward-line (- line 1)))))
-
-(declare-function pyim-restart "pyim")
-
-(define-derived-mode pyim-dict-manager-mode special-mode "pyim-dicts-manager"
-  "Major mode for managing pyim dicts"
-  (read-only-mode)
-  (define-key pyim-dict-manager-mode-map (kbd "D") 
#'pyim-dict-manager-delete-dict)
-  (define-key pyim-dict-manager-mode-map (kbd "g") #'pyim-dict-manager-refresh)
-  (define-key pyim-dict-manager-mode-map (kbd "A") 
#'pyim-dict-manager-add-dict)
-  (define-key pyim-dict-manager-mode-map (kbd "N") 
#'pyim-dict-manager-dict-position-down)
-  (define-key pyim-dict-manager-mode-map (kbd "P") 
#'pyim-dict-manager-dict-position-up)
-  (define-key pyim-dict-manager-mode-map (kbd "s") 
#'pyim-dict-manager-save-dict-info)
-  (define-key pyim-dict-manager-mode-map (kbd "C-c C-c") 
#'pyim-dict-manager-toggle-dict)
-  (define-key pyim-dict-manager-mode-map (kbd "R") #'pyim-restart))
-
-;;;###autoload
-(defun pyim-dicts-manager ()
-  "pyim 词库管理器。
-
-使用这个词库管理器可以方便的执行下列命令:
-1. 添加词库。
-2. 删除词库。
-3. 向上和向下移动词库。
-4. 保存词库设置。
-5. 重启输入法。"
-  (interactive)
-  (let ((buffer (get-buffer-create pyim-dict-manager-buffer)))
-    (pyim-dict-manager-refresh)
-    (switch-to-buffer buffer)
-    (pyim-dict-manager-mode)
-    (setq truncate-lines t)))
-
 (defun pyim-extra-dicts-add-dict (new-dict)
   "添加 `new-dict' 到 `pyim-extra-dicts'.
 
diff --git a/pyim.el b/pyim.el
index 8a983b6f7c..14b5a5696b 100644
--- a/pyim.el
+++ b/pyim.el
@@ -37,7 +37,6 @@
 (require 'pyim-autoselector)
 (require 'pyim-common)
 (require 'pyim-cstring)
-(require 'pyim-dict)
 (require 'pyim-indicator)
 (require 'pyim-page)
 (require 'pyim-preview)



reply via email to

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