Skip to content

Commit 19f4386

Browse files
committed
prevent company from flickering
1 parent 5a6c660 commit 19f4386

File tree

1 file changed

+40
-39
lines changed

1 file changed

+40
-39
lines changed

lsp-completion.el

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -346,36 +346,35 @@ Return `nil' when fails to guess prefix."
346346

347347
(defun lsp-completion--filter-candidates (items)
348348
"List all possible completions in cached ITEMS with their prefixes."
349-
(lsp--while-no-input
350-
(--> (let (queries fuz-queries)
351-
(-keep (-lambda ((cand &as &plist :label :start-point :score))
352-
(let* ((query (or (plist-get queries start-point)
353-
(let ((s (buffer-substring-no-properties
354-
start-point (point))))
355-
(setq queries (plist-put queries start-point s))
356-
s)))
357-
(fuz-query (or (plist-get fuz-queries start-point)
358-
(let ((s (lsp-completion--regex-fuz query)))
359-
(setq fuz-queries
360-
(plist-put fuz-queries start-point s))
361-
s)))
362-
(label-len (length label))
363-
(case-fold-search completion-ignore-case))
364-
(when (string-match fuz-query label)
365-
(put-text-property 0 label-len 'match-data (match-data) label)
366-
(plist-put cand
367-
:sort-score
368-
(* (or (lsp-completion--fuz-score query label) 1e-05)
369-
(or score 0.001)))
370-
cand)))
371-
items))
372-
(if lsp-completion--no-reordering
373-
it
374-
(sort it (lambda (o1 o2)
375-
(> (plist-get o1 :sort-score)
376-
(plist-get o2 :sort-score)))))
377-
;; TODO: pass additional function to sort the candidates
378-
(-map (-rpartial #'plist-get :item) it))))
349+
(--> (let (queries fuz-queries)
350+
(-keep (-lambda ((cand &as &plist :label :start-point :score))
351+
(let* ((query (or (plist-get queries start-point)
352+
(let ((s (buffer-substring-no-properties
353+
start-point (point))))
354+
(setq queries (plist-put queries start-point s))
355+
s)))
356+
(fuz-query (or (plist-get fuz-queries start-point)
357+
(let ((s (lsp-completion--regex-fuz query)))
358+
(setq fuz-queries
359+
(plist-put fuz-queries start-point s))
360+
s)))
361+
(label-len (length label))
362+
(case-fold-search completion-ignore-case))
363+
(when (string-match fuz-query label)
364+
(put-text-property 0 label-len 'match-data (match-data) label)
365+
(plist-put cand
366+
:sort-score
367+
(* (or (lsp-completion--fuz-score query label) 1e-05)
368+
(or score 0.001)))
369+
cand)))
370+
items))
371+
(if lsp-completion--no-reordering
372+
it
373+
(sort it (lambda (o1 o2)
374+
(> (plist-get o1 :sort-score)
375+
(plist-get o2 :sort-score)))))
376+
;; TODO: pass additional function to sort the candidates
377+
(-map (-rpartial #'plist-get :item) it)))
379378

380379
(defconst lsp-completion--kind->symbol
381380
'((1 . text)
@@ -580,7 +579,8 @@ Returns resolved completion item details."
580579
(-map
581580
(lambda (item)
582581
(lsp-completion--make-item item :markers markers :prefix prefix))
583-
(lsp-completion--filter-candidates items)))))
582+
(lsp--while-no-input
583+
(lsp-completion--filter-candidates items))))))
584584
(t
585585
(-let* ((resp (lsp-request-while-no-input
586586
"textDocument/completion"
@@ -621,15 +621,16 @@ Returns resolved completion item details."
621621
((not done?) :incomplete))
622622
:markers markers
623623
:prefix prefix)
624-
result (when-let ((items
625-
(or (and done? (cl-second lsp-completion--cache))
624+
result (-map
625+
(lambda (item)
626+
(lsp-completion--make-item item :markers markers :prefix prefix))
627+
;; Prevent company from flickering. See #2148.
628+
(lsp--while-no-input
629+
(->> (if (or (and done? (cl-second lsp-completion--cache))
626630
(and lsp-completion-filter-on-incomplete
627-
(lsp-completion--to-internal items))
628-
items)))
629-
(-map
630-
(lambda (item)
631-
(lsp-completion--make-item item :markers markers :prefix prefix))
632-
(lsp-completion--filter-candidates items))))))))
631+
(lsp-completion--to-internal items)))
632+
(lsp-completion--filter-candidates items)
633+
items)))))))))
633634
(:interrupted lsp-completion--last-result)
634635
(`,res (setq lsp-completion--last-result res))))))
635636
(list

0 commit comments

Comments
 (0)