;;; +consult.el --- consult additions -*- lexical-binding: t -*- ;;; Code: (defun +consult-project-root () "Return either the current project, or the VC root, of current file." (if (and (functionp 'project-current) (project-current)) (car (project-roots (project-current))) (vc-root-dir))) ;;; Cribbed functions ;; https://github.com/minad/consult/wiki (defun consult--orderless-regexp-compiler (input type &rest _) (setq input (orderless-pattern-compiler input)) (cons (mapcar (lambda (r) (consult--convert-regexp r type)) input) (lambda (str) (orderless--highlight input str)))) (defmacro consult-history-to-modes (map-hook-alist) (let (defuns) (dolist (map-hook map-hook-alist) (let ((map-name (symbol-name (car map-hook))) (key-defs `(progn (define-key ,(car map-hook) (kbd "M-r") (function consult-history)) (define-key ,(car map-hook) (kbd "M-s") nil)))) (push (if (cdr map-hook) `(add-hook ',(cdr map-hook) (defun ,(intern (concat map-name "@consult-history-bind")) nil ,(concat "Bind `consult-history' to M-r in " map-name ".\n" "Defined by `consult-history-to-modes'.") ,key-defs)) key-defs) defuns))) `(progn ,@ (nreverse defuns)))) (provide '+consult) ;;; +consult.el ends here