@@ -346,36 +346,35 @@ Return `nil' when fails to guess prefix."
346
346
347
347
(defun lsp-completion--filter-candidates (items )
348
348
" 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)))
379
378
380
379
(defconst lsp-completion--kind->symbol
381
380
'((1 . text)
@@ -580,7 +579,8 @@ Returns resolved completion item details."
580
579
(-map
581
580
(lambda (item )
582
581
(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))))))
584
584
(t
585
585
(-let* ((resp (lsp-request-while-no-input
586
586
" textDocument/completion"
@@ -621,15 +621,16 @@ Returns resolved completion item details."
621
621
((not done?) :incomplete ))
622
622
:markers markers
623
623
: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))
626
630
(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)))))))))
633
634
(:interrupted lsp-completion--last-result)
634
635
(`, res (setq lsp-completion--last-result res))))))
635
636
(list
0 commit comments