dotfiles/.emacs.d/init.el

142 lines
4.8 KiB
EmacsLisp
Raw Normal View History

2025-06-30 00:08:39 +03:30
(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))
2025-05-29 17:06:17 +02:00
2025-06-30 00:08:39 +03:30
(setq native-comp-async-report-warnings-errors 'silent)
(setq use-package-always-ensure t)
2025-06-05 08:09:37 +03:30
2025-06-11 04:06:50 +03:30
(set-frame-parameter (selected-frame) 'alpha '(90 . 90))
(add-to-list 'default-frame-alist '(alpha . (90 . 90)))
2025-05-29 17:06:17 +02:00
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
2025-06-30 00:08:39 +03:30
(use-package doom-themes
:config (load-theme 'doom-one t))
2025-06-01 00:53:17 +03:30
(use-package rainbow-mode
:hook (prog-mode . rainbow-mode))
2025-05-29 17:06:17 +02:00
(global-display-line-numbers-mode t)
(setq ring-bell-function 'ignore)
(setq inhibit-startup-message t
inhibit-startup-echo-area-message t)
2025-06-30 00:08:39 +03:30
(use-package all-the-icons :if (display-graphic-p))
(use-package powerline :config (powerline-default-theme))
(use-package elcord :config (elcord-mode))
2025-06-05 08:09:37 +03:30
(use-package minimap)
2025-06-30 00:08:39 +03:30
(use-package neotree :bind ([f9] . neotree-toggle))
(use-package vertico :init (vertico-mode))
(use-package marginalia :hook (vertico-mode . marginalia-mode))
2025-05-29 17:06:17 +02:00
(use-package consult
:bind (("C-s" . consult-line)
("C-x b" . consult-buffer)))
2025-06-30 00:08:39 +03:30
(use-package which-key :config (which-key-mode))
2025-05-29 17:06:17 +02:00
2025-06-30 00:08:39 +03:30
(use-package swiper)
2025-06-05 08:09:37 +03:30
(global-set-key (kbd "C-s") 'swiper)
(global-set-key (kbd "C-r") 'swiper-backward)
2025-06-30 00:08:39 +03:30
(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))
2025-05-29 17:06:17 +02:00
(use-package lsp-mode
2025-06-30 00:08:39 +03:30
:init (setq lsp-keymap-prefix "C-c l")
2025-06-05 08:09:37 +03:30
:hook ((java-mode . lsp)
2025-05-29 17:06:17 +02:00
(c-mode . lsp)
2025-06-04 07:57:39 +03:30
(sh-mode . lsp)))
2025-05-29 17:06:17 +02:00
2025-06-30 00:08:39 +03:30
(use-package lsp-ui :commands lsp-ui-mode)
2025-05-29 17:06:17 +02:00
2025-06-30 00:08:39 +03:30
(use-package vterm :bind (("C-c t" . ansi-term)))
2025-05-29 17:06:17 +02:00
2025-06-15 16:51:45 +03:30
(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)
2025-06-30 00:08:39 +03:30
:config (setq emmet-expand-jsx-className? t))
2025-06-15 16:51:45 +03:30
(electric-pair-mode 1)
2025-06-30 00:08:39 +03:30
(setq electric-pair-pairs
'((?\" . ?\") (?\{ . ?\}) (?\( . ?\)) (?\[ . ?\]) (?\< . ?\>)))
2025-06-15 16:51:45 +03:30
(setq electric-pair-text-pairs electric-pair-pairs)
2025-06-30 00:08:39 +03:30
(use-package nix-mode :mode "\\.nix\\'")
(use-package fennel-mode :mode "\\.fnl\\'")
(use-package macrostep :hook (fennel-mode . macrostep-mode))
2025-06-11 04:06:50 +03:30
(use-package zig-mode
:mode "\\.zig\\'"
2025-06-30 00:08:39 +03:30
:hook ((zig-mode . lsp-deferred)))
2025-05-29 17:06:17 +02:00
(use-package lsp-java
2025-06-04 07:57:39 +03:30
:after lsp
:config
(require 'lsp-java-boot)
(add-hook 'java-mode-hook #'lsp))
2025-05-29 17:06:17 +02:00
(custom-set-variables
2025-06-04 04:38:36 +03:30
'(custom-safe-themes
'("0325a6b5eea7e5febae709dab35ec8648908af12cf2d2b569bedc8da0a3a81c1"
2025-06-30 00:08:39 +03:30
default)))
(custom-set-faces)