Files
emacs/init.el
2026-06-20 20:18:20 -04:00

174 lines
4.7 KiB
EmacsLisp

;; -*- 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))
(keymap-global-set "M-o" #'other-window)
(keymap-global-set "M-i" #'imenu)
(keymap-global-set "C-c c" #'compile)
(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 "C-c e i" #'hgh/edit-init-file)
(keymap-global-set "C-," #'hgh/duplicate-dwim)
(keymap-set help-map "h" #'eldoc)
;; (keymap-global-set "C-h h" #'eldoc)
(setopt grep-find-program "rg --no-heading")
(setq
custom-file "~/.emacs.d/custom.el"
make-backup-files nil
dired-dwim-target t
manual-program "gman"
)
(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)
(electric-pair-mode 1)
(ido-mode 1)
(fido-mode 1)
(global-completion-preview-mode 1)
(tab-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(global-hl-line-mode 1)
(global-eldoc-mode 1)
(global-display-line-numbers-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)
(add-hook 'before-save-hook 'hgh/untabify-buffer)
(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 evil
:custom
(evil-want-C-u-scroll t)
(evil-want-Y-yank-to-eol t)
(evil-move-beyond-eol t)
:ensure t
:init
(setq evil-want-integration t) ;; This is optional since it's already set to t by default.
(setq evil-want-keybinding nil)
:config
(evil-set-leader nil (kbd "SPC"))
(evil-mode 1)
(evil-global-set-key 'normal (kbd "<leader>ff") #'find-file)
(evil-global-set-key 'normal (kbd "<leader>fb") #'switch-to-buffer)
(evil-global-set-key 'normal (kbd "<leader>gs") #'magit)
(evil-global-set-key 'normal (kbd "<leader>rw") #'dired)
(evil-global-set-key 'normal (kbd "<leader>h") #'help-command)
(evil-global-set-key 'normal (kbd "<leader>w") evil-window-map)
(evil-global-set-key 'normal (kbd "<leader>p") project-prefix-map)
)
(use-package evil-collection
:after evil
:ensure t
:config
(evil-collection-init))
(use-package move-text
:bind (("M-<down>" . 'move-text-down)
("M-j" . 'move-text-down)
("M-<up>" . 'move-text-up)
("M-k" . '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))
(use-package eglot
:config
(push '(jai-mode "jails") eglot-server-programs)
(push '(sql-mode "postgres-language-server" "lsp-proxy") eglot-server-programs))
(use-package yaml-mode)
;; (use-package vterm)
(use-package fish-mode)
(use-package yasnippet)
(use-package yasnippet-snippets)