;; -*- lexical-binding: t; -*- (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) (if (string= system-type "darwin") (set-frame-font "Berkeley Mono 16" nil t) (set-frame-font "BerkeleyMono 14" nil t)) (load-theme 'modus-vivendi) (when (string= system-type "darwin") (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 "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) (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 use-package-compute-statistics t treesit-font-lock-level 4) (load-file "~/.emacs.d/utils.el") (setq-default cursor-type 'bar) (setopt use-short-answers t use-dialog-box nil use-package-enable-imenu-support t tab-width 4) (electric-pair-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) (global-hl-line-mode 1) (defun hgh/untabify-buffer () (interactive) (untabify (region-beginning) (region-end) nil)) (add-hook 'compilation-filter-hook 'ansi-color-compilation-filter) (add-hook 'before-save-hook 'delete-trailing-whitespace) (if (file-exists-p custom-file) (load-file custom-file)) (require 'use-package) (setq use-package-always-ensure t) (use-package exec-path-from-shell :demand t) (exec-path-from-shell-initialize) (use-package move-text :bind (("M-" . 'move-text-down) ("M-" . 'move-text-up))) (use-package jai-mode :vc (:url "https://github.com/valignatev/jai-mode.git" :rev :newest)) (use-package magit :bind ("C-x g" . magit-status)) (use-package multiple-cursors :custom (mc/always-run-for-all t) :bind (("C->" . mc/mark-next-like-this) ("C-<" . mc/mark-previous-like-this) ("C-c C-<" . mc/mark-all-like-this) ("C-c C->" . mc/mark-lines)) :init (advice-add 'mc/mark-next-like-this :before #'hgh/set-box-cursor) (advice-add 'mc/mark-previous-like-this :before #'hgh/set-box-cursor) (advice-add 'mc/mark-all-like-this :before #'hgh/set-box-cursor) (add-hook 'multiple-cursors-mode-disabled-hook #'hgh/set-bar-cursor)) (use-package cape :hook ((completion-at-point-functions . cape-dabbrev) (completion-at-point-functions . cape-file))) (use-package dumber-jump :init (add-hook 'xref-backend-functions #'dumber-jump-xref-activate) :config (push '(:language "jai" :type "function" :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) (push '(:language "jai" :type "type" :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" "-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))