dotfiles/.emacs.d/init.el
2025-06-30 00:08:39 +03:30

141 lines
4.8 KiB
EmacsLisp

(defvar elpaca-installer-version 0.11)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order
'(elpaca
:repo "https://github.com/progfolio/elpaca.git"
:ref nil
:depth 1
:inherit ignore
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (<= emacs-major-version 28)
(require 'subr-x))
(condition-case-unless-debug err
(if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process
"git" nil buffer t
"clone"
,@(when-let ((depth (plist-get order :depth)))
(list (format "--depth=%d" depth) "--no-single-branch"))
(plist-get order :repo)
repo)))
((zerop (call-process "git" nil buffer t "checkout" (or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error)
(warn "%s" err)
(delete-directory repo 'recursive)))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" (expand-file-name "elpaca/" elpaca-repos-directory))
(let ((load-source-file-function nil))
(load "./elpaca-autoloads")))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca elpaca-order)
(elpaca elpaca-use-package
(elpaca-use-package-mode))
(setq native-comp-async-report-warnings-errors 'silent)
(setq use-package-always-ensure t)
(set-frame-parameter (selected-frame) 'alpha '(90 . 90))
(add-to-list 'default-frame-alist '(alpha . (90 . 90)))
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(use-package doom-themes
:config (load-theme 'doom-one t))
(use-package rainbow-mode
:hook (prog-mode . rainbow-mode))
(global-display-line-numbers-mode t)
(setq ring-bell-function 'ignore)
(setq inhibit-startup-message t
inhibit-startup-echo-area-message t)
(use-package all-the-icons :if (display-graphic-p))
(use-package powerline :config (powerline-default-theme))
(use-package elcord :config (elcord-mode))
(use-package minimap)
(use-package neotree :bind ([f9] . neotree-toggle))
(use-package vertico :init (vertico-mode))
(use-package marginalia :hook (vertico-mode . marginalia-mode))
(use-package consult
:bind (("C-s" . consult-line)
("C-x b" . consult-buffer)))
(use-package which-key :config (which-key-mode))
(use-package swiper)
(global-set-key (kbd "C-s") 'swiper)
(global-set-key (kbd "C-r") 'swiper-backward)
(use-package company :hook (prog-mode . company-mode))
(use-package yasnippet :hook (prog-mode . yas-minor-mode))
(use-package flycheck :hook (prog-mode . flycheck-mode))
(use-package lsp-mode
:init (setq lsp-keymap-prefix "C-c l")
:hook ((java-mode . lsp)
(c-mode . lsp)
(sh-mode . lsp)))
(use-package lsp-ui :commands lsp-ui-mode)
(use-package vterm :bind (("C-c t" . ansi-term)))
(use-package web-mode
:mode "\\.html?\\'"
:config
(setq web-mode-enable-auto-pairing t
web-mode-enable-auto-closing t
web-mode-enable-auto-expanding t))
(use-package emmet-mode
:hook ((web-mode html-mode css-mode) . emmet-mode)
:config (setq emmet-expand-jsx-className? t))
(electric-pair-mode 1)
(setq electric-pair-pairs
'((?\" . ?\") (?\{ . ?\}) (?\( . ?\)) (?\[ . ?\]) (?\< . ?\>)))
(setq electric-pair-text-pairs electric-pair-pairs)
(use-package nix-mode :mode "\\.nix\\'")
(use-package fennel-mode :mode "\\.fnl\\'")
(use-package macrostep :hook (fennel-mode . macrostep-mode))
(use-package zig-mode
:mode "\\.zig\\'"
:hook ((zig-mode . lsp-deferred)))
(use-package lsp-java
:after lsp
:config
(require 'lsp-java-boot)
(add-hook 'java-mode-hook #'lsp))
(custom-set-variables
'(custom-safe-themes
'("0325a6b5eea7e5febae709dab35ec8648908af12cf2d2b569bedc8da0a3a81c1"
default)))
(custom-set-faces)