branch: elpa/cider commit dbc1a6fcc0003bab23b1b2b47e72cdfafce08bf4 Author: Oleksandr Yakushev <a...@bytopia.org> Commit: Oleksandr Yakushev <a...@bytopia.org>
[completion] Enable cider-completion-style by default --- CHANGELOG.md | 1 + cider-completion.el | 42 ++++++++++++++++++++++-------------------- cider-mode.el | 1 + 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fa7a0d9fd..0f2167d38f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - [#3790](https://github.com/clojure-emacs/cider/issues/3790): Stacktrace: show messages and data for all exception causes by default. - [#3789](https://github.com/clojure-emacs/cider/issues/3789): Refactor and simplify exception handling. - [#3789](https://github.com/clojure-emacs/cider/issues/3796): Completion: disable client-side sorting (defer to backend-provided candidate order). +- [#3797](https://github.com/clojure-emacs/cider/issues/3797): Completion: enable `cider-completion-style` by default (this enables richer completion suggestions where candidates don't have to strictly match the prefix). ## 1.17.1 (2025-02-25) diff --git a/cider-completion.el b/cider-completion.el index 325a3868a2..e55216ee91 100644 --- a/cider-completion.el +++ b/cider-completion.el @@ -283,27 +283,31 @@ DEPRECATED: please use `cider-enable-cider-completion-style' instead." (interactive) (cider-enable-cider-completion-style)) -(defun cider-enable-cider-completion-style () - "Enables `cider' completion style for CIDER in all buffers. +(defun cider-enable-cider-completion-style (&optional arg) + "Enables or disables `cider' completion style for CIDER in all buffers. This style supports non-prefix completion candidates returned by the -completion backend. Only affects the `cider' completion category." +completion backend. Only affects the `cider' completion category. If ARG +is `1' or nil, enables the custom completion style; if `-1', disables it." (interactive) - (let* ((cider (assq 'cider completion-category-overrides)) - (found-styles (assq 'styles cider)) - (new-styles (if found-styles - (cons 'styles (cons 'cider (cdr found-styles))) - '(styles cider basic))) - (new-cider (if cider - (cons 'cider - (cons new-styles - (seq-remove (lambda (x) (equal 'styles (car x))) - (cdr cider)))) - (list 'cider new-styles))) - (new-overrides (cons new-cider - (seq-remove (lambda (x) (equal 'cider (car x))) - completion-category-overrides)))) - (setq completion-category-overrides new-overrides))) + (if (= arg -1) + (setq completion-category-overrides + (assq-delete-all 'cider completion-category-overrides)) + (let* ((cider (assq 'cider completion-category-overrides)) + (found-styles (assq 'styles cider)) + (new-styles (if found-styles + (cons 'styles (cons 'cider (cdr found-styles))) + '(styles cider basic))) + (new-cider (if cider + (cons 'cider + (cons new-styles + (seq-remove (lambda (x) (equal 'styles (car x))) + (cdr cider)))) + (list 'cider new-styles))) + (new-overrides (cons new-cider + (seq-remove (lambda (x) (equal 'cider (car x))) + completion-category-overrides)))) + (setq completion-category-overrides new-overrides)))) (make-obsolete 'cider-company-enable-fuzzy-completion 'cider-enable-cider-completion-style "1.17.0") @@ -312,8 +316,6 @@ completion backend. Only affects the `cider' completion category." Only affects the `cider' completion category.`" (interactive) - (when (< emacs-major-version 27) - (user-error "`cider-enable-flex-completion' requires Emacs 27 or later")) (let ((found-styles (when-let ((cider (assq 'cider completion-category-overrides))) (assq 'styles cider))) (found-cycle (when-let ((cider (assq 'cider completion-category-overrides))) diff --git a/cider-mode.el b/cider-mode.el index 64567b46a5..8e5af6c2d0 100644 --- a/cider-mode.el +++ b/cider-mode.el @@ -1098,6 +1098,7 @@ property." (setq-local clojure-expected-ns-function #'cider-expected-ns) (when cider-use-xref (add-hook 'xref-backend-functions #'cider--xref-backend cider-xref-fn-depth 'local)) + (cider-enable-cider-completion-style 1) (setq next-error-function #'cider-jump-to-compilation-error)) ;; Mode cleanup (mapc #'kill-local-variable '(next-error-function