[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/pyim 8b4692a 3/6: Sort pyim.el
From: |
ELPA Syncer |
Subject: |
[elpa] externals/pyim 8b4692a 3/6: Sort pyim.el |
Date: |
Sun, 25 Apr 2021 00:57:11 -0400 (EDT) |
branch: externals/pyim
commit 8b4692aa456cafdf2d0b5338010067bb5399dd52
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>
Sort pyim.el
---
pyim.el | 521 +++++++++++++++++++++++++++++++++-------------------------------
1 file changed, 267 insertions(+), 254 deletions(-)
diff --git a/pyim.el b/pyim.el
index 23e6e38..82ac438 100644
--- a/pyim.el
+++ b/pyim.el
@@ -168,10 +168,149 @@
;;pyim-english-input-switch-functions
describe-current-input-method-function))
-;; ** 注册 Pyim 输入法
+;; ** pyim 输入法定义
+(defun pyim-input-method (key)
+ "得到需要插入到 buffer 的字符串, 并将其插入到待输入 buffer.
+
+这个函数会处理用户输入的字符,并最终的得到需要插入 buffer 的字符
+串。这个字符串会被分解为 event list, 通过 emacs 低层函数
+`read-event' 来将这些 list 插入到 *待输入buffer*。"
+ (if (or buffer-read-only
+ overriding-terminal-local-map
+ overriding-local-map)
+ (list key)
+ ;; (message "call with key: %S" key-or-string)
+ (pyim-preview-setup-overlay)
+ (with-silent-modifications
+ (unwind-protect
+ (let ((input-string (pyim-start-translation key)))
+ ;; (message "input-string: %s" input-string)
+ (when (and (stringp input-string)
+ (> (length input-string) 0))
+ (if input-method-exit-on-first-char
+ (list (aref input-string 0))
+ (mapcar #'identity input-string))))
+ (pyim-preview-delete-overlay)
+ (pyim-entered-erase-buffer)))))
+
+(defun pyim-start-translation (key)
+ "Start translation of the typed character KEY-OR-STRING by pyim.
+Return the input string.
+
+`pyim-start-translation' 这个函数较复杂,作许多低层工作,但它的一
+个重要流程是:
+
+1. 使用函数 `read-key-sequence' 得到 key-sequence
+2. 使用函数 `lookup-key' 查询 `pyim-mode-map' 中,与上述 key-sequence 对应
+ 的命令。
+3. 如果查询得到的命令是 `pyim-self-insert-command' 时,
+ `pyim-start-translation' 会调用这个函数。
+4. 这个函数最终会返回需要插入到 buffer 的字符串。
+
+这个部份的代码涉及许多 emacs 低层函数,相对复杂,不容易理解,有兴
+趣的朋友可以参考:
+1. `quail-input-method' 相关函数。
+2. elisp 手册相关章节:
+ 1. Invoking the Input Method
+ 2. Input Methods
+ 3. Miscellaneous Event Input Features
+ 4. Reading One Event"
+ ;; Check the possibility of translating KEY.
+ ;; If KEY is nil, we can anyway start translation.
+ (if (or (integerp key) (null key))
+ ;; OK, we can start translation.
+ (let* ((echo-keystrokes 0)
+ (help-char nil)
+ (overriding-terminal-local-map pyim-mode-map)
+ ;; (generated-events nil)
+ (input-method-function nil)
+ ;; Quail package 用这个变量来控制是否在 buffer 中
+ ;; 插入 preview string, pyim *强制* 将其设置为 nil
+ (input-method-use-echo-area nil)
+ (modified-p (buffer-modified-p))
+ last-command-event last-command this-command)
+
+ (setq pyim-translating t)
+ (pyim-entered-erase-buffer)
+ (pyim-outcome-handle "")
+
+ (when key
+ (setq unread-command-events
+ (cons key unread-command-events)))
+
+ (while pyim-translating
+ (set-buffer-modified-p modified-p)
+ (let* ((keyseq (read-key-sequence nil nil nil t))
+ (cmd (lookup-key pyim-mode-map keyseq)))
+ ;; (message "key: %s, cmd:%s\nlcmd: %s, lcmdv: %s, tcmd: %s"
+ ;; key cmd last-command last-command-event this-command)
+ (if (if key
+ (commandp cmd)
+ (eq cmd 'pyim-self-insert-command))
+ (progn
+ ;; (message "keyseq: %s" keyseq)
+ (setq last-command-event (aref keyseq (1- (length keyseq)))
+ last-command this-command
+ this-command cmd)
+ (setq key t)
+ (condition-case-unless-debug err
+ (call-interactively cmd)
+ (error (message "pyim 出现错误: %S , 开启 debug-on-error
后可以了解详细情况。" err)
+ (beep))))
+ ;; KEYSEQ is not defined in the translation keymap.
+ ;; Let's return the event(s) to the caller.
+ (setq unread-command-events
+ (string-to-list (this-single-command-raw-keys)))
+ ;; (message "unread-command-events: %s" unread-command-events)
+ (pyim-terminate-translation))))
+ ;; (message "return: %s" (pyim-outcome-get))
+ (pyim-magic-convert (pyim-outcome-get)))
+ ;; Since KEY doesn't start any translation, just return it.
+ ;; But translate KEY if necessary.
+ (char-to-string key)))
+
+(defun pyim-magic-convert (str)
+ "用于处理 `pyim-magic-convert' 的函数。"
+ (if (functionp pyim-magic-converter)
+ (or (cdr (assoc str pyim-magic-convert-cache))
+ (let ((result (funcall pyim-magic-converter str)))
+ (setq pyim-magic-convert-cache
+ `((,str . ,result)))
+ result))
+ str))
+
+(defun pyim-wash-current-line-function ()
+ "清理当前行的内容,比如:删除不必要的空格,等。"
+ (interactive)
+ (let* ((begin (line-beginning-position))
+ (end (point))
+ (string (buffer-substring-no-properties begin end))
+ new-string)
+ (when (> (length string) 0)
+ (delete-region begin end)
+ (setq new-string
+ (with-temp-buffer
+ (insert string)
+ (goto-char (point-min))
+ (while (re-search-forward "\\([,。;?!;、)】]\\)
+\\([[:ascii:]]\\)" nil t)
+ (replace-match (concat (match-string 1) (match-string 2)) nil
t))
+ (goto-char (point-min))
+ (while (re-search-forward "\\([[:ascii:]]\\) +\\([(【]\\)" nil t)
+ (replace-match (concat (match-string 1) (match-string 2)) nil
t))
+ (goto-char (point-min))
+ (while (re-search-forward "\\([[:ascii:]]\\) +\\(\\cc\\)" nil t)
+ (replace-match (concat (match-string 1) " " (match-string 2))
nil t))
+ (goto-char (point-min))
+ (while (re-search-forward "\\(\\cc\\) +\\([[:ascii:]]\\)" nil t)
+ (replace-match (concat (match-string 1) " " (match-string 2))
nil t))
+ (buffer-string)))
+ (insert new-string))))
+
+;; ** Pyim 输入法注册
;;;###autoload
(register-input-method "pyim" "euc-cn" 'pyim-start (nth 0 pyim-titles))
+;; ** PYim 输入法启动功能
;;;###autoload
(defun pyim-start (_name &optional _active-func restart save-personal-dcache
_refresh-common-dcache)
"pyim 启动函数.
@@ -228,6 +367,7 @@ pyim 使用函数 `pyim-start' 启动输入法的时候,会将变量
(when (<= (minibuffer-depth) 1)
(remove-hook 'minibuffer-exit-hook 'pyim-exit-from-minibuffer)))
+;; ** pyim 重启功能
(defun pyim-restart ()
"重启 pyim,不建议用于编程环境.
@@ -246,6 +386,74 @@ pyim 使用函数 `pyim-start' 启动输入法的时候,会将变量
REFRESH-COMMON-DCACHE 已经废弃,不要再使用了。"
(pyim-start "pyim" nil t save-personal-dcache))
+;; ** 键盘输入处理功能
+(defun pyim-self-insert-command ()
+ "Pyim 版本的 self-insert-command."
+ (interactive "*")
+ (setq pyim-candidates-last pyim-candidates)
+ (cond
+ ((pyim-input-chinese-p)
+ (pyim-with-entered-buffer
+ ;; 一定要注意,point 可能不在 point-min, 或者 point-max. 因为用
+ ;; 户可能通过命令移动了 entered 中的 point。
+ (insert (char-to-string last-command-event)))
+ (pyim-entered-refresh))
+ (pyim-candidates
+ (pyim-outcome-handle 'candidate-and-last-char)
+ (pyim-terminate-translation))
+ (t
+ (pyim-outcome-handle 'last-char)
+ (pyim-terminate-translation))))
+
+(defun pyim-auto-switch-english-input-p ()
+ "判断是否 *根据环境自动切换* 为英文输入模式,这个函数处理变量:
+`pyim-english-input-switch-functions'"
+ (let* ((func-or-list pyim-english-input-switch-functions))
+ (and (cl-some (lambda (x)
+ (if (functionp x)
+ (funcall x)
+ nil))
+ (cond ((functionp func-or-list) (list func-or-list))
+ ((listp func-or-list) func-or-list)
+ (t nil)))
+ (setq current-input-method-title
+ (if pyim-input-ascii
+ (nth 1 pyim-titles)
+ (nth 2 pyim-titles))))))
+
+(defun pyim-input-chinese-p ()
+ "确定 pyim 是否需要启动中文输入模式."
+ (let* ((scheme-name (pyim-scheme-name))
+ (first-chars (pyim-scheme-get-option scheme-name :first-chars))
+ (rest-chars (pyim-scheme-get-option scheme-name :rest-chars)))
+ (and (or pyim-force-input-chinese
+ (and (not pyim-input-ascii)
+ (not (pyim-auto-switch-english-input-p))))
+ (if (not (string< "" (pyim-entered-get 'point-before)))
+ (member last-command-event
+ (mapcar #'identity first-chars))
+ (member last-command-event
+ (mapcar #'identity rest-chars)))
+ (setq current-input-method-title (nth 0 pyim-titles)))))
+
+;; ** 键盘输入停止功能
+(defun pyim-terminate-translation ()
+ "Terminate the translation of the current key."
+ (setq pyim-translating nil)
+ (pyim-preview-delete-string)
+ (setq pyim-candidates nil)
+ (setq pyim-candidates-last nil)
+ (setq pyim-assistant-scheme-enable nil)
+ (setq pyim-force-input-chinese nil)
+ (pyim-page-hide)
+ (pyim-entered-erase-buffer)
+ (pyim-entered-refresh-timer-reset)
+ (let* ((class (pyim-scheme-get-option (pyim-scheme-name) :class))
+ (func (intern (format "pyim-terminate-translation:%S" class))))
+ (when (and class (functionp func))
+ (funcall func))))
+
+;; ** 加词功能
(defun pyim-create-word (word &optional prepend wordcount-handler)
(pyim-create-pyim-word word prepend wordcount-handler))
@@ -311,7 +519,6 @@ BUG:拼音无法有效地处理多音字。"
(interactive)
(pyim-create-word-at-point 4))
-;; ** 删词功能
(defun pyim-create-word-from-selection ()
"Add the selected text as a Chinese word into the personal dictionary."
(interactive)
@@ -324,19 +531,7 @@ BUG:拼音无法有效地处理多音字。"
(pyim-create-word string)
(message "将词条: %S 插入 personal file。" string))))))
-(defun pyim-search-word-code ()
- "选择词条,然后反查它的 code. 这个功能对五笔用户有用。"
- (interactive)
- (when (region-active-p)
- (let* ((string (buffer-substring-no-properties (region-beginning)
(region-end)))
- code)
- (if (not (string-match-p "^\\cc+\\'" string))
- (error "不是纯中文字符串")
- (setq code (pyim-dcache-search-word-code string))
- (if code
- (message "%S -> %S " string code)
- (message "没有找到 %S 对应的编码。" string))))))
-
+;; ** 删词功能
(defun pyim-delete-words-in-file (file)
"从个人词库缓存中批量删除 FILE 文件中列出的词条.
@@ -387,223 +582,7 @@ FILE 的格式与 `pyim-dcache-export' 生成的文件格式相同,
(message "将词条: %S 从 personal 缓冲中删除。" string)))
(message "请首先高亮选择需要删除的词条。")))
-;; ** 处理用户输入字符的相关函数
-(defun pyim-input-method (key)
- "得到需要插入到 buffer 的字符串, 并将其插入到待输入 buffer.
-
-这个函数会处理用户输入的字符,并最终的得到需要插入 buffer 的字符
-串。这个字符串会被分解为 event list, 通过 emacs 低层函数
-`read-event' 来将这些 list 插入到 *待输入buffer*。"
- (if (or buffer-read-only
- overriding-terminal-local-map
- overriding-local-map)
- (list key)
- ;; (message "call with key: %S" key-or-string)
- (pyim-preview-setup-overlay)
- (with-silent-modifications
- (unwind-protect
- (let ((input-string (pyim-start-translation key)))
- ;; (message "input-string: %s" input-string)
- (when (and (stringp input-string)
- (> (length input-string) 0))
- (if input-method-exit-on-first-char
- (list (aref input-string 0))
- (mapcar #'identity input-string))))
- (pyim-preview-delete-overlay)
- (pyim-entered-erase-buffer)))))
-
-(defun pyim-magic-convert (str)
- "用于处理 `pyim-magic-convert' 的函数。"
- (if (functionp pyim-magic-converter)
- (or (cdr (assoc str pyim-magic-convert-cache))
- (let ((result (funcall pyim-magic-converter str)))
- (setq pyim-magic-convert-cache
- `((,str . ,result)))
- result))
- str))
-
-(defun pyim-wash-current-line-function ()
- "清理当前行的内容,比如:删除不必要的空格,等。"
- (interactive)
- (let* ((begin (line-beginning-position))
- (end (point))
- (string (buffer-substring-no-properties begin end))
- new-string)
- (when (> (length string) 0)
- (delete-region begin end)
- (setq new-string
- (with-temp-buffer
- (insert string)
- (goto-char (point-min))
- (while (re-search-forward "\\([,。;?!;、)】]\\)
+\\([[:ascii:]]\\)" nil t)
- (replace-match (concat (match-string 1) (match-string 2)) nil
t))
- (goto-char (point-min))
- (while (re-search-forward "\\([[:ascii:]]\\) +\\([(【]\\)" nil t)
- (replace-match (concat (match-string 1) (match-string 2)) nil
t))
- (goto-char (point-min))
- (while (re-search-forward "\\([[:ascii:]]\\) +\\(\\cc\\)" nil t)
- (replace-match (concat (match-string 1) " " (match-string 2))
nil t))
- (goto-char (point-min))
- (while (re-search-forward "\\(\\cc\\) +\\([[:ascii:]]\\)" nil t)
- (replace-match (concat (match-string 1) " " (match-string 2))
nil t))
- (buffer-string)))
- (insert new-string))))
-
-(defun pyim-start-translation (key)
- "Start translation of the typed character KEY-OR-STRING by pyim.
-Return the input string.
-
-`pyim-start-translation' 这个函数较复杂,作许多低层工作,但它的一
-个重要流程是:
-
-1. 使用函数 `read-key-sequence' 得到 key-sequence
-2. 使用函数 `lookup-key' 查询 `pyim-mode-map' 中,与上述 key-sequence 对应
- 的命令。
-3. 如果查询得到的命令是 `pyim-self-insert-command' 时,
- `pyim-start-translation' 会调用这个函数。
-4. 这个函数最终会返回需要插入到 buffer 的字符串。
-
-这个部份的代码涉及许多 emacs 低层函数,相对复杂,不容易理解,有兴
-趣的朋友可以参考:
-1. `quail-input-method' 相关函数。
-2. elisp 手册相关章节:
- 1. Invoking the Input Method
- 2. Input Methods
- 3. Miscellaneous Event Input Features
- 4. Reading One Event"
- ;; Check the possibility of translating KEY.
- ;; If KEY is nil, we can anyway start translation.
- (if (or (integerp key) (null key))
- ;; OK, we can start translation.
- (let* ((echo-keystrokes 0)
- (help-char nil)
- (overriding-terminal-local-map pyim-mode-map)
- ;; (generated-events nil)
- (input-method-function nil)
- ;; Quail package 用这个变量来控制是否在 buffer 中
- ;; 插入 preview string, pyim *强制* 将其设置为 nil
- (input-method-use-echo-area nil)
- (modified-p (buffer-modified-p))
- last-command-event last-command this-command)
-
- (setq pyim-translating t)
- (pyim-entered-erase-buffer)
- (pyim-outcome-handle "")
-
- (when key
- (setq unread-command-events
- (cons key unread-command-events)))
-
- (while pyim-translating
- (set-buffer-modified-p modified-p)
- (let* ((keyseq (read-key-sequence nil nil nil t))
- (cmd (lookup-key pyim-mode-map keyseq)))
- ;; (message "key: %s, cmd:%s\nlcmd: %s, lcmdv: %s, tcmd: %s"
- ;; key cmd last-command last-command-event this-command)
- (if (if key
- (commandp cmd)
- (eq cmd 'pyim-self-insert-command))
- (progn
- ;; (message "keyseq: %s" keyseq)
- (setq last-command-event (aref keyseq (1- (length keyseq)))
- last-command this-command
- this-command cmd)
- (setq key t)
- (condition-case-unless-debug err
- (call-interactively cmd)
- (error (message "pyim 出现错误: %S , 开启 debug-on-error
后可以了解详细情况。" err)
- (beep))))
- ;; KEYSEQ is not defined in the translation keymap.
- ;; Let's return the event(s) to the caller.
- (setq unread-command-events
- (string-to-list (this-single-command-raw-keys)))
- ;; (message "unread-command-events: %s" unread-command-events)
- (pyim-terminate-translation))))
- ;; (message "return: %s" (pyim-outcome-get))
- (pyim-magic-convert (pyim-outcome-get)))
- ;; Since KEY doesn't start any translation, just return it.
- ;; But translate KEY if necessary.
- (char-to-string key)))
-
-(defun pyim-auto-switch-english-input-p ()
- "判断是否 *根据环境自动切换* 为英文输入模式,这个函数处理变量:
-`pyim-english-input-switch-functions'"
- (let* ((func-or-list pyim-english-input-switch-functions))
- (and (cl-some (lambda (x)
- (if (functionp x)
- (funcall x)
- nil))
- (cond ((functionp func-or-list) (list func-or-list))
- ((listp func-or-list) func-or-list)
- (t nil)))
- (setq current-input-method-title
- (if pyim-input-ascii
- (nth 1 pyim-titles)
- (nth 2 pyim-titles))))))
-
-(defun pyim-input-chinese-p ()
- "确定 pyim 是否需要启动中文输入模式."
- (let* ((scheme-name (pyim-scheme-name))
- (first-chars (pyim-scheme-get-option scheme-name :first-chars))
- (rest-chars (pyim-scheme-get-option scheme-name :rest-chars)))
- (and (or pyim-force-input-chinese
- (and (not pyim-input-ascii)
- (not (pyim-auto-switch-english-input-p))))
- (if (not (string< "" (pyim-entered-get 'point-before)))
- (member last-command-event
- (mapcar #'identity first-chars))
- (member last-command-event
- (mapcar #'identity rest-chars)))
- (setq current-input-method-title (nth 0 pyim-titles)))))
-
-(defun pyim-self-insert-command ()
- "Pyim 版本的 self-insert-command."
- (interactive "*")
- (setq pyim-candidates-last pyim-candidates)
- (cond
- ((pyim-input-chinese-p)
- (pyim-with-entered-buffer
- ;; 一定要注意,point 可能不在 point-min, 或者 point-max. 因为用
- ;; 户可能通过命令移动了 entered 中的 point。
- (insert (char-to-string last-command-event)))
- (pyim-entered-refresh))
- (pyim-candidates
- (pyim-outcome-handle 'candidate-and-last-char)
- (pyim-terminate-translation))
- (t
- (pyim-outcome-handle 'last-char)
- (pyim-terminate-translation))))
-
-(defun pyim-terminate-translation ()
- "Terminate the translation of the current key."
- (setq pyim-translating nil)
- (pyim-preview-delete-string)
- (setq pyim-candidates nil)
- (setq pyim-candidates-last nil)
- (setq pyim-assistant-scheme-enable nil)
- (setq pyim-force-input-chinese nil)
- (pyim-page-hide)
- (pyim-entered-erase-buffer)
- (pyim-entered-refresh-timer-reset)
- (let* ((class (pyim-scheme-get-option (pyim-scheme-name) :class))
- (func (intern (format "pyim-terminate-translation:%S" class))))
- (when (and class (functionp func))
- (funcall func))))
-
-(defun pyim-toggle-assistant-scheme ()
- "临时切换到辅助输入法.
-
-这个功能一般用于五笔等形码输入法,在忘记编码的时候临时用拼音输入
-中文。"
- (interactive)
- (if (= (length (pyim-entered-get 'point-before)) 0)
- (progn
- (pyim-outcome-handle 'last-char)
- (pyim-terminate-translation))
- (setq pyim-assistant-scheme-enable
- (not pyim-assistant-scheme-enable))
- (pyim-entered-refresh)))
-
+;; ** 选词功能
(define-obsolete-function-alias 'pyim-page-select-word-simple
'pyim-select-word-simple "4.0")
(defun pyim-select-word-simple ()
"从选词框中选择当前词条.
@@ -745,6 +724,50 @@ Return the input string.
;; 不能用来选词了。
(call-interactively #'pyim-self-insert-command)))
+;; ** 取消当前输入功能
+(defun pyim-quit-clear ()
+ "取消当前输入的命令."
+ (interactive)
+ (pyim-outcome-handle "")
+ (pyim-terminate-translation))
+
+;; ** 字母上屏功能
+(defun pyim-quit-no-clear ()
+ "字母上屏命令."
+ (interactive)
+ (pyim-outcome-handle 'pyim-entered)
+ (pyim-terminate-translation))
+
+;; ** 取消激活功能
+(defun pyim-inactivate ()
+ "取消 pyim 的激活状态."
+ (interactive)
+ (pyim-kill-local-variables)
+ (run-hooks 'pyim-inactive-hook))
+
+;; ** 中英文输入模式切换
+(defun pyim-toggle-input-ascii ()
+ "pyim 切换中英文输入模式。同时调整标点符号样式。"
+ (interactive)
+ (setq pyim-input-ascii
+ (not pyim-input-ascii)))
+
+;; ** 主辅输入法切换功能
+(defun pyim-toggle-assistant-scheme ()
+ "临时切换到辅助输入法.
+
+这个功能一般用于五笔等形码输入法,在忘记编码的时候临时用拼音输入
+中文。"
+ (interactive)
+ (if (= (length (pyim-entered-get 'point-before)) 0)
+ (progn
+ (pyim-outcome-handle 'last-char)
+ (pyim-terminate-translation))
+ (setq pyim-assistant-scheme-enable
+ (not pyim-assistant-scheme-enable))
+ (pyim-entered-refresh)))
+
+;; ** 金手指功能
;;;###autoload
(define-obsolete-function-alias
'pyim-convert-code-at-point #'pyim-convert-string-at-point "2.0")
@@ -821,29 +844,19 @@ Return the input string.
(setq pyim-force-input-chinese t)))
(t (message "Pyim: pyim-convert-string-at-point do noting."))))))
-(defun pyim-quit-clear ()
- "取消当前输入的命令."
- (interactive)
- (pyim-outcome-handle "")
- (pyim-terminate-translation))
-
-(defun pyim-quit-no-clear ()
- "字母上屏命令."
- (interactive)
- (pyim-outcome-handle 'pyim-entered)
- (pyim-terminate-translation))
-
-(defun pyim-inactivate ()
- "取消 pyim 的激活状态."
- (interactive)
- (pyim-kill-local-variables)
- (run-hooks 'pyim-inactive-hook))
-
-(defun pyim-toggle-input-ascii ()
- "pyim 切换中英文输入模式。同时调整标点符号样式。"
+;; ** 编码反查功能
+(defun pyim-search-word-code ()
+ "选择词条,然后反查它的 code. 这个功能对五笔用户有用。"
(interactive)
- (setq pyim-input-ascii
- (not pyim-input-ascii)))
+ (when (region-active-p)
+ (let* ((string (buffer-substring-no-properties (region-beginning)
(region-end)))
+ code)
+ (if (not (string-match-p "^\\cc+\\'" string))
+ (error "不是纯中文字符串")
+ (setq code (pyim-dcache-search-word-code string))
+ (if code
+ (message "%S -> %S " string code)
+ (message "没有找到 %S 对应的编码。" string))))))
;; ** pyim 中文字符串工具
(require 'pyim-cstring)
- [elpa] externals/pyim updated (6b501cd -> 3bf8b35), ELPA Syncer, 2021/04/25
- [elpa] externals/pyim 7cb5fbd 4/6: Refactor pyim-wash-* and pyim-outcome-trigger, ELPA Syncer, 2021/04/25
- [elpa] externals/pyim 8b4692a 3/6: Sort pyim.el,
ELPA Syncer <=
- [elpa] externals/pyim da8cc5d 1/6: * pyim.el (pyim-exit-from-minibuffer): Remove itself from minbuffer-exit-hook., ELPA Syncer, 2021/04/25
- [elpa] externals/pyim 3bf8b35 6/6: * pyim-outcome.el (pyim-outcome-handle-char): Do not use pyim-wash-*, ELPA Syncer, 2021/04/25
- [elpa] externals/pyim 40c403d 2/6: * pyim.el (pyim-create-word-at-point): let* -> let, ELPA Syncer, 2021/04/25
- [elpa] externals/pyim 5df359b 5/6: Refactor pyim.el, ELPA Syncer, 2021/04/25