From 1d14d7a09d6679738057c6e30765cfb690e00e7a Mon Sep 17 00:00:00 2001 From: Grant Horner Date: Mon, 22 Jun 2026 13:04:47 -0400 Subject: [PATCH] cua keybinds --- custom.el | 7 ++-- init.el | 109 ++++++++++++++++++++++++++++++++++++++++++------------ utils.el | 5 --- 3 files changed, 89 insertions(+), 32 deletions(-) diff --git a/custom.el b/custom.el index fe89d63..c7239e3 100644 --- a/custom.el +++ b/custom.el @@ -6,9 +6,10 @@ ;; If there is more than one, they won't work right. '(eglot-code-action-indications '(eldoc-hint)) '(package-selected-packages - '(cape dumb-jump dumber-jump exec-path-from-shell jai-mode magit - markdown-mode move-text multiple-cursors vterm yaml - yaml-mode)) + '(apheleia cape dart-mode dumb-jump dumber-jump exec-path-from-shell + jai-mode magit marginalia markdown-mode move-text + multiple-cursors nael orderless undo-tree vertico vterm + yaml yaml-mode)) '(package-vc-selected-packages '((jai-mode :url "https://github.com/valignatev/jai-mode.git")))) (custom-set-faces diff --git a/init.el b/init.el index e8fdc7a..50a53d3 100644 --- a/init.el +++ b/init.el @@ -13,21 +13,45 @@ (setq dired-use-ls-dired nil) (setq mac-command-modifier 'control)) +(setq hgh/cua t) + +(defun hgh/set-cua-keymaps () + (setq cua-mode 1) + (keymap-global-set "C-o" #'find-file) + (keymap-global-set "C-f" #'isearch-forward) + (keymap-global-set "C-r" #'compile) + (keymap-global-set "C-b" #'switch-to-buffer) + (keymap-global-set "C-j" #'eldoc) + (keymap-global-set "" #'hgh/edit-init-file)) + +(defun hgh/set-non-cua-keymaps () + (keymap-global-set "C-c c" #'compile) + (keymap-global-set "C-h h" #'eldoc) + (keymap-global-set "C-c e i" #'hgh/edit-init-file)) + +(hgh/set-cua-keymaps) + +(setq duplicate-line-final-position -1 + duplicate-region-final-position -1) +(keymap-global-set "C-," #'duplicate-dwim) (keymap-global-set "M-o" #'other-window) -(keymap-global-set "M-i" #'imenu) -(keymap-global-set "C-c c" #'compile) +;; (keymap-global-set "M-i" #'imenu) (keymap-global-set "M-0" #'delete-window) (keymap-global-set "M-1" #'delete-other-windows) (keymap-global-set "M-2" #'split-window-below) (keymap-global-set "M-3" #'split-window-right) +(keymap-global-set "M-i" #'complete-symbol) -(keymap-global-set "C-c e i" #'hgh/edit-init-file) -(keymap-global-set "C-," #'hgh/duplicate-dwim) +(require 'completion-preview) +(keymap-set completion-preview-active-mode-map "M-n" #'completion-preview-next-candidate) +(keymap-set completion-preview-active-mode-map "M-p" #'completion-preview-prev-candidate) (setq custom-file "~/.emacs.d/custom.el" make-backup-files nil - dired-dwim-target t) + dired-dwim-target t + use-package-compute-statistics t + treesit-font-lock-level 4) (load-file "~/.emacs.d/utils.el") @@ -36,12 +60,14 @@ (setopt use-short-answers t use-dialog-box nil - use-package-enable-imenu-support t) + use-package-enable-imenu-support t + tab-width 4) (electric-pair-mode 1) -(ido-mode 1) -(fido-mode 1) +(ido-mode -1) +(fido-mode -1) (global-completion-preview-mode 1) +(global-eldoc-mode 1) (tab-bar-mode -1) (tool-bar-mode -1) (scroll-bar-mode -1) @@ -53,7 +79,6 @@ (add-hook 'compilation-filter-hook 'ansi-color-compilation-filter) (add-hook 'before-save-hook 'delete-trailing-whitespace) -(add-hook 'before-save-hook 'hgh/untabify-buffer) (if (file-exists-p custom-file) (load-file custom-file)) @@ -72,7 +97,7 @@ (use-package jai-mode :vc (:url "https://github.com/valignatev/jai-mode.git" - :rev :newest)) + :rev :newest)) (use-package magit :bind ("C-x g" . magit-status)) @@ -92,7 +117,7 @@ (use-package cape :hook ((completion-at-point-functions . cape-dabbrev) - (completion-at-point-functions . cape-file))) + (completion-at-point-functions . cape-file))) (use-package dumber-jump :init @@ -100,28 +125,64 @@ :config (push '(:language "jai" :type "function" - :supports ("ag" "grep" "rg" "git-grep") - :regex "\\bJJJ\\s*::" - :tests ("test ::")) + :supports ("ag" "grep" "rg" "git-grep") + :regex "\\bJJJ\\s*::" + :tests ("test ::")) dumber-jump-find-rules) (push - '(:language "jai" :type "variable" - :supports ("ag" "grep" "rg" "git-grep") - :regex "\\bJJJ\\s*(:|:\\s*=|::)" - :tests ("test: Type" "test : Type = Val" "test :: Val")) - dumber-jump-find-rules) + '(:language "jai" :type "variable" + :supports ("ag" "grep" "rg" "git-grep") + :regex "\\bJJJ\\s*(:|:\\s*=|::)" + :tests ("test: Type" "test : Type = Val" "test :: Val")) + dumber-jump-find-rules) (push '(:language "jai" :type "type" - :supports ("ag" "grep" "rg" "git-grep") - :regex "\\bJJJ\\s*::" - :tests ("test ::")) + :supports ("ag" "grep" "rg" "git-grep") + :regex "\\bJJJ\\s*::" + :tests ("test ::")) dumber-jump-find-rules)) +;; go-ts-mode registers its `\\.go\\'' -> auto-mode-alist entry with a +;; top-level form that has no autoload cookie, so it only runs once +;; the file is loaded. Add the mapping ourselves so .go files open in +;; go-ts-mode (grammar already lives under tree-sitter/). +(add-to-list 'auto-mode-alist '("\\.go\\'" . go-ts-mode)) +(add-to-list 'auto-mode-alist '("go\\.mod\\'" . go-mod-ts-mode)) + (use-package eglot + :hook ((jai-mode . eglot-ensure) + (go-ts-mode . eglot-ensure)) :config - (push '(jai-mode "jails") eglot-server-programs) - (push '(sql-mode "postgres-language-server" "lsp-proxy") eglot-server-programs)) + (push '(jai-mode "jails" "-jai_path" "/home/grant/.local/jai/") eglot-server-programs) + (push '(sql-mode "postgres-language-server" "lsp-proxy") eglot-server-programs) + (push '(dart-mode "fvm" "dart" "language-server" "--client-id" "emacs.eglot-dart") eglot-server-programs)) (use-package yaml-mode) (use-package vterm) + +(use-package dart-mode) + +(use-package nael) + +(use-package vertico + :init + (vertico-mode 1)) + +(use-package marginalia + :init + (marginalia-mode 1)) + +(use-package orderless) + +(use-package go-ts-mode + :custom + (go-ts-mode-indent-offset 4)) + +(use-package undo-tree + :init + (global-undo-tree-mode 1)) + +(use-package apheleia + :init + (apheleia-global-mode 1)) diff --git a/utils.el b/utils.el index 8981b25..f6c320e 100644 --- a/utils.el +++ b/utils.el @@ -3,11 +3,6 @@ (interactive) (find-file user-init-file)) -(defun hgh/duplicate-dwim () - (interactive) - (duplicate-dwim) - (next-line)) - (defun hgh/set-bar-cursor(&rest args) (setq-local cursor-type 'bar))