(require 'consult)
(setq consult-async-refresh-delay 0.2)
(consult-customize
consult-ripgrep consult-git-grep consult-grep
consult-bookmark consult-recent-file consult-xref
consult--source-recent-file
consult--source-project-recent-file
consult--source-bookmark
:preview-key (kbd "M-."))
(defun consult-line-symbol-at-point (&optional at-point)
(interactive "P")
(if at-point
(consult-line (thing-at-point 'symbol))
(consult-line)))
(define-key isearch-mode-map (kbd "C-:") #'consult-isearch-history)
(define-key isearch-mode-map (kbd "C-;") #'consult-line)
(global-set-key (kbd "C-x b") #'consult-buffer)
(setq consult--source-recent-file
`(:name "File"
:narrow ?f
:category file
:face consult-file
:history file-name-history
:action ,#'consult--file-action
:enabled ,(lambda () recentf-mode)
:items ,recentf-list))
(global-set-key (kbd "C-z C-n") #'consult-recent-file)
(global-set-key (kbd "M-g e") 'consult-compile-error)
(global-set-key (kbd "M-g f") 'consult-flymake)
(global-set-key (kbd "M-g g") 'consult-goto-line)
(global-set-key (kbd "M-g M-g") 'consult-goto-line)
(global-set-key (kbd "M-g o") 'consult-outline)
(global-set-key (kbd "M-g m") 'consult-mark)
(global-set-key (kbd "M-g k") 'consult-global-mark)
(global-set-key (kbd "M-g i") 'consult-imenu)
(global-set-key (kbd "M-g I") 'consult-imenu-multi)
(global-set-key (kbd "M-y") 'consult-yank-pop)
(global-set-key (kbd "M-s f") 'consult-find)
(global-set-key (kbd "M-s F") 'consult-locate)
(global-set-key (kbd "M-s g") 'consult-grep)
(global-set-key (kbd "M-s G") 'consult-git-grep)
(global-set-key (kbd "M-s r") 'consult-ripgrep)
(global-set-key (kbd "M-s l") 'consult-line)
(global-set-key (kbd "M-s L") 'consult-line-multi)
(global-set-key (kbd "M-s m") 'consult-multi-occur)
(global-set-key (kbd "M-s k") 'consult-keep-lines)
(global-set-key (kbd "M-s u") 'consult-focus-lines)
(setq consult-goto-line-numbers nil)
(require 'perspective)
(declare-function persp-get-buffer-names "perspective")
(with-eval-after-load "perspective"
(consult-customize consult--source-buffer :hidden t :default nil)
(defvar consult--source-perspective
`(:name "Perspective"
:narrow ?s
:category buffer
:state ,#'consult--buffer-state
:default t
:items ,#'persp-get-buffer-names))
(add-to-list 'consult-buffer-sources consult--source-perspective))