ambevar-dotfiles/.emacs.d/lisp/init-lisp.el

52 lines
1.8 KiB
EmacsLisp

;;; Lisp
(require 'init-lispy)
(add-hook 'lisp-mode-hook 'ambrevar/turn-on-complete-filename)
(add-hook 'lisp-mode-hook 'ambrevar/turn-on-tab-width-to-8) ; Because some existing code uses tabs.
(add-hook 'lisp-mode-hook 'ambrevar/turn-off-indent-tabs) ; Should not use tabs.
(add-hook 'lisp-mode-hook 'ambrevar/init-lispy)
(when (fboundp 'rainbow-delimiters-mode)
(add-hook 'lisp-mode-hook #'rainbow-delimiters-mode))
;; Read CLHS locally.
(or
;; Quicklisp package.
(load "~/.quicklisp/clhs-use-local.el" 'noerror)
;; Unofficial Guix package (non-free license).
(when (require 'clhs nil 'noerror)
(clhs-setup)))
(with-eval-after-load 'sly
(require 'init-sly))
(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)