Helpful abbrevs and line highlight pulsing stuff

This commit is contained in:
James Dixon 2025-05-10 12:09:40 -04:00
parent 68662bd744
commit 18803806d0

View File

@ -22,6 +22,7 @@
;; Lines and columns ;; Lines and columns
(global-display-line-numbers-mode 1) ; Display line numbers (global-display-line-numbers-mode 1) ; Display line numbers
(column-number-mode 1) ; Toggle column number display in the mode line. (column-number-mode 1) ; Toggle column number display in the mode line.
;; (add-hook 'prog-mode-hook #'display-fill-column-indicator-mode) ; Column width indicator
;; Bells and whistles ;; Bells and whistles
(setq visible-bell 1) ; Flash when the bell rings (no sound) (setq visible-bell 1) ; Flash when the bell rings (no sound)
@ -168,19 +169,27 @@
(shell-command (buffer-substring-no-properties start end))) (shell-command (buffer-substring-no-properties start end)))
;; TODO: make it work with defaults of Linux/macOS ;; TODO: make it work with defaults of Linux/macOS
(defun open-terminal-in-workdir () (defun ext-terminal-in-workdir ()
"Open an external terminal emulator in working directory." "Open an external terminal emulator in working directory."
(interactive) (interactive)
(call-process-shell-command (concat "wt -d " default-directory) nil 0)) (call-process-shell-command (concat "wt -d " default-directory) nil 0))
;; TODO: make it work with defaults of Linux/macOS ;; TODO: make it work with defaults of Linux/macOS
(defun browse-file-directory () (defun ext-file-browser-in-workdir ()
"Open the current file's directory however the OS would." "Open the current file's directory however the OS would."
(interactive) (interactive)
(if default-directory (if default-directory
(shell-command (concat "start " (expand-file-name default-directory))) (shell-command (concat "start " (expand-file-name default-directory)))
(error "No `default-directory' to open"))) (error "No `default-directory' to open")))
(defun insert-current-iso-date ()
"Insert the current ISO 8601 date."
(insert (format-time-string "%Y-%m-%d")))
(defun insert-current-iso-date-seconds()
"Insert the current ISO 8601 date (with time res of seconds)."
(insert (format-time-string "%Y-%m-%d %H:%M:%S")))
;; Ediff ;; Ediff
;; Configure Ediff to use a single frame and split windows horizontally ;; Configure Ediff to use a single frame and split windows horizontally
(setq ediff-window-setup-function 'ediff-setup-windows-plain (setq ediff-window-setup-function 'ediff-setup-windows-plain
@ -229,6 +238,9 @@
(setq evil-want-C-u-scroll t) (setq evil-want-C-u-scroll t)
(setq evil-want-C-i-jump nil) (setq evil-want-C-i-jump nil)
(setq evil-disable-insert-state-bindings t) (setq evil-disable-insert-state-bindings t)
(setq evil-insert-state-cursor '(box "violet")
evil-normal-state-cursor '(box "yellow")
evil-visual-state-cursor '(box "#1aa5db"))
(setq evil-want-keybinding nil) (setq evil-want-keybinding nil)
:config :config
(evil-mode 1)) (evil-mode 1))
@ -258,24 +270,37 @@
(use-package evil-numbers (use-package evil-numbers
:straight t :straight t
:after evil) :after evil)
;; Custom Evil Keybinds
;;; Evil customizations
;;; Basic way to do pulse for evil yank text (like goggles.el package)
;;; https://blog.meain.io/2020/emacs-highlight-yanked/
(defun hl-yank-advice (yank-fn beg end &rest args)
"Give advice to YANK-FN BEG END ARGS for temp highlighting of region."
(pulse-momentary-highlight-region beg end)
(apply yank-fn beg end args))
(advice-add 'evil-yank :around 'hl-yank-advice)
;;; evil-numbers keybinds
(evil-define-key '(normal visual) 'global (kbd "C-a +") 'evil-numbers/inc-at-pt) (evil-define-key '(normal visual) 'global (kbd "C-a +") 'evil-numbers/inc-at-pt)
(evil-define-key '(normal visual) 'global (kbd "C-a -") 'evil-numbers/dec-at-pt) (evil-define-key '(normal visual) 'global (kbd "C-a -") 'evil-numbers/dec-at-pt)
(evil-define-key '(normal visual) 'global (kbd "C-a C-+") 'evil-numbers/inc-at-pt-incremental) (evil-define-key '(normal visual) 'global (kbd "C-a C-+") 'evil-numbers/inc-at-pt-incremental)
(evil-define-key '(normal visual) 'global (kbd "C-a C--") 'evil-numbers/dec-at-pt-incremental) (evil-define-key '(normal visual) 'global (kbd "C-a C--") 'evil-numbers/dec-at-pt-incremental)
;; Custom Evil Keybinds
;; More ergonomic M-x and C-x ;;; general keybinds
(evil-define-key '(normal visual) 'global (kbd "SPC e") 'eval-region)
(define-key evil-normal-state-map (kbd "SPC :") 'execute-extended-command) (define-key evil-normal-state-map (kbd "SPC :") 'execute-extended-command)
(define-key evil-normal-state-map (kbd "SPC e") 'eval-last-sexp) (define-key evil-normal-state-map (kbd "SPC e") 'eval-last-sexp)
(define-key evil-visual-state-map (kbd "SPC e") 'eval-region)
(define-key evil-normal-state-map (kbd "SPC p") 'eval-print-last-sexp) (define-key evil-normal-state-map (kbd "SPC p") 'eval-print-last-sexp)
(define-key evil-normal-state-map (kbd "SPC E") 'eval-expression) (define-key evil-normal-state-map (kbd "SPC E") 'eval-expression)
(define-key evil-normal-state-map (kbd "SPC b") 'eval-buffer) (define-key evil-normal-state-map (kbd "SPC b") 'eval-buffer)
(define-key evil-normal-state-map (kbd "SPC w") 'save-buffer) (define-key evil-normal-state-map (kbd "SPC w") 'save-buffer)
(define-key evil-normal-state-map (kbd "SPC k") 'kill-buffer) (define-key evil-normal-state-map (kbd "SPC k") 'kill-buffer)
(define-key evil-normal-state-map (kbd "SPC f") 'find-file) (define-key evil-normal-state-map (kbd "SPC f") 'ffap)
(define-key evil-normal-state-map (kbd "SPC F") 'find-file)
(define-key evil-normal-state-map (kbd "SPC d") 'dired) (define-key evil-normal-state-map (kbd "SPC d") 'dired)
(define-key evil-normal-state-map (kbd "SPC j") 'dired-jump) (define-key evil-normal-state-map (kbd "SPC K") 'dired-jump)
(define-key evil-normal-state-map (kbd "SPC o") 'occur) (define-key evil-normal-state-map (kbd "SPC o") 'occur)
(define-key evil-normal-state-map (kbd "SPC B") 'bookmark-jump) (define-key evil-normal-state-map (kbd "SPC B") 'bookmark-jump)
(define-key evil-normal-state-map (kbd "SPC g") 'magit-status) (define-key evil-normal-state-map (kbd "SPC g") 'magit-status)
@ -283,6 +308,9 @@
(define-key evil-normal-state-map (kbd "SPC R") 'recentf) (define-key evil-normal-state-map (kbd "SPC R") 'recentf)
(define-key evil-normal-state-map (kbd "SPC x") ctl-x-map) (define-key evil-normal-state-map (kbd "SPC x") ctl-x-map)
(define-key evil-normal-state-map (kbd "C-c i") (lambda () (interactive) (find-file user-init-file))) (define-key evil-normal-state-map (kbd "C-c i") (lambda () (interactive) (find-file user-init-file)))
(define-key evil-normal-state-map (kbd "SPC O") 'ext-file-browser-in-workdir)
(define-key evil-normal-state-map (kbd "SPC T") 'ext-terminal-in-workdir)
(define-key evil-normal-state-map (kbd "SPC A") 'abbrev-mode)
;; end evil ;; end evil
;; Easy find init file ;; Easy find init file
@ -327,6 +355,12 @@
("NOTE" success bold) ("NOTE" success bold)
("DEPRECATED" font-lock-doc-face bold)))) ("DEPRECATED" font-lock-doc-face bold))))
(use-package goggles
:straight t
:hook ((prog-mode text-mode) . goggles-mode)
:config
(setq-default goggles-pulse t))
(use-package rainbow-mode (use-package rainbow-mode
:straight t) :straight t)
@ -523,7 +557,6 @@
:hook ((prog-mode . corfu-mode) :hook ((prog-mode . corfu-mode)
(shell-mode . corfu-mode) (shell-mode . corfu-mode)
(eshell-mode . corfu-mode)) (eshell-mode . corfu-mode))
:custom :custom
(corfu-auto-prefix 1) (corfu-auto-prefix 1)
(corfu-auto-delay 0.0) (corfu-auto-delay 0.0)
@ -550,6 +583,20 @@
(add-hook 'completion-at-point-functions #'cape-file) (add-hook 'completion-at-point-functions #'cape-file)
(add-hook 'completion-at-point-functions #'cape-elisp-block)) (add-hook 'completion-at-point-functions #'cape-elisp-block))
;; Abbrevs and Snippets
;;; Abbrevs
(define-abbrev global-abbrev-table "bg" "background")
(define-abbrev global-abbrev-table "ty" "thank you")
(define-abbrev global-abbrev-table "yw" "you are welcome")
(define-abbrev global-abbrev-table "u" "you")
(define-abbrev global-abbrev-table "mygh" "https://github.com/lemonase")
(define-abbrev global-abbrev-table "dt" "" 'insert-current-iso-date)
(define-abbrev global-abbrev-table "dts" "" 'insert-current-iso-date-seconds)
(define-abbrev global-abbrev-table "td" "" 'insert-current-iso-date)
(define-abbrev global-abbrev-table "tds" "" 'insert-current-iso-date-seconds)
;;; Treesitter (treesit) ;;; Treesitter (treesit)
(use-package treesit (use-package treesit
:commands (treesit-install-language-grammar) :commands (treesit-install-language-grammar)