branch: externals/company commit b73c5ae025ce8822794820bce3adfcd37be1aa84 Merge: b712017 60b01bf Author: Dmitry Gutov <dgu...@yandex.ru> Commit: GitHub <nore...@github.com>
Merge pull request #1119 from yugaego/search-keypad Refactor search-mode keypad key press workaround --- company.el | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/company.el b/company.el index af61696..6d34b78 100644 --- a/company.el +++ b/company.el @@ -2138,16 +2138,18 @@ each one wraps a part of the input string." (cl-return i)) (cl-incf i)))) -(defun company-search-keypad () - (interactive) - (let* ((name (symbol-name last-command-event)) - (last-command-event (aref name (1- (length name))))) - (company-search-printing-char))) - (defun company-search-printing-char () (interactive) (company--search-assert-enabled) - (let ((ss (concat company-search-string (string last-command-event)))) + (let* ((event-type (event-basic-type last-command-event)) + (event-string (if (characterp event-type) + (string last-command-event) + ;; Handle key press on the keypad. + (let ((name (symbol-name event-type))) + (if (string-match "kp-\\([0-9]\\)" name) + (match-string 1 name) + (error "Unexpected printing char input"))))) + (ss (concat company-search-string event-string))) (when company-search-filtering (company--search-update-predicate ss)) (company--search-update-string ss))) @@ -2254,7 +2256,7 @@ each one wraps a part of the input string." (define-key keymap (vector i) 'company-search-printing-char) (cl-incf i)) (dotimes (i 10) - (define-key keymap (read (format "[kp-%s]" i)) 'company-search-keypad)) + (define-key keymap (kbd (format "<kp-%d>" i)) 'company-search-printing-char)) (let ((meta-map (make-sparse-keymap))) (define-key keymap (char-to-string meta-prefix-char) meta-map) (define-key keymap [escape] meta-map))