From 5ba4deb614f18ce2dff1a902657514fa9a289e33 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 3 Dec 2024 22:09:58 -0600 Subject: [PATCH] Some more emacs config fixes and keybinds --- user/app/emacs/init.el | 81 ++++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 26 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index bc99ead..11de8c0 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -17,13 +17,14 @@ (setq custom-file "/dev/null") ; Some sane settings -(scroll-bar-mode -1) ; Disable visible scrollbar -(tool-bar-mode -1) ; Disable the toolbar -(tooltip-mode -1) ; Disable tooltips -(set-fringe-mode 10) ; Give some breathing room -(blink-cursor-mode 0) ; No blinking -(global-hl-line-mode) ; Where am I? +(scroll-bar-mode -1) ; Disable visible scrollbar +(tool-bar-mode -1) ; Disable the toolbar +(tooltip-mode -1) ; Disable tooltips +(set-fringe-mode 10) ; Give some breathing room +(blink-cursor-mode 0) ; No blinking +(global-hl-line-mode) ; Where am I? (pixel-scroll-precision-mode 1) ; This is kinda epic +(global-visual-line-mode 1) ; Visual lines make more sense ;; I prefer visual lines (setq display-line-numbers-type 'visual @@ -88,26 +89,54 @@ :config (evil-collection-init)) -(evil-define-key 'normal 'global (kbd ".") 'find-file) -(evil-define-key 'normal 'global (kbd "bi") 'ibuffer) -(evil-define-key 'normal 'global (kbd "bd") 'delete-buffer) -(evil-define-key 'normal 'global (kbd "bn") 'next-buffer) -(evil-define-key 'normal 'global (kbd "bp") 'previous-buffer) -(evil-define-key 'normal 'global (kbd "pp") 'projectile-switch-project) -(evil-define-key 'normal 'global (kbd "pf") 'projectile-find-file) -(evil-define-key 'normal 'global (kbd "pa") 'projectile-add-known-project) -(evil-define-key 'normal 'global (kbd "gg") 'magit-status) -(evil-define-key 'normal 'global (kbd "hv") 'describe-variable) -(evil-define-key 'normal 'global (kbd "hf") 'describe-function) -(evil-define-key 'normal 'global (kbd "hk") 'describe-key) -(evil-define-key 'normal 'global (kbd "hF") 'describe-face) -(evil-define-key 'normal 'global (kbd "ws") 'evil-window-split) -(evil-define-key 'normal 'global (kbd "wv") 'evil-window-vsplit) -(evil-define-key 'normal 'global (kbd "wd") 'evil-window-delete) -(evil-define-key 'normal 'global (kbd "wj") 'evil-window-down) -(evil-define-key 'normal 'global (kbd "wk") 'evil-window-up) -(evil-define-key 'normal 'global (kbd "wh") 'evil-window-left) -(evil-define-key 'normal 'global (kbd "wl") 'evil-window-right) +;; based on http://emacsredux.com/blog/2013/04/03/delete-file-and-buffer/ +(defun delete-file-and-buffer () + "Kill the current buffer and deletes the file it is visiting." + (interactive) + (let ((filename (buffer-file-name))) + (if filename + (if (y-or-n-p (concat "Do you really want to delete file " filename " ?")) + (progn + (delete-file filename) + (message "Deleted file %s." filename) + (kill-buffer))) + (message "Not a file visiting buffer!")))) + +(evil-define-key 'motion 'global (kbd "j") 'evil-next-visual-line) +(evil-define-key 'motion 'global (kbd "k") 'evil-previous-visual-line) +(evil-define-key 'motion 'global (kbd ".") 'find-file) +(evil-define-key 'motion 'global (kbd "bi") 'ibuffer) +(evil-define-key 'motion 'global (kbd "bd") 'delete-buffer) +(evil-define-key 'motion 'global (kbd "bn") 'next-buffer) +(evil-define-key 'motion 'global (kbd "bp") 'previous-buffer) +(evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project) +(evil-define-key 'motion 'global (kbd "pf") 'projectile-find-file) +(evil-define-key 'motion 'global (kbd "pa") 'projectile-add-known-project) +(evil-define-key 'motion 'global (kbd "gg") 'magit-status) +(evil-define-key 'motion 'global (kbd "hv") 'describe-variable) +(evil-define-key 'motion 'global (kbd "hf") 'describe-function) +(evil-define-key 'motion 'global (kbd "hk") 'describe-key) +(evil-define-key 'motion 'global (kbd "hF") 'describe-face) +(evil-define-key 'motion 'global (kbd "ws") 'evil-window-split) +(evil-define-key 'motion 'global (kbd "wv") 'evil-window-vsplit) +(defun evil-window-split-follow () + (interactive) + (let ((evil-split-window-below t)) + (evil-window-split))) +(defun evil-window-vsplit-follow () + (interactive) + (let ((evil-vsplit-window-right t)) + (evil-window-vsplit))) +(evil-define-key 'motion 'global (kbd "wS") 'evil-window-split-follow) +(evil-define-key 'motion 'global (kbd "wV") 'evil-window-vsplit-follow) +(evil-define-key 'motion 'global (kbd "wd") 'evil-window-delete) +(evil-define-key 'motion 'global (kbd "wj") 'evil-window-down) +(evil-define-key 'motion 'global (kbd "wk") 'evil-window-up) +(evil-define-key 'motion 'global (kbd "wh") 'evil-window-left) +(evil-define-key 'motion 'global (kbd "wl") 'evil-window-right) +(evil-define-key 'motion 'global (kbd "fd") 'delete-file-and-buffer) +(evil-define-key 'motion 'org-mode-map (kbd "mll") 'org-insert-link) +(define-key magit-mode-map (kbd "SPC") nil) (global-set-key (kbd "C-j") 'evil-window-down) (global-set-key (kbd "C-k") 'evil-window-up)