[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/pyim 77d690bcfb 1/2: 使用 hook 而不是 advice 来处理 page 和 pre
From: |
ELPA Syncer |
Subject: |
[elpa] externals/pyim 77d690bcfb 1/2: 使用 hook 而不是 advice 来处理 page 和 preview 相关功能。 |
Date: |
Tue, 3 May 2022 04:57:44 -0400 (EDT) |
branch: externals/pyim
commit 77d690bcfbdf4a439c2e0f6b2ba8477530d44582
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>
使用 hook 而不是 advice 来处理 page 和 preview 相关功能。
* pyim.el (pyim-input-method): Use pyim-process-ui-init-hook.
* pyim-process.el (pyim-process-ui-init-hook)
(pyim-process-ui-refresh-hook, pyim-process-ui-hide-hook)
(pyim-process-ui-position-function): New variables.
(pyim-process-init-ui, pyim-process-ui-position)
(pyim-process-preview-refresh, pyim-process-page-refresh)
(pyim-process-preview-hide, pyim-process-page-hide): Removed.
(pyim-process-terminate, pyim-process-run-async)
(pyim-process-run-1): Use new hooks.
* pyim-preview.el (pyim-process-ui-init-hook)
(pyim-process-ui-refresh-hook, pyim-process-ui-hide-hook)
(pyim-process-ui-position-function):
* pyim-page.el (pyim-page-refresh, pyim-process-ui-refresh-hook)
(pyim-process-ui-hide-hook):
---
pyim-page.el | 6 +++---
pyim-preview.el | 8 ++++----
pyim-process.el | 38 +++++++++++++++-----------------------
pyim.el | 2 +-
4 files changed, 23 insertions(+), 31 deletions(-)
diff --git a/pyim-page.el b/pyim-page.el
index a0bf325144..53e6836603 100644
--- a/pyim-page.el
+++ b/pyim-page.el
@@ -230,10 +230,10 @@ page 的概念,比如,上面的 “nihao” 的 *待选词列表* 就可以
(null unread-post-input-method-events))
(pyim-page-show
(pyim-page-info-format page-info tooltip)
- (pyim-process-ui-position)
+ (funcall pyim-process-ui-position-function)
tooltip))))
-(advice-add 'pyim-process-page-refresh :after #'pyim-page-refresh)
+(add-hook 'pyim-process-ui-refresh-hook #'pyim-page-refresh)
(defun pyim-page-next-page (arg)
"Pyim page 翻页命令."
@@ -549,7 +549,7 @@ page 的概念,比如,上面的 “nihao” 的 *待选词列表* 就可以
(setq-local cursor-type t))
(setq pyim-page-last-minibuffer-string nil)))))
-(advice-add 'pyim-process-page-hide :after #'pyim-page-hide)
+(add-hook 'pyim-process-ui-hide-hook #'pyim-page-hide)
;; * Footer
(provide 'pyim-page)
diff --git a/pyim-preview.el b/pyim-preview.el
index 7ec28d9606..f6ccf5b88d 100644
--- a/pyim-preview.el
+++ b/pyim-preview.el
@@ -57,7 +57,7 @@
(if input-method-highlight-flag
(overlay-put pyim-preview-overlay 'face 'pyim-preview-face)))))
-(advice-add 'pyim-process-init-ui :after #'pyim-preview-setup-overlay)
+(add-hook 'pyim-process-ui-init-hook #'pyim-preview-setup-overlay)
(defun pyim-preview-delete-overlay ()
"删除 pyim 光标处实时预览功能所需要的 overlay.
@@ -97,7 +97,7 @@ pyim 会使用 Emacs overlay 机制在 *待输入buffer* 光标处高亮显示
(move-overlay pyim-preview-overlay
(overlay-start pyim-preview-overlay) (point))))
-(advice-add 'pyim-process-preview-refresh :after #'pyim-preview-refresh)
+(add-hook 'pyim-process-ui-refresh-hook #'pyim-preview-refresh)
(defun pyim-preview-delete-string ()
"删除已经插入 buffer 的 preview 预览字符串。"
@@ -105,13 +105,13 @@ pyim 会使用 Emacs overlay 机制在 *待输入buffer* 光标处高亮显示
(delete-region (overlay-start pyim-preview-overlay)
(overlay-end pyim-preview-overlay))))
-(advice-add 'pyim-process-preview-hide :after #'pyim-preview-delete-string)
+(add-hook 'pyim-process-ui-hide-hook #'pyim-preview-delete-string)
(defun pyim-preview-start-point ()
"Preview 字符串的开始位置。"
(overlay-start pyim-preview-overlay))
-(advice-add 'pyim-process-ui-position :override #'pyim-preview-start-point)
+(setq pyim-process-ui-position-function #'pyim-preview-start-point)
;; * Footer
(provide 'pyim-preview)
diff --git a/pyim-process.el b/pyim-process.el
index 1fce8061fe..d1c8f47905 100644
--- a/pyim-process.el
+++ b/pyim-process.el
@@ -116,6 +116,18 @@ entered (nihaom) 的第一个候选词。
(defvar pyim-process-run-exhibit-timer nil)
+(defvar pyim-process-ui-init-hook nil
+ "Hook used to run ui init functions.")
+
+(defvar pyim-process-ui-refresh-hook nil
+ "Hook used to run ui refresh functions.")
+
+(defvar pyim-process-ui-hide-hook nil
+ "Hook used to run ui hide functions.")
+
+(defvar pyim-process-ui-position-function #'point
+ "The value is a function returned a position where ui place.")
+
(pyim-register-local-variables
'(pyim-process-input-ascii
pyim-process-translating))
@@ -134,12 +146,6 @@ entered (nihaom) 的第一个候选词。
(defun pyim-process-update-personal-words ()
(pyim-dcache-call-api 'update-personal-words t))
-(defun pyim-process-init-ui ()
- "PYIM 流程,用户界面相关的初始化工作。")
-
-(defun pyim-process-ui-position ()
- "用户界面定位点获取函数接口.")
-
(defun pyim-process-start-daemon ()
"启动 pyim 流程需要的相关 daemon, 接口函数.")
@@ -322,14 +328,7 @@ entered (nihaom) 的第一个候选词。
(pyim-entered-get 'point-after))
(pyim-process-terminate))
(t (setq pyim-candidate-position 1)
- (pyim-process-preview-refresh)
- (pyim-process-page-refresh))))))
-
-(defun pyim-process-preview-refresh ()
- "Preview refresh 接口函数。")
-
-(defun pyim-process-page-refresh ()
- "Page refresh 接口函数。")
+ (run-hooks 'pyim-process-ui-refresh-hook))))))
(defun pyim-process-self-insert-command-p (cmd)
"测试 CMD 是否是一个 pyim self insert command."
@@ -341,8 +340,7 @@ entered (nihaom) 的第一个候选词。
(words (delete-dups (pyim-candidates-create pyim-imobjs scheme-name
t))))
(when words
(setq pyim-candidates words)
- (pyim-process-preview-refresh)
- (pyim-process-page-refresh))))
+ (run-hooks 'pyim-process-ui-refresh-hook))))
(defun pyim-process-run-async-timer-reset ()
"Reset `pyim-process-run-async-timer'."
@@ -646,8 +644,7 @@ BUG:拼音无法有效地处理多音字。"
(setq pyim-process-force-input-chinese nil)
(setq pyim-candidates nil)
(setq pyim-candidates-last nil)
- (pyim-process-preview-hide)
- (pyim-process-page-hide)
+ (run-hooks 'pyim-process-ui-hide-hook)
(setq pyim-cstring-to-code-criteria nil)
(pyim-process-run-async-timer-reset)
(let* ((class (pyim-scheme-get-option (pyim-scheme-name) :class))
@@ -655,11 +652,6 @@ BUG:拼音无法有效地处理多音字。"
(when (and class (functionp func))
(funcall func))))
-(defun pyim-process-preview-hide ()
- "Preview hide 接口函数.")
-
-(defun pyim-process-page-hide ()
- "Page hide 接口函数.")
;; * Footer
(provide 'pyim-process)
diff --git a/pyim.el b/pyim.el
index d6cf4cc473..8924a95a3b 100644
--- a/pyim.el
+++ b/pyim.el
@@ -144,7 +144,7 @@ Tip: 用户也可以利用 `pyim-outcome-trigger-function-default' 函数
overriding-local-map)
(list key)
;; (message "call with key: %S" key-or-string)
- (pyim-process-init-ui)
+ (run-hooks 'pyim-process-ui-init-hook)
(with-silent-modifications
(unwind-protect
(let ((input-string (pyim-input-method-1 key)))