diff --git a/layers/+completion/helm/funcs.el b/layers/+completion/helm/funcs.el index 36c3e80ab..deb50a6f6 100644 --- a/layers/+completion/helm/funcs.el +++ b/layers/+completion/helm/funcs.el @@ -179,6 +179,14 @@ Ensure that helm is required before calling FUNC." (interactive) (helm-exit-and-execute-action 'spacemacs//helm-find-files-edit)) +(defun spacemacs/helm-jump-in-buffer () + "Jump in buffer using `imenu' facilities and helm." + (interactive) + (call-interactively + (cond + ((eq major-mode 'org-mode) 'helm-org-in-buffer-headings) + (t 'helm-semantic-or-imenu)))) + ;; Generalized next-error interface diff --git a/layers/+completion/helm/packages.el b/layers/+completion/helm/packages.el index fbe7c6b6d..af0fa5a79 100644 --- a/layers/+completion/helm/packages.el +++ b/layers/+completion/helm/packages.el @@ -24,6 +24,7 @@ helm-swoop helm-themes (helm-spacemacs-help :location local) + imenu popwin projectile )) @@ -581,6 +582,9 @@ Search for a search tool in the order provided by `dotspacemacs-search-tools'." (spacemacs/set-leader-keys "Ts" 'helm-themes))) +(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) diff --git a/layers/+completion/ivy/packages.el b/layers/+completion/ivy/packages.el index 9df62d11b..d79dd21a9 100644 --- a/layers/+completion/ivy/packages.el +++ b/layers/+completion/ivy/packages.el @@ -17,6 +17,7 @@ evil flx helm-make + imenu ivy ivy-hydra (ivy-spacemacs-help :location local) @@ -133,6 +134,9 @@ "cc" 'helm-make-projectile "cm" 'helm-make)))) +(defun ivy/post-init-imenu () + (spacemacs/set-leader-keys "ji" 'counsel-imenu)) + (defun ivy/init-ivy () (use-package ivy :config diff --git a/layers/+distributions/spacemacs-base/funcs.el b/layers/+distributions/spacemacs-base/funcs.el index f64d30f4e..afa347759 100644 --- a/layers/+distributions/spacemacs-base/funcs.el +++ b/layers/+distributions/spacemacs-base/funcs.el @@ -61,19 +61,6 @@ (let ((message-log-max nil)) (apply 'message msg args))) -(defun spacemacs/jump-in-buffer () - (interactive) - (call-interactively - (cond - ((and (configuration-layer/layer-usedp 'helm) - (eq major-mode 'org-mode)) - 'helm-org-in-buffer-headings) - ((configuration-layer/layer-usedp 'helm) - 'helm-semantic-or-imenu) - ((configuration-layer/layer-usedp 'ivy) - 'counsel-imenu) - (t 'imenu)))) - (defun spacemacs/split-and-new-line () "Split a quoted string or s-expression and insert a new line with auto-indent." diff --git a/layers/+distributions/spacemacs-base/keybindings.el b/layers/+distributions/spacemacs-base/keybindings.el index 80760db28..499671584 100644 --- a/layers/+distributions/spacemacs-base/keybindings.el +++ b/layers/+distributions/spacemacs-base/keybindings.el @@ -221,7 +221,6 @@ "j$" 'spacemacs/push-mark-and-goto-end-of-line "jF" 'find-function-at-point "jf" 'find-function - "ji" 'spacemacs/jump-in-buffer "jv" 'find-variable "jV" 'find-variable-at-point) diff --git a/layers/+distributions/spacemacs-base/packages.el b/layers/+distributions/spacemacs-base/packages.el index da9759abb..8d2cd9bd7 100644 --- a/layers/+distributions/spacemacs-base/packages.el +++ b/layers/+distributions/spacemacs-base/packages.el @@ -32,6 +32,7 @@ (holy-mode :location local :step pre) (hybrid-mode :location local :step pre) (image-mode :location built-in) + (imenu :location built-in) (linum :location built-in) (occur-mode :location built-in) (package-menu :location built-in) @@ -225,6 +226,11 @@ :config (evilified-state-evilify-map image-mode-map :mode image-mode))) +(defun spacemacs-base/init-imenu () + (use-package imenu + :defer t + :init (spacemacs/set-leader-keys "ji" 'imenu))) + (defun spacemacs-base/init-linum () (when dotspacemacs-line-numbers (add-hook 'prog-mode-hook 'linum-mode)