branch: elpa/slime
commit 5d292a981df390d5af635c1f5be89978686fd5c6
Author: Stas Boukarev <stass...@gmail.com>
Commit: Stas Boukarev <stass...@gmail.com>

    slime-c-p-c: do not override slime-completion-at-point-functions
    
    Fixes #769
---
 contrib/slime-c-p-c.el |  5 -----
 slime.el               | 13 +++++++++----
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/contrib/slime-c-p-c.el b/contrib/slime-c-p-c.el
index 744b47bdddd..12601fda282 100644
--- a/contrib/slime-c-p-c.el
+++ b/contrib/slime-c-p-c.el
@@ -15,17 +15,12 @@
   (:on-load
    (push
     `(progn
-       (remove-hook 'slime-completion-at-point-functions
-                   #'slime-c-p-c-completion-at-point)
-       (remove-hook 'slime-connected-hook 'slime-c-p-c-on-connect)
        ,@(when (featurep 'slime-repl)
                `((define-key slime-mode-map "\C-c\C-s"
                    ',(lookup-key slime-mode-map "\C-c\C-s"))
                  (define-key slime-repl-mode-map "\C-c\C-s"
                    ',(lookup-key slime-repl-mode-map "\C-c\C-s")))))
     slime-c-p-c-init-undo-stack)
-   (add-hook 'slime-completion-at-point-functions
-            #'slime-c-p-c-completion-at-point)
    (define-key slime-mode-map "\C-c\C-s" 'slime-complete-form)
    (when (featurep 'slime-repl)
      (define-key slime-repl-mode-map "\C-c\C-s" 'slime-complete-form)))
diff --git a/slime.el b/slime.el
index 8dfb9176bf3..fad1a975b3f 100644
--- a/slime.el
+++ b/slime.el
@@ -267,7 +267,7 @@ argument."
 (defcustom slime-complete-symbol-function 'nil
   "Obsolete. Use `slime-completion-at-point-functions' instead."
   :group 'slime-mode
-  :type '(choice (const :tag "Compound" slime-complete-symbol*)
+  :type '(choice (const :tag "Compound" slime-c-p-c-completion-at-point)
                  (const :tag "Fuzzy" slime-fuzzy-complete-symbol)))
 
 (defcustom slime-fuzzy-default-completion-ui nil
@@ -280,11 +280,13 @@ argument."
                         "2015-10-18")
 
 (defcustom slime-completion-at-point-functions
-  '(slime-filename-completion
+  '(slime-c-p-c-completion-at-point
+    slime-filename-completion
     slime-simple-completion-at-point)
   "List of functions to perform completion.
 Works like `completion-at-point-functions'.
 `slime--completion-at-point' uses this variable."
+  :type 'sexp
   :group 'slime-mode)
 
 ;;;;; slime-mode-faces
@@ -3608,6 +3610,7 @@ more than one space."
 
 (defalias 'slime-complete-symbol #'completion-at-point)
 (make-obsolete 'slime-complete-symbol #'completion-at-point "2015-10-17")
+(defvar slime-completion-at-point-functions*)
 
 ;; This is the function that we add to
 ;; `completion-at-point-functions'.  For backward-compatibilty we look
@@ -3620,8 +3623,10 @@ more than one space."
           (cond (slime-complete-symbol-function
                  slime-complete-symbol-function)
                 (t
-                 (run-hook-with-args-until-success
-                  'slime-completion-at-point-functions)))))
+                 (let ((slime-completion-at-point-functions*
+                         (cl-remove-if-not #'fboundp 
slime-completion-at-point-functions)))
+                   (run-hook-with-args-until-success
+                    'slime-completion-at-point-functions))))))
     (if (and slime-fuzzy-default-completion-ui
              fun
              (symbolp fun))

Reply via email to