Lisp: Enable #p completion.

master
Pierre Neidhardt 2021-01-29 12:15:02 +01:00
parent 25669b4223
commit dab3bfe980
1 changed files with 24 additions and 0 deletions

View File

@ -23,4 +23,28 @@
(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)