45 lines
1.3 KiB
EmacsLisp
45 lines
1.3 KiB
EmacsLisp
;;; evil.el --- Minimal Evil -*- lexical-binding: t; -*-
|
|
;;; Commentary:
|
|
;; Evil for text editing and navigation only, with Evil's own defaults for
|
|
;; special buffers. Exceptions: dired (hjkl) and Magit (modules/git.el).
|
|
;; evil-collection is not used.
|
|
;;; Code:
|
|
|
|
(use-package evil
|
|
:init
|
|
(setq evil-want-C-u-scroll t
|
|
evil-undo-system 'undo-redo)
|
|
:config
|
|
(evil-mode 1)
|
|
|
|
;; Literal tab in insert state.
|
|
(evil-define-key 'insert 'global
|
|
(kbd "TAB") #'self-insert-command
|
|
(kbd "C-SPC") #'completion-at-point)
|
|
|
|
;; project.el finders, dired-jump.
|
|
(evil-define-key '(normal motion) 'global
|
|
(kbd "C-e") #'dired-jump
|
|
(kbd "C-p") #'project-find-file
|
|
(kbd "C-f") #'project-find-regexp)
|
|
|
|
;; eglot code navigation.
|
|
(evil-define-key '(normal motion) 'global
|
|
"gd" #'xref-find-definitions
|
|
"gD" #'xref-find-references
|
|
"K" #'eldoc
|
|
(kbd "C-t") #'xref-go-back)
|
|
|
|
(evil-set-initial-state 'dired-mode 'motion))
|
|
|
|
;; Dired: hjkl. j/k are Evil's line motions; h goes up a directory,
|
|
;; l opens the file or directory at point.
|
|
(with-eval-after-load 'dired
|
|
(evil-define-key 'motion dired-mode-map
|
|
"h" #'dired-up-directory
|
|
"l" #'dired-find-file
|
|
"." #'dired-omit-mode
|
|
(kbd "RET") #'dired-find-file))
|
|
|
|
;;; evil.el ends here
|