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

Reply via email to