b0f77612e3
Fixes #9826
749 lines
30 KiB
EmacsLisp
749 lines
30 KiB
EmacsLisp
;;; packages.el --- Helm Layer packages File
|
|
;;
|
|
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
|
|
;;
|
|
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
|
;; URL: https://github.com/syl20bnr/spacemacs
|
|
;;
|
|
;; This file is not part of GNU Emacs.
|
|
;;
|
|
;;; License: GPLv3
|
|
|
|
(setq helm-packages
|
|
'(
|
|
ace-jump-helm-line
|
|
auto-highlight-symbol
|
|
bookmark
|
|
helm
|
|
helm-ag
|
|
helm-descbinds
|
|
helm-flx
|
|
helm-make
|
|
helm-mode-manager
|
|
helm-projectile
|
|
helm-swoop
|
|
helm-themes
|
|
(helm-spacemacs-help :location local)
|
|
(helm-spacemacs-faq :location local)
|
|
helm-xref
|
|
imenu
|
|
persp-mode
|
|
popwin
|
|
projectile
|
|
))
|
|
|
|
;; Initialization of packages
|
|
|
|
(defun helm/init-ace-jump-helm-line ()
|
|
(use-package ace-jump-helm-line
|
|
:defer t
|
|
:init
|
|
(with-eval-after-load 'helm
|
|
(define-key helm-map (kbd "C-q") 'ace-jump-helm-line))))
|
|
|
|
(defun helm/pre-init-auto-highlight-symbol ()
|
|
(spacemacs|use-package-add-hook auto-highlight-symbol
|
|
:post-init
|
|
;; add some functions to ahs transient states
|
|
(setq spacemacs--symbol-highlight-transient-state-doc
|
|
(concat spacemacs--symbol-highlight-transient-state-doc
|
|
" [_b_] search buffers [_/_] search proj [_f_] search files [_s_] swoop"))
|
|
(spacemacs/transient-state-register-add-bindings 'symbol-highlight
|
|
'(("/" spacemacs/helm-project-smart-do-search-region-or-symbol :exit t)
|
|
("b" spacemacs/helm-buffers-smart-do-search-region-or-symbol :exit t)
|
|
("f" spacemacs/helm-files-smart-do-search-region-or-symbol :exit t)
|
|
("s" spacemacs/helm-swoop-region-or-symbol :exit t)))))
|
|
|
|
(defun helm/post-init-bookmark ()
|
|
(spacemacs/set-leader-keys "fb" 'helm-filtered-bookmarks))
|
|
|
|
(defun helm/init-helm ()
|
|
(use-package helm
|
|
:defer t
|
|
:init
|
|
(progn
|
|
(add-hook 'helm-cleanup-hook #'spacemacs//helm-cleanup)
|
|
;; key bindings
|
|
;; Use helm to provide :ls, unless ibuffer is used
|
|
(unless (configuration-layer/package-used-p 'ibuffer)
|
|
(evil-ex-define-cmd "buffers" 'helm-buffers-list))
|
|
;; use helm by default for M-x, C-x C-f, and C-x b
|
|
(unless (configuration-layer/package-used-p 'smex)
|
|
(global-set-key (kbd "M-x") 'helm-M-x))
|
|
(global-set-key (kbd "C-x C-f") 'spacemacs/helm-find-files)
|
|
(global-set-key (kbd "C-x b") 'helm-buffers-list)
|
|
;; use helm everywhere
|
|
(spacemacs/set-leader-keys
|
|
"<f1>" 'helm-apropos
|
|
"a'" 'helm-available-repls
|
|
"bb" 'helm-mini
|
|
"Cl" 'helm-colors
|
|
"ff" 'spacemacs/helm-find-files
|
|
"fF" 'helm-find-files
|
|
"fL" 'helm-locate
|
|
"fr" 'helm-recentf
|
|
"hdd" 'helm-apropos
|
|
"hdF" 'spacemacs/helm-faces
|
|
"hi" 'helm-info-at-point
|
|
"hm" 'helm-man-woman
|
|
"iu" 'helm-ucs
|
|
"jI" 'helm-imenu-in-all-buffers
|
|
"rm" 'helm-all-mark-rings
|
|
"rl" 'helm-resume
|
|
"rr" 'helm-register
|
|
"rs" 'spacemacs/resume-last-search-buffer
|
|
"ry" 'helm-show-kill-ring
|
|
"sl" 'spacemacs/resume-last-search-buffer
|
|
"sj" 'spacemacs/helm-jump-in-buffer)
|
|
;; search with grep
|
|
(spacemacs/set-leader-keys
|
|
"sgb" 'spacemacs/helm-buffers-do-grep
|
|
"sgB" 'spacemacs/helm-buffers-do-grep-region-or-symbol
|
|
"sgf" 'spacemacs/helm-files-do-grep
|
|
"sgF" 'spacemacs/helm-files-do-grep-region-or-symbol
|
|
"sgg" 'spacemacs/helm-file-do-grep
|
|
"sgG" 'spacemacs/helm-file-do-grep-region-or-symbol)
|
|
;; various key bindings
|
|
(spacemacs||set-helm-key "fel" helm-locate-library)
|
|
(spacemacs||set-helm-key "hdm" describe-mode)
|
|
(spacemacs||set-helm-key "sww" helm-wikipedia-suggest)
|
|
(spacemacs||set-helm-key "swg" helm-google-suggest)
|
|
(with-eval-after-load 'helm-files
|
|
(define-key helm-find-files-map
|
|
(kbd "C-c C-e") 'spacemacs/helm-find-files-edit))
|
|
;; Add minibuffer history with `helm-minibuffer-history'
|
|
(define-key minibuffer-local-map (kbd "C-c C-l") 'helm-minibuffer-history)
|
|
;; define the key binding at the very end in order to allow the user
|
|
;; to overwrite any key binding
|
|
(add-hook 'emacs-startup-hook
|
|
(lambda ()
|
|
(unless (configuration-layer/package-used-p 'smex)
|
|
(spacemacs/set-leader-keys
|
|
dotspacemacs-emacs-command-key 'helm-M-x))))
|
|
(helm-mode))
|
|
:config
|
|
(progn
|
|
(spacemacs|hide-lighter helm-mode)
|
|
(advice-add 'helm-grep-save-results-1 :after 'spacemacs//gne-init-helm-grep)
|
|
;; helm-locate uses es (from everything on windows which doesnt like fuzzy)
|
|
(helm-locate-set-command)
|
|
(setq helm-locate-fuzzy-match (string-match "locate" helm-locate-command))
|
|
;; alter helm-bookmark key bindings to be simpler
|
|
(defun simpler-helm-bookmark-keybindings ()
|
|
(define-key helm-bookmark-map (kbd "C-d") 'helm-bookmark-run-delete)
|
|
(define-key helm-bookmark-map (kbd "C-e") 'helm-bookmark-run-edit)
|
|
(define-key helm-bookmark-map
|
|
(kbd "C-f") 'helm-bookmark-toggle-filename)
|
|
(define-key helm-bookmark-map
|
|
(kbd "C-o") 'helm-bookmark-run-jump-other-window)
|
|
(define-key helm-bookmark-map (kbd "C-/") 'helm-bookmark-help))
|
|
(with-eval-after-load 'helm-bookmark
|
|
(simpler-helm-bookmark-keybindings))
|
|
(define-key helm-buffer-map (kbd "RET") 'spacemacs/helm-find-buffers-windows)
|
|
(define-key helm-generic-files-map (kbd "RET") 'spacemacs/helm-find-files-windows)
|
|
(define-key helm-find-files-map (kbd "RET") 'spacemacs/helm-find-files-windows))))
|
|
|
|
(defun helm/init-helm-ag ()
|
|
(use-package helm-ag
|
|
:defer t
|
|
:init
|
|
(progn
|
|
(defun spacemacs//helm-do-ag-region-or-symbol (func &optional dir)
|
|
"Search with `ag' with a default input."
|
|
(require 'helm-ag)
|
|
(cl-letf* (((symbol-value 'helm-ag-insert-at-point) 'symbol)
|
|
;; make thing-at-point choosing the active region first
|
|
((symbol-function 'this-fn) (symbol-function 'thing-at-point))
|
|
((symbol-function 'thing-at-point)
|
|
(lambda (thing)
|
|
(let ((res (if (region-active-p)
|
|
(buffer-substring-no-properties
|
|
(region-beginning) (region-end))
|
|
(this-fn thing))))
|
|
(when res (rxt-quote-pcre res))))))
|
|
(funcall func dir)))
|
|
|
|
(defun spacemacs//helm-do-search-find-tool (base tools default-inputp)
|
|
"Create a cond form given a TOOLS string list and evaluate it."
|
|
(eval
|
|
`(cond
|
|
,@(mapcar
|
|
(lambda (x)
|
|
`((executable-find ,x)
|
|
',(let ((func
|
|
(intern
|
|
(format (if default-inputp
|
|
"spacemacs/%s-%s-region-or-symbol"
|
|
"spacemacs/%s-%s")
|
|
base x))))
|
|
(if (fboundp func)
|
|
func
|
|
(intern (format "%s-%s" base x))))))
|
|
tools)
|
|
(t 'helm-do-grep))))
|
|
|
|
;; Search in current file ----------------------------------------------
|
|
|
|
(defun spacemacs/helm-file-do-ag (&optional _)
|
|
"Wrapper to execute `helm-ag-this-file.'"
|
|
(interactive)
|
|
(helm-do-ag-this-file))
|
|
|
|
(defun spacemacs/helm-file-do-ag-region-or-symbol ()
|
|
"Search in current file with `ag' using a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-file-do-ag))
|
|
|
|
(defun spacemacs/helm-file-smart-do-search (&optional default-inputp)
|
|
"Search in current file using `dotspacemacs-search-tools'.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'
|
|
If DEFAULT-INPUTP is non nil then the current region or symbol at point
|
|
are used as default input."
|
|
(interactive)
|
|
(call-interactively
|
|
(spacemacs//helm-do-search-find-tool "helm-file-do"
|
|
dotspacemacs-search-tools
|
|
default-inputp)))
|
|
|
|
(defun spacemacs/helm-file-smart-do-search-region-or-symbol ()
|
|
"Search in current file using `dotspacemacs-search-tools' with
|
|
default input.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'."
|
|
(interactive)
|
|
(spacemacs/helm-file-smart-do-search t))
|
|
|
|
;; Search in files -----------------------------------------------------
|
|
|
|
(defun spacemacs/helm-files-do-ag (&optional dir)
|
|
"Search in files with `ag' using a default input."
|
|
(interactive)
|
|
(helm-do-ag dir))
|
|
|
|
(defun spacemacs/helm-files-do-ag-region-or-symbol ()
|
|
"Search in files with `ag' using a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-files-do-ag))
|
|
|
|
(defun spacemacs/helm-files-do-ack (&optional dir)
|
|
"Search in files with `ack'."
|
|
(interactive)
|
|
(let ((helm-ag-base-command "ack --nocolor --nogroup"))
|
|
(helm-do-ag dir)))
|
|
|
|
(defun spacemacs/helm-files-do-ack-region-or-symbol ()
|
|
"Search in files with `ack' using a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-files-do-ack))
|
|
|
|
(defun spacemacs/helm-files-do-pt (&optional dir)
|
|
"Search in files with `pt'."
|
|
(interactive)
|
|
(let ((helm-ag-base-command "pt -e --nocolor --nogroup"))
|
|
(helm-do-ag dir)))
|
|
|
|
(defun spacemacs/helm-files-do-pt-region-or-symbol ()
|
|
"Search in files with `pt' using a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-files-do-pt))
|
|
|
|
(defun spacemacs/helm-files-do-rg (&optional dir)
|
|
"Search in files with `rg'."
|
|
(interactive)
|
|
;; --line-number forces line numbers (disabled by default on windows)
|
|
;; no --vimgrep because it adds column numbers that wgrep can't handle
|
|
;; see https://github.com/syl20bnr/spacemacs/pull/8065
|
|
(let* ((root-helm-ag-base-command "rg --smart-case --no-heading --color never --line-number")
|
|
(helm-ag-base-command (if spacemacs-helm-rg-max-column-number
|
|
(concat root-helm-ag-base-command " --max-columns " (number-to-string spacemacs-helm-rg-max-column-number))
|
|
root-helm-ag-base-command)))
|
|
(helm-do-ag dir)))
|
|
|
|
(defun spacemacs/helm-files-do-rg-region-or-symbol ()
|
|
"Search in files with `rg' using a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-files-do-rg))
|
|
|
|
(defun spacemacs/helm-files-smart-do-search (&optional default-inputp)
|
|
"Search in files using `dotspacemacs-search-tools'.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'
|
|
If DEFAULT-INPUTP is non nil then the current region or symbol at point
|
|
are used as default input."
|
|
(interactive)
|
|
(call-interactively
|
|
(spacemacs//helm-do-search-find-tool "helm-files-do"
|
|
dotspacemacs-search-tools
|
|
default-inputp)))
|
|
|
|
(defun spacemacs/helm-files-smart-do-search-region-or-symbol ()
|
|
"Search in files using `dotspacemacs-search-tools' with default input.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'."
|
|
(interactive)
|
|
(spacemacs/helm-files-smart-do-search t))
|
|
|
|
;; Search in current dir -----------------------------------------------
|
|
|
|
(defun spacemacs/helm-dir-do-ag ()
|
|
"Search in current directory with `ag'."
|
|
(interactive)
|
|
(spacemacs/helm-files-do-ag default-directory))
|
|
|
|
(defun spacemacs/helm-dir-do-ag-region-or-symbol ()
|
|
"Search in current directory with `ag' with a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-files-do-ag default-directory))
|
|
|
|
(defun spacemacs/helm-dir-do-ack ()
|
|
"Search in current directory with `ack'."
|
|
(interactive)
|
|
(spacemacs/helm-files-do-ack default-directory))
|
|
|
|
(defun spacemacs/helm-dir-do-ack-region-or-symbol ()
|
|
"Search in current directory with `ack' with a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-files-do-ack default-directory))
|
|
|
|
(defun spacemacs/helm-dir-do-pt ()
|
|
"Search in current directory with `pt'."
|
|
(interactive)
|
|
(spacemacs/helm-files-do-pt default-directory))
|
|
|
|
(defun spacemacs/helm-dir-do-pt-region-or-symbol ()
|
|
"Search in current directory with `pt' with a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-files-do-pt default-directory))
|
|
|
|
(defun spacemacs/helm-dir-do-rg ()
|
|
"Search in current directory with `rg'."
|
|
(interactive)
|
|
(spacemacs/helm-files-do-rg default-directory))
|
|
|
|
(defun spacemacs/helm-dir-do-rg-region-or-symbol ()
|
|
"Search in current directory with `rg' with a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-files-do-rg default-directory))
|
|
|
|
(defun spacemacs/helm-dir-smart-do-search (&optional default-inputp)
|
|
"Search in current directory using `dotspacemacs-search-tools'.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'
|
|
If DEFAULT-INPUTP is non nil then the current region or symbol at point
|
|
are used as default input."
|
|
(interactive)
|
|
(call-interactively
|
|
(spacemacs//helm-do-search-find-tool "helm-dir-do"
|
|
dotspacemacs-search-tools
|
|
default-inputp)))
|
|
|
|
(defun spacemacs/helm-dir-smart-do-search-region-or-symbol ()
|
|
"Search in current directory using `dotspacemacs-search-tools'.
|
|
with default input.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'."
|
|
(interactive)
|
|
(spacemacs/helm-dir-smart-do-search t))
|
|
|
|
;; Search in buffers ---------------------------------------------------
|
|
|
|
(defun spacemacs/helm-buffers-do-ag (&optional _)
|
|
"Wrapper to execute `helm-ag-buffers.'"
|
|
(interactive)
|
|
(helm-do-ag-buffers))
|
|
|
|
(defun spacemacs/helm-buffers-do-ag-region-or-symbol ()
|
|
"Search in opened buffers with `ag' with a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-buffers-do-ag))
|
|
|
|
(defun spacemacs/helm-buffers-do-ack (&optional _)
|
|
"Search in opened buffers with `ack'."
|
|
(interactive)
|
|
(let ((helm-ag-base-command "ack --nocolor --nogroup"))
|
|
(helm-do-ag-buffers)))
|
|
|
|
(defun spacemacs/helm-buffers-do-ack-region-or-symbol ()
|
|
"Search in opened buffers with `ack' with a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-buffers-do-ack))
|
|
|
|
(defun spacemacs/helm-buffers-do-pt (&optional _)
|
|
"Search in opened buffers with `pt'."
|
|
(interactive)
|
|
(let ((helm-ag-base-command "pt -e --nocolor --nogroup"))
|
|
(helm-do-ag-buffers)))
|
|
|
|
(defun spacemacs/helm-buffers-do-pt-region-or-symbol ()
|
|
"Search in opened buffers with `pt' using a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-buffers-do-pt))
|
|
|
|
(defun spacemacs/helm-buffers-do-rg (&optional _)
|
|
"Search in opened buffers with `rg'."
|
|
(interactive)
|
|
;; --line-number forces line numbers (disabled by default on windows)
|
|
;; no --vimgrep because it adds column numbers that wgrep can't handle
|
|
;; see https://github.com/syl20bnr/spacemacs/pull/8065
|
|
(let ((helm-ag-base-command "rg --smart-case --no-heading --color never --line-number --max-columns 150"))
|
|
(helm-do-ag-buffers)))
|
|
|
|
(defun spacemacs/helm-buffers-do-rg-region-or-symbol ()
|
|
"Search in opened buffers with `rg' using a default input."
|
|
(interactive)
|
|
(spacemacs//helm-do-ag-region-or-symbol 'spacemacs/helm-buffers-do-rg))
|
|
|
|
(defun spacemacs/helm-buffers-smart-do-search (&optional default-inputp)
|
|
"Search in opened buffers using `dotspacemacs-search-tools'.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'
|
|
If DEFAULT-INPUTP is non nil then the current region or symbol at point
|
|
are used as default input."
|
|
(interactive)
|
|
(call-interactively
|
|
(spacemacs//helm-do-search-find-tool "helm-buffers-do"
|
|
dotspacemacs-search-tools
|
|
default-inputp)))
|
|
|
|
(defun spacemacs/helm-buffers-smart-do-search-region-or-symbol ()
|
|
"Search in opened buffers using `dotspacemacs-search-tools' with
|
|
default input.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'."
|
|
(interactive)
|
|
(spacemacs/helm-buffers-smart-do-search t))
|
|
|
|
;; Search in project ---------------------------------------------------
|
|
|
|
(defun spacemacs/helm-project-do-ag ()
|
|
"Search in current project with `ag'."
|
|
(interactive)
|
|
(let ((dir (projectile-project-root)))
|
|
(if dir
|
|
(helm-do-ag dir)
|
|
(message "error: Not in a project."))))
|
|
|
|
(defun spacemacs/helm-project-do-ag-region-or-symbol ()
|
|
"Search in current project with `ag' using a default input."
|
|
(interactive)
|
|
(let ((dir (projectile-project-root)))
|
|
(if dir
|
|
(spacemacs//helm-do-ag-region-or-symbol 'helm-do-ag dir)
|
|
(message "error: Not in a project."))))
|
|
|
|
(defun spacemacs/helm-project-do-ack ()
|
|
"Search in current project with `ack'."
|
|
(interactive)
|
|
(let ((dir (projectile-project-root)))
|
|
(if dir
|
|
(spacemacs/helm-files-do-ack dir)
|
|
(message "error: Not in a project."))))
|
|
|
|
(defun spacemacs/helm-project-do-ack-region-or-symbol ()
|
|
"Search in current project with `ack' using a default input."
|
|
(interactive)
|
|
(let ((dir (projectile-project-root)))
|
|
(if dir
|
|
(spacemacs//helm-do-ag-region-or-symbol
|
|
'spacemacs/helm-files-do-ack dir)
|
|
(message "error: Not in a project."))))
|
|
|
|
(defun spacemacs/helm-project-do-pt ()
|
|
"Search in current project with `pt'."
|
|
(interactive)
|
|
(let ((dir (projectile-project-root)))
|
|
(if dir
|
|
(spacemacs/helm-files-do-pt dir)
|
|
(message "error: Not in a project."))))
|
|
|
|
(defun spacemacs/helm-project-do-pt-region-or-symbol ()
|
|
"Search in current project with `pt' using a default input."
|
|
(interactive)
|
|
(let ((dir (projectile-project-root)))
|
|
(if dir
|
|
(spacemacs//helm-do-ag-region-or-symbol
|
|
'spacemacs/helm-files-do-pt dir)
|
|
(message "error: Not in a project."))))
|
|
|
|
(defun spacemacs/helm-project-do-rg ()
|
|
"Search in current project with `rg'."
|
|
(interactive)
|
|
(let ((dir (projectile-project-root)))
|
|
(if dir
|
|
(spacemacs/helm-files-do-rg dir)
|
|
(message "error: Not in a project."))))
|
|
|
|
(defun spacemacs/helm-project-do-rg-region-or-symbol ()
|
|
"Search in current project with `rg' using a default input."
|
|
(interactive)
|
|
(let ((dir (projectile-project-root)))
|
|
(if dir
|
|
(spacemacs//helm-do-ag-region-or-symbol
|
|
'spacemacs/helm-files-do-rg dir)
|
|
(message "error: Not in a project."))))
|
|
|
|
(defun spacemacs/helm-project-smart-do-search (&optional default-inputp)
|
|
"Search in current project using `dotspacemacs-search-tools'.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'
|
|
If DEFAULT-INPUTP is non nil then the current region or symbol at point
|
|
are used as default input."
|
|
(interactive)
|
|
(let ((projectile-require-project-root nil))
|
|
(call-interactively
|
|
(spacemacs//helm-do-search-find-tool "helm-project-do"
|
|
dotspacemacs-search-tools
|
|
default-inputp))))
|
|
|
|
(defun spacemacs/helm-project-smart-do-search-region-or-symbol ()
|
|
"Search in current project using `dotspacemacs-search-tools' with
|
|
default input.
|
|
Search for a search tool in the order provided by `dotspacemacs-search-tools'."
|
|
(interactive)
|
|
(spacemacs/helm-project-smart-do-search t))
|
|
|
|
;; This overrides the default C-s action in helm-projectile-switch-project
|
|
;; to search using rg/ag/pt/whatever instead of just grep
|
|
(with-eval-after-load 'helm-projectile
|
|
(defun spacemacs/helm-project-smart-do-search-in-dir (dir)
|
|
(interactive)
|
|
(let ((default-directory dir))
|
|
(spacemacs/helm-project-smart-do-search)))
|
|
(define-key helm-projectile-projects-map
|
|
(kbd "C-s")
|
|
(lambda ()
|
|
(interactive)
|
|
(helm-exit-and-execute-action
|
|
'spacemacs/helm-project-smart-do-search-in-dir))))
|
|
|
|
;; evilify the helm-grep buffer
|
|
(evilified-state-evilify helm-grep-mode helm-grep-mode-map
|
|
(kbd "RET") 'helm-grep-mode-jump-other-window
|
|
(kbd "q") 'quit-window)
|
|
|
|
(spacemacs/set-leader-keys
|
|
;; helm-ag marks
|
|
"s`" 'helm-ag-pop-stack
|
|
;; opened buffers scope
|
|
"sb" 'spacemacs/helm-buffers-smart-do-search
|
|
"sB" 'spacemacs/helm-buffers-smart-do-search-region-or-symbol
|
|
"sab" 'helm-do-ag-buffers
|
|
"saB" 'spacemacs/helm-buffers-do-ag-region-or-symbol
|
|
"skb" 'spacemacs/helm-buffers-do-ack
|
|
"skB" 'spacemacs/helm-buffers-do-ack-region-or-symbol
|
|
"srb" 'spacemacs/helm-buffers-do-rg
|
|
"srB" 'spacemacs/helm-buffers-do-rg-region-or-symbol
|
|
"stb" 'spacemacs/helm-buffers-do-pt
|
|
"stB" 'spacemacs/helm-buffers-do-pt-region-or-symbol
|
|
;; current file scope
|
|
"ss" 'spacemacs/helm-file-smart-do-search
|
|
"sS" 'spacemacs/helm-file-smart-do-search-region-or-symbol
|
|
"saa" 'helm-ag-this-file
|
|
"saA" 'spacemacs/helm-file-do-ag-region-or-symbol
|
|
;; files scope
|
|
"sf" 'spacemacs/helm-files-smart-do-search
|
|
"sF" 'spacemacs/helm-files-smart-do-search-region-or-symbol
|
|
"saf" 'helm-do-ag
|
|
"saF" 'spacemacs/helm-files-do-ag-region-or-symbol
|
|
"skf" 'spacemacs/helm-files-do-ack
|
|
"skF" 'spacemacs/helm-files-do-ack-region-or-symbol
|
|
"srf" 'spacemacs/helm-files-do-rg
|
|
"srF" 'spacemacs/helm-files-do-rg-region-or-symbol
|
|
"stf" 'spacemacs/helm-files-do-pt
|
|
"stF" 'spacemacs/helm-files-do-pt-region-or-symbol
|
|
;; current dir scope
|
|
"sd" 'spacemacs/helm-dir-smart-do-search
|
|
"sD" 'spacemacs/helm-dir-smart-do-search-region-or-symbol
|
|
"sad" 'spacemacs/helm-dir-do-ag
|
|
"saD" 'spacemacs/helm-dir-do-ag-region-or-symbol
|
|
"skd" 'spacemacs/helm-dir-do-ack
|
|
"skD" 'spacemacs/helm-dir-do-ack-region-or-symbol
|
|
"srd" 'spacemacs/helm-dir-do-rg
|
|
"srD" 'spacemacs/helm-dir-do-rg-region-or-symbol
|
|
"std" 'spacemacs/helm-dir-do-pt
|
|
"stD" 'spacemacs/helm-dir-do-pt-region-or-symbol
|
|
;; current project scope
|
|
"/" 'spacemacs/helm-project-smart-do-search
|
|
"*" 'spacemacs/helm-project-smart-do-search-region-or-symbol
|
|
"sp" 'spacemacs/helm-project-smart-do-search
|
|
"sP" 'spacemacs/helm-project-smart-do-search-region-or-symbol
|
|
"sap" 'spacemacs/helm-project-do-ag
|
|
"saP" 'spacemacs/helm-project-do-ag-region-or-symbol
|
|
"skp" 'spacemacs/helm-project-do-ack
|
|
"skP" 'spacemacs/helm-project-do-ack-region-or-symbol
|
|
"srp" 'spacemacs/helm-project-do-rg
|
|
"srP" 'spacemacs/helm-project-do-rg-region-or-symbol
|
|
"stp" 'spacemacs/helm-project-do-pt
|
|
"stP" 'spacemacs/helm-project-do-pt-region-or-symbol))
|
|
:config
|
|
(progn
|
|
(advice-add 'helm-ag--save-results :after 'spacemacs//gne-init-helm-ag)
|
|
(evil-define-key 'normal helm-ag-map "SPC" spacemacs-default-map)
|
|
(evilified-state-evilify helm-ag-mode helm-ag-mode-map
|
|
(kbd "RET") 'helm-ag-mode-jump-other-window
|
|
(kbd "gr") 'helm-ag--update-save-results
|
|
(kbd "q") 'quit-window))))
|
|
|
|
(defun helm/init-helm-descbinds ()
|
|
(use-package helm-descbinds
|
|
:defer t
|
|
:init
|
|
(progn
|
|
(setq helm-descbinds-window-style 'split)
|
|
(add-hook 'helm-mode-hook 'helm-descbinds-mode)
|
|
(spacemacs/set-leader-keys "?" 'helm-descbinds))))
|
|
|
|
(defun helm/pre-init-helm-flx ()
|
|
(spacemacs|use-package-add-hook helm
|
|
:pre-config
|
|
(progn
|
|
;; Disable for helm-find-files until performance issues are sorted
|
|
;; https://github.com/PythonNut/helm-flx/issues/9
|
|
(setq helm-flx-for-helm-find-files nil)
|
|
(helm-flx-mode))))
|
|
|
|
(defun helm/init-helm-flx ()
|
|
(use-package helm-flx :defer t))
|
|
|
|
(defun helm/init-helm-make ()
|
|
(use-package helm-make
|
|
:defer t
|
|
:init
|
|
(spacemacs/set-leader-keys
|
|
"cc" 'helm-make-projectile
|
|
"cm" 'helm-make)))
|
|
|
|
(defun helm/init-helm-mode-manager ()
|
|
(use-package helm-mode-manager
|
|
:defer t
|
|
:init
|
|
(spacemacs/set-leader-keys
|
|
"hM" 'helm-switch-major-mode
|
|
;; "hm" 'helm-disable-minor-mode
|
|
"h C-m" 'helm-enable-minor-mode)))
|
|
|
|
(defun helm/pre-init-helm-projectile ()
|
|
;; overwrite projectile settings
|
|
(spacemacs|use-package-add-hook projectile
|
|
:post-init
|
|
(progn
|
|
(setq projectile-switch-project-action 'helm-projectile)
|
|
(spacemacs/set-leader-keys
|
|
"pb" 'helm-projectile-switch-to-buffer
|
|
"pd" 'helm-projectile-find-dir
|
|
"pf" 'helm-projectile-find-file
|
|
"pF" 'helm-projectile-find-file-dwim
|
|
"ph" 'helm-projectile
|
|
"pp" 'helm-projectile-switch-project
|
|
"pr" 'helm-projectile-recentf
|
|
"sgp" 'helm-projectile-grep))))
|
|
|
|
(defun helm/init-helm-projectile ()
|
|
(use-package helm-projectile
|
|
:commands (helm-projectile-switch-to-buffer
|
|
helm-projectile-find-dir
|
|
helm-projectile-dired-find-dir
|
|
helm-projectile-recentf
|
|
helm-projectile-find-file
|
|
helm-projectile-grep
|
|
helm-projectile
|
|
helm-projectile-switch-project)
|
|
:init
|
|
(progn
|
|
;; needed for smart search if user's default tool is grep
|
|
(defalias 'spacemacs/helm-project-do-grep 'helm-projectile-grep)
|
|
(defalias
|
|
'spacemacs/helm-project-do-grep-region-or-symbol
|
|
'helm-projectile-grep))
|
|
:config (define-key helm-projectile-find-file-map
|
|
(kbd "RET") 'spacemacs/helm-find-files-windows)))
|
|
|
|
(defun helm/init-helm-spacemacs-help ()
|
|
(use-package helm-spacemacs-help
|
|
:commands (helm-spacemacs-help-dotspacemacs
|
|
helm-spacemacs-help
|
|
helm-spacemacs-help-faq
|
|
helm-spacemacs-help-layers
|
|
helm-spacemacs-help-packages
|
|
helm-spacemacs-help-docs
|
|
helm-spacemacs-help-toggles)
|
|
:init (spacemacs/set-leader-keys
|
|
"h ." 'helm-spacemacs-help-dotspacemacs
|
|
"h SPC" 'helm-spacemacs-help
|
|
"h f" 'helm-spacemacs-help-faq
|
|
"h l" 'helm-spacemacs-help-layers
|
|
"h p" 'helm-spacemacs-help-packages
|
|
"h r" 'helm-spacemacs-help-docs
|
|
"h t" 'helm-spacemacs-help-toggles)))
|
|
|
|
(defun helm/init-helm-spacemacs-faq ()
|
|
(use-package helm-spacemacs-faq
|
|
:commands helm-spacemacs-help-faq
|
|
:init (spacemacs/set-leader-keys "h f" 'helm-spacemacs-help-faq)))
|
|
|
|
(defun helm/init-helm-swoop ()
|
|
(use-package helm-swoop
|
|
:defer t
|
|
:init
|
|
(progn
|
|
(setq helm-swoop-split-with-multiple-windows t
|
|
helm-swoop-split-direction 'split-window-vertically
|
|
helm-swoop-speed-or-color t
|
|
helm-swoop-split-window-function 'helm-default-display-buffer
|
|
helm-swoop-pre-input-function (lambda () ""))
|
|
|
|
(defun spacemacs/helm-swoop-region-or-symbol ()
|
|
"Call `helm-swoop' with default input."
|
|
(interactive)
|
|
(let ((helm-swoop-pre-input-function
|
|
(lambda ()
|
|
(if (region-active-p)
|
|
(buffer-substring-no-properties (region-beginning)
|
|
(region-end))
|
|
(let ((thing (thing-at-point 'symbol t)))
|
|
(if thing thing ""))))))
|
|
(call-interactively 'helm-swoop)))
|
|
|
|
(spacemacs/set-leader-keys
|
|
"ss" 'helm-swoop
|
|
"sS" 'spacemacs/helm-swoop-region-or-symbol
|
|
"s C-s" 'helm-multi-swoop-all)
|
|
(defadvice helm-swoop (before add-evil-jump activate)
|
|
(evil-set-jump)))))
|
|
|
|
(defun helm/init-helm-themes ()
|
|
(use-package helm-themes
|
|
:defer t
|
|
:init
|
|
(spacemacs/set-leader-keys
|
|
"Ts" 'spacemacs/helm-themes)))
|
|
|
|
(defun helm/init-helm-xref ()
|
|
(use-package helm-xref
|
|
:commands (helm-xref-show-xrefs)
|
|
:init
|
|
(progn
|
|
;; This is required to make `xref-find-references' not give a prompt.
|
|
;; `xref-find-references' asks the identifier (which has no text property)
|
|
;; and then passes it to `lsp-mode', which requires the text property at
|
|
;; point to locate the references.
|
|
;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=29619
|
|
(setq xref-prompt-for-identifier '(not xref-find-definitions
|
|
xref-find-definitions-other-window
|
|
xref-find-definitions-other-frame
|
|
xref-find-references
|
|
spacemacs/jump-to-definition))
|
|
;; Use helm-xref to display `xref.el' results.
|
|
(setq xref-show-xrefs-function #'helm-xref-show-xrefs))))
|
|
|
|
|
|
(defun helm/post-init-imenu ()
|
|
(spacemacs/set-leader-keys "ji" 'spacemacs/helm-jump-in-buffer))
|
|
|
|
(defun helm/post-init-popwin ()
|
|
;; disable popwin-mode while Helm session is running
|
|
(add-hook 'helm-after-initialize-hook #'spacemacs//helm-prepare-display)
|
|
;; Restore popwin-mode after a Helm session finishes.
|
|
(add-hook 'helm-cleanup-hook #'spacemacs//helm-restore-display))
|
|
|
|
(defun helm/pre-init-persp-mode ()
|
|
(spacemacs|use-package-add-hook persp-mode
|
|
:post-config
|
|
(setq
|
|
spacemacs--persp-display-buffers-func 'spacemacs/persp-helm-mini
|
|
spacemacs--persp-display-perspectives-func 'spacemacs/helm-perspectives)))
|
|
|
|
(defun helm/post-init-projectile ()
|
|
(setq projectile-completion-system 'helm))
|