[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)
- [elpa] externals/pyim updated (c982b3fc3f -> 506ed8e1cd), ELPA Syncer, 2022/05/28
- [elpa] externals/pyim 3f8761b752 4/8: Sort pyim.el, ELPA Syncer, 2022/05/28
- [elpa] externals/pyim adf7958538 6/8: Update Development.org, ELPA Syncer, 2022/05/28
- [elpa] externals/pyim e00b7d633a 3/8: Add pyim-process-code-criteria variable., ELPA Syncer, 2022/05/28
- [elpa] externals/pyim 12b3e98f1b 5/8: 降低 pyim.el 对 pyim-cstring-utils 和 pyim-cregexp-utils 的依赖。, ELPA Syncer, 2022/05/28
- [elpa] externals/pyim a36f2295cd 1/8: Add pyim-cregexp-utils.el, ELPA Syncer, 2022/05/28
- [elpa] externals/pyim 506ed8e1cd 8/8: Update README., ELPA Syncer, 2022/05/28
- [elpa] externals/pyim fa0d22689d 7/8: Add pyim-dict-manager.el,
ELPA Syncer <=
- [elpa] externals/pyim 4b1ba0e47e 2/8: Add pyim-cstring-utils.el, ELPA Syncer, 2022/05/28