branch: elpa/cider
commit 7a83b0843cd67689c7c6b4813b23686bbc53403d
Author: Oleksandr Yakushev <a...@bytopia.org>
Commit: GitHub <nore...@github.com>

    Don't pass `:same` if context string hasn't changed (#3614)
    
    This has been a quite awkward premature optimization that turned up to be 
unnecessary.
    
    The support for it had been broken in Compliment 0.5.1.
---
 CHANGELOG.md                           |  1 +
 cider-completion-context.el            | 28 +++++++++++-----------------
 test/cider-completion-context-tests.el |  9 ++++++++-
 3 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e0abe2391c..283fe107e0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
 ### Bugs fixed
 
 - [#3605](https://github.com/clojure-emacs/cider/issues/3605): avoid 
`cider--error-phase-of-last-exception` recursive loop.  
+- [#3613](https://github.com/clojure-emacs/cider/issues/3613): adapt 
`cider-completion-context.el` to upstream changes in Compliment.  
 
 ## 1.13.0 (2024-01-14)
 
diff --git a/cider-completion-context.el b/cider-completion-context.el
index 1a72fa391a..3ebbf203f6 100644
--- a/cider-completion-context.el
+++ b/cider-completion-context.el
@@ -96,27 +96,21 @@ form, with symbol at point replaced by __prefix__."
                 "__prefix__"
                 (substring context (- pref-end expr-start)))))))
 
-(defvar cider-completion-last-context nil)
-
 (defun cider-completion-get-context (&optional info)
   "Extract context depending (maybe of INFO type).
 
 Output depends on `cider-completion-use-context' and the current major mode."
-  (let ((context (if cider-completion-use-context
-                     ;; We use ignore-errors here since grabbing the context
-                     ;; might fail because of unbalanced parens, or other
-                     ;; technical reasons, yet we don't want to lose all
-                     ;; completions and throw error to user because of that.
-                     (or (ignore-errors
-                           (if info
-                               (cider-completion-get-info-context-at-point)
-                             (cider-completion-get-context-at-point)))
-                         "nil")
-                   "nil")))
-    (if (string= cider-completion-last-context context)
-        ":same"
-      (setq cider-completion-last-context context)
-      context)))
+  (if cider-completion-use-context
+      ;; We use ignore-errors here since grabbing the context
+      ;; might fail because of unbalanced parens, or other
+      ;; technical reasons, yet we don't want to lose all
+      ;; completions and throw error to user because of that.
+      (or (ignore-errors
+            (if info
+                (cider-completion-get-info-context-at-point)
+              (cider-completion-get-context-at-point)))
+          "nil")
+    "nil"))
 
 (provide 'cider-completion-context)
 ;;; cider-completion-context.el ends here
diff --git a/test/cider-completion-context-tests.el 
b/test/cider-completion-context-tests.el
index aac6fcf9c3..e1e970451a 100644
--- a/test/cider-completion-context-tests.el
+++ b/test/cider-completion-context-tests.el
@@ -45,4 +45,11 @@
       (it "Returns different things depending on the :info param"
         (with-clojure-buffer "user> (.foo|bar \"\")"
           (expect (cider-completion-get-context) :to-equal "(__prefix__bar 
\"\")")
-          (expect (cider-completion-get-info-context-at-point) :to-equal 
"(__prefix__ \"\")"))))))
+          (expect (cider-completion-get-info-context-at-point) :to-equal 
"(__prefix__ \"\")")))))
+
+  (it "Returns the same context when invoked twice at the same place"
+    (with-clojure-buffer "(ns foo)
+
+(.foo| \"\")"
+      (expect (cider-completion-get-context) :to-equal "(__prefix__ \"\")")
+      (expect (cider-completion-get-context) :to-equal "(__prefix__ \"\")"))))

Reply via email to