From dab3bfe9803dfa11cf9388bd3c4117dc7883fc5b Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Fri, 29 Jan 2021 12:15:02 +0100 Subject: [PATCH] Lisp: Enable #p completion. --- .emacs.d/lisp/init-lisp.el | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.emacs.d/lisp/init-lisp.el b/.emacs.d/lisp/init-lisp.el index a18bcc84..405c368c 100644 --- a/.emacs.d/lisp/init-lisp.el +++ b/.emacs.d/lisp/init-lisp.el @@ -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)