dotfiles/.emacs.d/init.el

127 lines
4.1 KiB
EmacsLisp
Raw Normal View History

2025-07-07 04:35:01 +03:30
;; package setup
2025-07-06 01:28:36 +03:30
(require 'package)
(setq package-archives
'(("gnu" . "https://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")))
(package-initialize)
2025-07-07 04:35:01 +03:30
(unless package-archive-contents
(package-refresh-contents))
2025-06-30 09:18:02 +03:30
(require 'use-package)
2025-06-05 08:09:37 +03:30
2025-07-07 04:35:01 +03:30
;; UI & Appearance
2025-05-29 17:06:17 +02:00
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
2025-07-07 04:35:01 +03:30
(set-frame-parameter (selected-frame) 'alpha '(90 . 90))
(add-to-list 'default-frame-alist '(alpha . (90 . 90)))
2025-07-06 01:28:36 +03:30
(global-display-line-numbers-mode 1)
2025-07-07 04:35:01 +03:30
(global-hl-line-mode 1)
2025-05-29 17:06:17 +02:00
2025-07-07 04:35:01 +03:30
(use-package rainbow-mode :ensure t :hook (prog-mode . rainbow-mode))
(use-package all-the-icons :ensure t :if (display-graphic-p))
(use-package elcord :ensure t :config (elcord-mode 1))
2025-07-06 01:28:36 +03:30
(use-package minimap
:ensure t
2025-07-07 04:35:01 +03:30
:config
(setq minimap-window-location 'right)
(minimap-mode 1))
(use-package centaur-tabs
:ensure t
:init
(setq centaur-tabs-style "bar"
centaur-tabs-set-icons t
centaur-tabs-set-bar 'over
centaur-tabs-set-modified-marker t
centaur-tabs-show-navigation-buttons nil
centaur-tabs-set-close-button nil
centaur-tabs-height 32
centaur-tabs-gray-out-icons 'buffer
centaur-tabs-cycle-scope 'tabs)
:config
(centaur-tabs-mode t)
(centaur-tabs-headline-match)
(centaur-tabs-enable-buffer-reordering)
(setq centaur-tabs-adjust-buffer-order t)
(defun my-centaur-tabs-buffer-groups ()
(list
(cond
((string-equal "*" (substring (buffer-name) 0 1)) "Emacs")
((derived-mode-p 'prog-mode) "Code")
((derived-mode-p 'dired-mode) "Dired")
((memq major-mode '(helpful-mode help-mode)) "Help")
(t "Common"))))
(setq centaur-tabs-buffer-groups-function #'my-centaur-tabs-buffer-groups)
(global-set-key (kbd "C-<prior>") 'centaur-tabs-backward)
(global-set-key (kbd "C-<next>") 'centaur-tabs-forward))
2025-06-05 08:09:37 +03:30
2025-07-07 04:35:01 +03:30
(load-theme 'doom-badger t)
2025-06-30 09:18:02 +03:30
2025-07-07 04:35:01 +03:30
;; Sidebar
(use-package neotree :ensure t :bind ("<f9>" . neotree-toggle))
2025-06-30 09:18:02 +03:30
2025-07-07 04:35:01 +03:30
;; Completion/UI stuff
(use-package vertico :ensure t :config (vertico-mode 1))
(use-package marginalia :ensure t :hook (vertico-mode . marginalia-mode))
(use-package consult :ensure t
:bind (("C-s" . consult-line) ("C-x b" . consult-buffer)))
(use-package which-key :ensure t :config (which-key-mode 1))
(use-package swiper :ensure t :bind ("C-r" . swiper-backward))
2025-06-30 09:18:02 +03:30
2025-07-07 04:35:01 +03:30
;; Completion etc.
(use-package company :ensure t :hook (prog-mode . company-mode))
(use-package yasnippet :ensure t :hook (prog-mode . yas-minor-mode))
(use-package flycheck :ensure t :hook (prog-mode . flycheck-mode))
2025-05-29 17:06:17 +02:00
2025-07-07 04:35:01 +03:30
;; LSP
2025-05-29 17:06:17 +02:00
(use-package lsp-mode
2025-07-06 01:28:36 +03:30
:ensure t
2025-06-30 09:18:02 +03:30
:commands lsp
2025-07-06 01:28:36 +03:30
:init (setq lsp-keymap-prefix "C-c l")
:hook ((java-mode c-mode sh-mode python-mode rust-mode go-mode typescript-mode
lua-mode zig-mode web-mode) . lsp))
2025-05-29 17:06:17 +02:00
2025-06-30 09:18:02 +03:30
(use-package lsp-ui
2025-07-06 01:28:36 +03:30
:ensure t
2025-07-07 04:35:01 +03:30
:config (require 'lsp-java-boot))
2025-05-29 17:06:17 +02:00
2025-07-07 04:35:01 +03:30
;; Terminal
2025-07-06 01:28:36 +03:30
(global-set-key (kbd "C-c t") 'ansi-term)
2025-07-07 04:35:01 +03:30
;; HTML/CSS/JS
2025-06-15 16:51:45 +03:30
(use-package web-mode
2025-07-06 01:28:36 +03:30
:ensure t
2025-07-07 04:35:01 +03:30
:mode "\\.html?\\'"
2025-06-15 16:51:45 +03:30
:config
(setq web-mode-enable-auto-pairing t
web-mode-enable-auto-closing t
web-mode-enable-auto-expanding t))
(use-package emmet-mode
2025-07-06 01:28:36 +03:30
:ensure t
2025-06-15 16:51:45 +03:30
:hook ((web-mode html-mode css-mode) . emmet-mode)
2025-06-30 09:18:02 +03:30
:config
(setq emmet-expand-jsx-className? t))
2025-06-15 16:51:45 +03:30
2025-07-07 04:35:01 +03:30
;; auto-pairs
2025-06-15 16:51:45 +03:30
(electric-pair-mode 1)
2025-07-06 01:28:36 +03:30
(setq electric-pair-pairs '((?\" . ?\") (?\{ . ?\}) (?\( . ?\)) (?\[ . ?\]) (?\< . ?\>)))
2025-06-15 16:51:45 +03:30
(setq electric-pair-text-pairs electric-pair-pairs)
2025-07-03 07:37:26 +03:30
2025-07-07 04:35:01 +03:30
;; LANGUAGESSSS
(use-package nix-mode :ensure t :mode "\\.nix\\'")
(use-package python :mode "\\.py\\'")
(use-package sh-script :mode "\\.sh\\'")
(use-package fennel-mode :ensure t :mode "\\.fnl\\'" :hook (fennel-mode . macrostep-mode))
(use-package macrostep :ensure t)
(use-package zig-mode :ensure t :mode "\\.zig\\'" :hook (zig-mode . lsp-deferred))
2025-07-06 01:28:36 +03:30
(use-package cc-mode)
2025-07-07 04:35:01 +03:30
(use-package markdown-mode :ensure t :mode "\\.md\\'")
(use-package lua-mode :ensure t :mode "\\.lua\\'")
(use-package rust-mode :ensure t :mode "\\.rs\\'")
(use-package go-mode :ensure t :mode "\\.go\\'")
(use-package typescript-mode :ensure t :mode "\\.ts\\'")
(use-package toml-mode :ensure t :mode "\\.toml\\'")
(use-package yaml-mode :ensure t :mode "\\.ya?ml\\'")