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

[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)))



reply via email to

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