branch: externals/pyim
commit b12d6219248b8c6b684103f9f6c7635ec88a3f1b
Author: Feng Shu <[email protected]>
Commit: Feng Shu <[email protected]>
Add pyim-page-get-candidate-position-by-numeric-key.
* pyim.el (pyim-select-word-by-number): Use
pyim-page-get-candidate-position-by-numeric-key.
* pyim-page.el (pyim-page-get-candidate-position-by-numeric-key):
New function.
(pyim-page-numeric-key-valid-p): Removed.
---
pyim-page.el | 25 ++++++++++++-------------
pyim.el | 10 ++++++----
2 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/pyim-page.el b/pyim-page.el
index 610527574a..027ac73cb0 100644
--- a/pyim-page.el
+++ b/pyim-page.el
@@ -562,6 +562,18 @@ pyim-page 的核心的功能,为此增加代码的复杂度和测试的难度
result)))
(string-join (nreverse result) (or separator ""))))
+(defun pyim-page-get-candidate-position-by-numeric-key (num-key)
+ "根据 NUM-KEY 获取一个有效的 candidate position.
+
+如果获取不到,返回 nil."
+ (let ((index (if (numberp num-key)
+ (- num-key 1)
+ 0))
+ (end (pyim-page--end)))
+ (when (= index -1) (setq index 9))
+ (when (<= (+ index (pyim-page--start)) end)
+ (+ (pyim-page--start) index))))
+
(defun pyim-page-next-page (arg)
"Pyim page 翻页命令."
(interactive "p")
@@ -579,19 +591,6 @@ pyim-page 的核心的功能,为此增加代码的复杂度和测试的难度
maxpos)))
(pyim-process-ui-refresh))))
-(defun pyim-page-numeric-key-valid-p (num-key)
- "判断 NUM-KEY 是否是一个有效的数字选择键。"
- (let ((index (if (numberp num-key)
- (- num-key 1)
- 0))
- (end (pyim-page--end)))
- (when (= index -1) (setq index 9))
- (if (> (+ index (pyim-page--start)) end)
- (progn (pyim-page--refresh) nil)
- (pyim-process-set-candidate-position
- (+ (pyim-page--start) index))
- t)))
-
(defun pyim-page-previous-page (arg)
(interactive "p")
(pyim-page-next-page (- arg)))
diff --git a/pyim.el b/pyim.el
index 732b9e3da5..8b3d2670ae 100644
--- a/pyim.el
+++ b/pyim.el
@@ -623,16 +623,18 @@ FILE 的格式与 `pyim-dcache-export' 生成的文件格式相同,
;; pyim 使用这个 hook 来处理联想词。
(run-hooks 'pyim-select-finish-hook)))
-(defun pyim-select-word-by-number (&optional n)
+(defun pyim-select-word-by-number (&optional num)
"使用数字编号来选择对应的词条。"
(interactive)
- (if (or pyim-select-word-by-number n)
+ (if (or pyim-select-word-by-number num)
(if (null (pyim-process-get-candidates))
(progn
(pyim-process-outcome-handle 'last-char)
(pyim-process-terminate))
- (when (pyim-page-numeric-key-valid-p n)
- (pyim-select-word)))
+ (let ((position (pyim-page-get-candidate-position-by-numeric-key num)))
+ (when position
+ (pyim-process-set-candidate-position position)
+ (pyim-select-word))))
;; 有些输入法使用数字键编码,这种情况下,数字键就
;; 不能用来选词了。
(call-interactively #'pyim-self-insert-command)))