新问题来了。
(defun wk/acm-insert-common-or-complete-1 ()
"Insert common prefix of menu.11"
(interactive)
(when (acm-frame-visible-p acm-frame)
(let* ((common-string "")
(items (mapcar (lambda (v) (plist-get v :label)) acm-menu-candidates))
(item-min-length (cl-reduce #'min (mapcar #'string-width items)))
(input-prefix (acm-get-input-prefix)))
(dolist (index (number-sequence 0 (1- item-min-length)))
(let* ((char-list (mapcar (lambda (i) (substring i index (1+ index))) items))
(first-char (cl-first char-list)))
(when (cl-every (lambda (x) (string-equal x first-char)) char-list)
(setq common-string (concat common-string first-char)))))
(if (and (> (length common-string) 0)
(> (length common-string) (length input-prefix)))
(insert (substring common-string (length (acm-get-input-prefix))))
;; 上面是拷贝过来的源码,不用看,主要是下面的修改
;; 注释掉下面这一行,改成了如果没有可用的前缀,就直接使用第一条补全
;; (message "No common string found")
;; 下面的progn时刚加的
(progn
(wk/acm-complete-1)
(acm-hide))
)
)))
新问题是我把这个 wk/acm-insert-common-or-complete-1
绑定了快捷键并且加入了 acm-continue-commands
,这时候怎么实现
- 有前缀补全了前缀时 不隐藏补全窗口
- 没有前缀使用了 列表第一项补全后 不显示补全窗口
现在上面的1 是可以的,2怎么实现呢,