From fc72ca2dd8a12e8a7e510ebbc08dba592d0ed51d Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Sun, 21 Feb 2021 18:32:11 +0100 Subject: [PATCH] SLY: Fix #p completion with Company. --- .emacs.d/lisp/init-lisp.el | 25 ------------------------- .emacs.d/lisp/init-sly.el | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/.emacs.d/lisp/init-lisp.el b/.emacs.d/lisp/init-lisp.el index 2cbfcd50..a18bcc84 100644 --- a/.emacs.d/lisp/init-lisp.el +++ b/.emacs.d/lisp/init-lisp.el @@ -23,29 +23,4 @@ (with-eval-after-load 'slime (require 'init-slime)) -;; #p completion. See https://github.com/joaotavora/sly/issues/405. -(with-eval-after-load 'company - (defcustom ambrevar/complete-cl-file-prefix "./" - "Prefix for `ambrevar/complete-cl-file'." - :type 'string) - - (defun ambrevar/complete-cl-file (action &rest _) - (interactive (list 'interactive)) - (cl-case action - (interactive (company-begin-backend #'ambrevar/complete-cl-file)) - (candidates - (cond ((and (save-excursion (looking-back "#p" (- (point) 2))) - (not (looking-at-p "\""))) - (insert "\"") - (save-excursion (insert "\"")) - (company-files 'candidates ambrevar/complete-cl-file-prefix)) - ((save-excursion (looking-back "#p\"" (- (point) 3))) - (company-files 'candidates ambrevar/complete-cl-file-prefix)))) - (prefix "") - (t (company-files action)))) - - ;; (add-to-list 'company-backends 'ambrevar/complete-cl-file) - ;; (setq company-backends (cons 'company-files (delete 'company-files company-backends))) - ) - (provide 'init-lisp) diff --git a/.emacs.d/lisp/init-sly.el b/.emacs.d/lisp/init-sly.el index a2813886..aa674212 100644 --- a/.emacs.d/lisp/init-sly.el +++ b/.emacs.d/lisp/init-sly.el @@ -264,6 +264,33 @@ Good substitute for `sly-mrepl-indent-and-complete-symbol'." (add-hook 'sly-mrepl-hook #'ambrevar/init-lispy) (add-hook 'sly-mrepl-hook #'rainbow-delimiters-mode) +;; #p completion. See https://github.com/joaotavora/sly/issues/405. +(with-eval-after-load 'company + (defcustom ambrevar/complete-cl-file-prefix "./" + "Prefix for `ambrevar/complete-cl-file'." + :type 'string) + + (defun ambrevar/complete-cl-file (action &rest _) + (interactive (list 'interactive)) + (cl-case action + (interactive (company-begin-backend #'my/complete-cl-file)) + (candidates + (cond ((and (save-match-data (looking-back "#p" (- (point) 2)))) + (if (looking-at-p "\"") + (forward-char) + (insert "\"") + (save-excursion (insert "\""))) + (company-files 'candidates ambrevar/complete-cl-file-prefix)) + ((save-match-data (looking-back "#p\"" (- (point) 3))) + (company-files 'candidates ambrevar/complete-cl-file-prefix)))) + (prefix (and (save-match-data (looking-back "#p\"?")) "")) + (t (company-files action)))) + + (defun ambrevar/set-sly-company-backends () + (set (make-local-variable 'company-backends) + (cons 'ambrevar/complete-cl-file company-backends))) + (add-hook 'sly-mrepl-hook 'ambrevar/set-sly-company-backends)) + ;; REVIEW: With Emacs 27 we can: ;; (customize-set-variable 'helm-completion-style 'emacs) ;; (add-to-list 'completion-styles 'backend) ; Useless?