summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2020-10-12 21:48:59 -0400
committerKyle Meyer <kyle@kyleam.com>2020-12-12 02:07:58 -0500
commit149da2b62045fde28cc712d11d04f611b0163896 (patch)
treee2793870b700a6fcfd00abe4df210372cfff32dd
parent65fb8ac42e98e8ddbc974ef5426362205daa899f (diff)
downloademacs.d-149da2b62045fde28cc712d11d04f611b0163896.tar.gz
Switch to ivy
I've tried it for a few months and quite happy with it.
-rw-r--r--init.el177
-rw-r--r--lisp/km-helm.el85
-rw-r--r--lisp/km-hydra.el7
-rw-r--r--lisp/km-outline.el8
-rw-r--r--lisp/km-projectile.el6
5 files changed, 57 insertions, 226 deletions
diff --git a/init.el b/init.el
index 116b9ec..26e5d34 100644
--- a/init.el
+++ b/init.el
@@ -594,6 +594,28 @@
(after 'avy
(add-to-list 'avy-dispatch-alist (cons ?w #'km/avy-action-copy-line))))
+(use-package ivy
+ :diminish ivy-mode
+ :config
+ (setq ivy-count-format "(%d/%d) ")
+ (setq ivy-use-virtual-buffers t)
+ (setq ivy-virtual-abbreviate 'abbreviate)
+ (setq ivy-wrap t)
+
+ (define-key ivy-minibuffer-map (kbd "C-'") nil)
+ (define-key ivy-minibuffer-map (kbd "C-.") 'ivy-avy)
+
+ (ivy-mode 1))
+
+(use-package swiper
+ :bind (("M-s k" . swiper)))
+
+(use-package counsel
+ :chords (("jt" . counsel-buffer-or-recentf)
+ ("kx" . counsel-M-x))
+ :bind (("C-c l" . counsel-imenu)
+ ("M-y" . counsel-yank-pop)))
+
;;; Buffers and files
@@ -742,8 +764,8 @@
("t" . projectile-find-implementation-or-test-other-window))
:config
(setq projectile-find-dir-includes-top-level t
- projectile-completion-system 'helm
projectile-use-git-grep t)
+ (setq projectile-completion-system 'ivy)
(defun km/projectile-ignore-directory-p (name)
(or (file-remote-p name)
@@ -773,9 +795,15 @@
(def-projectile-commander-method ?c
"Run project compilation command."
(call-interactively 'projectile-compile-project))
+ (def-projectile-commander-method ?d
+ "Find directory in project."
+ (projectile-find-dir))
(def-projectile-commander-method ?D
"Find a project directory in other window."
(call-interactively 'projectile-find-dir-other-window))
+ (def-projectile-commander-method ?f
+ "Find project file in other window."
+ (call-interactively 'projectile-find-file))
(def-projectile-commander-method ?F
"Find project file in other window."
(call-interactively 'projectile-find-file-other-window))
@@ -788,6 +816,9 @@
(def-projectile-commander-method ?o
"Display a project buffer in other window."
(call-interactively 'projectile-display-buffer))
+ (def-projectile-commander-method ?j
+ "Find tag in project."
+ (projectile-find-tag))
(def-projectile-commander-method ?O
"Run multi-occur on project buffers."
(projectile-multi-occur))
@@ -798,37 +829,7 @@
"Run grep on project."
(call-interactively #'projectile-grep))
- (projectile-global-mode)
- (require 'helm-projectile))
-
-(use-package helm-projectile
- :config
- (bind-keys :map projectile-command-map
- ("b" . helm-projectile-switch-to-buffer)
- ("d" . helm-projectile-find-dir)
- ("f" . helm-projectile-find-file)
- ("F" . helm-projectile-find-file-in-known-projects)
- ("j" . helm-etags-select)
- ("p" . helm-projectile-switch-project)
- ("r" . helm-projectile-recentf))
- (def-projectile-commander-method ?b
- "Find project buffer."
- (call-interactively 'helm-projectile-switch-to-buffer))
- (def-projectile-commander-method ?d
- "Find directory in project."
- (helm-projectile-find-dir))
- (def-projectile-commander-method ?f
- "Open project file."
- (helm-projectile-find-file))
- (def-projectile-commander-method ?j
- "Find project tag."
- (helm-etags-select nil))
- (def-projectile-commander-method ?l
- "Run `helm-projectile-grep'."
- (helm-projectile-grep))
- (def-projectile-commander-method ?p
- "Switch project."
- (helm-projectile-switch-project)))
+ (projectile-global-mode))
(use-package km-projectile
:chords ("gp" . km/projectile-switch-project)
@@ -860,7 +861,17 @@
(km/projectile-view-file-other-window))
(def-projectile-commander-method ?w
"Save thing."
- (call-interactively #'km/projectile-save-thing))))
+ (call-interactively #'km/projectile-save-thing)))
+ :config
+ (after 'elisp-mode
+ (add-hook 'emacs-lisp-mode-hook
+ #'km/projectile-maybe-activate-xref-etags-mode))
+ (after 'scheme
+ (add-hook 'scheme-mode-hook
+ #'km/projectile-maybe-activate-xref-etags-mode))
+ (after 'python
+ (add-hook 'python-mode-hook
+ #'km/projectile-maybe-activate-xref-etags-mode)))
;;; Version control
@@ -1293,104 +1304,6 @@
(define-key km/org-prefix-map "." #'hydra-org-link-edit/body)))
-;;; Helm
-
-(use-package helm
- :config
- (setq helm-move-to-line-cycle-in-source t)
-
- (require 'km-helm)
- (require 'helm-mode))
-
-(use-package helm-config
- :config
- (global-set-key (kbd "C-x c") nil)
- (customize-set-value 'helm-command-prefix-key "C-c h"))
-
-(use-package helm-buffers
- :chords ("jt" . helm-mini))
-
-(use-package helm-files
- :chords ("jc" . helm-find-files)
- :config
- (setq helm-ff-newfile-prompt-p nil
- helm-ff-file-name-history-use-recentf t
- helm-ff-skip-boring-files t))
-
-(use-package helm-tags
- :config
- (advice-add 'helm-etags-all-tag-files
- :override
- (lambda ()
- (--when-let (helm-etags-get-tag-file)
- (list it)))
- '((name . "helm-etags-just-project-tags"))))
-
-(use-package km-helm
- :init
- (after 'helm-files
- (bind-keys :map helm-find-files-map
- ("C-c ." . km/helm-visit-in-dired)
- ("C-c b" . km/helm-find-file-below)
- ("C-c x" . km/helm-ff-org-open-file)
- ("C-c C-o" . km/helm-display-file)))
- (after 'helm-locate
- (bind-keys :map helm-generic-files-map
- ("C-c ." . km/helm-visit-in-dired)
- ("C-c b" . km/helm-find-file-below)
- ("C-c x" . km/helm-ff-org-open-file)
- ("C-c C-o" . km/helm-display-file)))
- (after 'helm-buffers
- (bind-keys :map helm-buffer-map
- ("C-c b" . km/helm-display-buffer-below)
- ("C-c C-o" . km/helm-display-buffer)))
- :config
- (after 'elisp-mode
- (add-hook 'emacs-lisp-mode-hook #'km/helm-maybe-override-xref))
- (after 'scheme
- (add-hook 'scheme-mode-hook #'km/helm-maybe-override-xref))
- (after 'python
- (add-hook 'python-mode-hook #'km/helm-maybe-override-xref)))
-
-(use-package helm-mode
- :diminish helm-mode
- :config
- (helm-mode 1)
-
- (add-to-list 'helm-mode-no-completion-in-region-in-modes 'message-mode))
-
-(use-package helm-command
- :chords ("kx" . helm-M-x))
-
-(use-package helm-swoop
- :init
- (setq helm-swoop-pre-input-function (lambda () ""))
-
- (define-key search-map "k" #'helm-swoop))
-
-(use-package helm-apropos
- :bind ("C-h a" . helm-apropos))
-
-(use-package helm-imenu
- :bind ("C-c l" . helm-imenu))
-
-(use-package helm-man
- :init (define-key km/external-map "m" #'helm-man-woman))
-
-(use-package helm-ring
- :bind (("M-y" . helm-show-kill-ring)
- ("C-x r i" . helm-register))
- :init
- (define-key km/editing-map "m" #'helm-mark-ring))
-
-(use-package helm-bookmark
- :bind ("C-x r b" . helm-bookmarks))
-
-(use-package helm-misc
- :config
- (define-key minibuffer-local-map (kbd "M-r") #'helm-minibuffer-history))
-
-
;;; Expansion
(use-package abbrev
@@ -1656,6 +1569,8 @@
x-select-enable-primary t))
(use-package man
+ :init
+ (define-key km/external-map "m" #'man)
:config
(setq Man-notify-method 'aggressive))
diff --git a/lisp/km-helm.el b/lisp/km-helm.el
deleted file mode 100644
index 7195de4..0000000
--- a/lisp/km-helm.el
+++ /dev/null
@@ -1,85 +0,0 @@
-;;; km-helm.el --- Helm configuration
-
-;; Copyright (C) 2012-2020 Kyle Meyer <kyle@kyleam.com>
-
-;; Author: Kyle Meyer <kyle@kyleam.com>
-;; URL: https://git.kyleam.com/emacs.d
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Code:
-
-(require 'helm)
-
-;;;###autoload
-(defun km/helm-display-buffer ()
- (interactive)
- (with-helm-alive-p
- (helm-exit-and-execute-action #'display-buffer)))
-
-;;;###autoload
-(defun km/helm-visit-in-dired ()
- (interactive)
- (with-helm-alive-p
- (helm-exit-and-execute-action #'helm-point-file-in-dired)))
-
-;;;###autoload
-(defun km/helm-display-file ()
- (interactive)
- (with-helm-alive-p
- (helm-exit-and-execute-action
- (lambda (f)
- (display-buffer (find-file-noselect f))))))
-
-(autoload 'org-open-file "org")
-;;;###autoload
-(defun km/helm-ff-org-open-file ()
- "Run `org-open-file' from `helm-source-find-files'."
- (interactive)
- (with-helm-alive-p
- (helm-exit-and-execute-action #'org-open-file)))
-
-;;;###autoload
-(defun km/helm-display-buffer-below ()
- (interactive)
- (with-helm-alive-p
- (helm-exit-and-execute-action
- (lambda (b)
- (display-buffer b '(display-buffer-below-selected))))))
-
-;;;###autoload
-(defun km/helm-find-file-below ()
- (interactive)
- (with-helm-alive-p
- (helm-exit-and-execute-action
- (lambda (f)
- (select-window
- (display-buffer (find-file-noselect f)
- '(display-buffer-below-selected)))))))
-
-(defvar km/helm-etags-mode-map
- (let ((map (make-sparse-keymap)))
- (define-key map (kbd "M-.") #'helm-etags-select)
- map))
-
-(define-minor-mode km/helm-etags-mode
- "Override `xref-find-definitions' with `helm-etags-select'."
- :keymap km/helm-etags-mode-map)
-
-(defun km/helm-maybe-override-xref ()
- (when (helm-etags-find-tag-file-directory default-directory)
- (km/helm-etags-mode 1)))
-
-(provide 'km-helm)
-;;; km-helm.el ends here
diff --git a/lisp/km-hydra.el b/lisp/km-hydra.el
index 22c4eb8..fcd0716 100644
--- a/lisp/km-hydra.el
+++ b/lisp/km-hydra.el
@@ -162,9 +162,9 @@ _y_ Unmark _u_ Unmark
"
^^Defining ^^Applying
_?_ Query _c_ Call
-_b_ Bind to key _h_ Execute with Helm
-_e_ Edit _o_ Call 2nd in ring
-_E_ Step edit _r_ Apply to region lines
+_b_ Bind to key _o_ Call 2nd in ring
+_e_ Edit _r_ Apply to region lines
+_E_ Step edit
_N_ Name last
_l_ Use recent strokes
_s_ Start defining
@@ -187,7 +187,6 @@ _v_ View
("o" kmacro-call-ring-2nd-repeat)
("e" kmacro-edit-macro)
("E" kmacro-step-edit-macro)
- ("h" helm-execute-kmacro)
("n" kmacro-cycle-ring-next :exit nil)
("p" kmacro-cycle-ring-previous :exit nil)
("t" kmacro-swap-ring)
diff --git a/lisp/km-outline.el b/lisp/km-outline.el
index 3c9f290..b5b7b2a 100644
--- a/lisp/km-outline.el
+++ b/lisp/km-outline.el
@@ -63,16 +63,12 @@ text is taken as everything on the line after the
(push (cons head-level head) path-alist)))
(nreverse index)))
-(declare-function helm-imenu "helm-imenu")
;;;###autoload
(defun km/outline-jump-to-heading ()
"Jump to heading specified by `outline-regexp'."
(interactive)
- (let ((imenu-create-index-function #'km/outline-imenu-create-index)
- helm-cached-imenu-tick
- helm-cached-imenu-alist
- helm-cached-imenu-candidates)
- (call-interactively #'helm-imenu)))
+ (let ((imenu-create-index-function #'km/outline-imenu-create-index))
+ (call-interactively #'imenu)))
(provide 'km-outline)
;;; km-outline.el ends here
diff --git a/lisp/km-projectile.el b/lisp/km-projectile.el
index 0d52bdf..cb4d0fe 100644
--- a/lisp/km-projectile.el
+++ b/lisp/km-projectile.el
@@ -208,5 +208,11 @@ Like `projectile-kill-buffers', but
(get-buffer-window b)))
(projectile-project-buffers))))
+(defun km/projectile-maybe-activate-xref-etags-mode ()
+ (let ((root (projectile-project-root)))
+ (when (and root
+ (file-exists-p (expand-file-name "TAGS" root)))
+ (xref-etags-mode 1))))
+
(provide 'km-projectile)
;;; km-projectile.el ends here