SLY: Fix #p completion with Company.

master
Pierre Neidhardt 2021-02-21 18:32:11 +01:00
parent 1f93b69f87
commit fc72ca2dd8
2 changed files with 27 additions and 25 deletions

View File

@ -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)

View File

@ -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?