|
190 | 190 | (setq-local company-backends '(company-fuzzy-all-other-backends)) |
191 | 191 | (setq-local company-transformers (append company-transformers '(company-fuzzy--sort-candidates))) |
192 | 192 | (advice-add 'company--insert-candidate :before #'company-fuzzy--insert-candidate) |
193 | | - (advice-add 'company-yasnippet--completions-for-prefix :around #'company-fuzzy-yasnippet--completions-for-prefix))) |
| 193 | + (advice-add 'company-yasnippet--completions-for-prefix :around #'company-fuzzy-yasnippet--completions-for-prefix)) |
| 194 | + (add-hook 'lsp-managed-mode-hook #'company-fuzzy--lsp-managed-mode nil t) |
| 195 | + (add-hook 'eglot-managed-mode-hook #'company-fuzzy--lsp-managed-mode nil t)) |
194 | 196 |
|
195 | 197 | (defun company-fuzzy--disable () |
196 | 198 | "Revert all other backend back to `company-backends'." |
|
200 | 202 | (setq company-fuzzy--recorded-backends nil |
201 | 203 | company-fuzzy--backends nil) |
202 | 204 | (advice-remove 'company--insert-candidate #'company-fuzzy--insert-candidate) |
203 | | - (advice-remove 'company-yasnippet--completions-for-prefix #'company-fuzzy-yasnippet--completions-for-prefix))) |
| 205 | + (advice-remove 'company-yasnippet--completions-for-prefix #'company-fuzzy-yasnippet--completions-for-prefix)) |
| 206 | + (remove-hook 'lsp-managed-mode-hook #'company-fuzzy--lsp-managed-mode t) |
| 207 | + (remove-hook 'eglot-managed-mode-hook #'company-fuzzy--lsp-managed-mode t)) |
204 | 208 |
|
205 | 209 | ;;;###autoload |
206 | 210 | (define-minor-mode company-fuzzy-mode |
@@ -611,7 +615,8 @@ Insert .* between each char." |
611 | 615 | (ht-clear company-fuzzy--candidates) ; Clean up |
612 | 616 | (setq company-fuzzy--is-trigger-prefix-p (company-fuzzy--trigger-prefix-p)) |
613 | 617 | (dolist (backend company-fuzzy--backends) |
614 | | - (if (memq backend company-fuzzy-passthrough-backends) |
| 618 | + (if (or (company-fuzzy--lsp-passthrough backend) |
| 619 | + (memq backend company-fuzzy-passthrough-backends)) |
615 | 620 | (company-fuzzy--candidates-from-passthrough-backend backend) |
616 | 621 | (company-fuzzy--candidates-from-backend backend))) |
617 | 622 | ;; Since we insert the candidates before sorting event, see function |
@@ -732,6 +737,23 @@ Insert .* between each char." |
732 | 737 | ;; (@* "Plugins" ) |
733 | 738 | ;; |
734 | 739 |
|
| 740 | +(defun company-fuzzy--lsp-connected-p () |
| 741 | + "Return non-nil if lsp is connected." |
| 742 | + (or (bound-and-true-p lsp-managed-mode) |
| 743 | + (bound-and-true-p eglot--managed-mode))) |
| 744 | + |
| 745 | +(defun company-fuzzy--lsp-managed-mode (&rest _) |
| 746 | + "Hook run after LSP is enabled." |
| 747 | + (when (company-fuzzy--lsp-connected-p) |
| 748 | + ;; No need to check for `company-fuzzy-mode' is on or not since this |
| 749 | + ;; is hook only added when `company-fuzzy-mode' is on. |
| 750 | + (setq-local company-backends '(company-fuzzy-all-other-backends)))) |
| 751 | + |
| 752 | +(defun company-fuzzy--lsp-passthrough (backend) |
| 753 | + "Respect `capf' BACKEND when LSP is available." |
| 754 | + (when (memq backend '(company-capf)) |
| 755 | + (company-fuzzy--lsp-connected-p))) |
| 756 | + |
735 | 757 | (defun company-fuzzy-yasnippet--completions-for-prefix (fnc &rest args) |
736 | 758 | "Wrap around `company-yasnippet--completions-for-prefix' function in order to |
737 | 759 | get all possible candidates. |
|
0 commit comments