dotfiles/.emacs.d/init.el
2025-06-04 07:57:39 +03:30

197 lines
4.8 KiB
EmacsLisp

;; coasteen's emacs configuration :3
(require 'package)
(setq package-archives
'(("melpa" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(eval-when-compile
(require 'use-package))
(setq use-package-always-ensure t)
(setq native-comp-async-report-warnings-errors 'silent)
;; Fix: Ensure tree-sitter and language grammars are available
(when (executable-find "tree-sitter")
(use-package tree-sitter
:hook (prog-mode . tree-sitter-mode))
(use-package tree-sitter-langs
:after tree-sitter))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; APPEARANCE & THEMES ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(set-frame-parameter (selected-frame) 'alpha '(95 . 95))
(add-to-list 'default-frame-alist '(alpha . (95 . 95)))
(use-package doom-themes
:ensure t
:config
(load-theme 'doom-palenight t))
;; (load-theme 'modus-vivendi-tritanopia t)
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(use-package rainbow-mode
:hook (prog-mode . rainbow-mode))
(global-display-line-numbers-mode t)
(setq ring-bell-function 'ignore)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; UI & INTERFACE ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq inhibit-startup-message t
inhibit-startup-echo-area-message t)
(use-package all-the-icons
:if (display-graphic-p)
:ensure t)
(use-package doom-modeline
:ensure t
:init (doom-modeline-mode 1)
:config
(setq doom-modeline-height 15
doom-modeline-bar-width 3
doom-modeline-enable-word-count t))
(use-package elcord
:ensure t
:config (elcord-mode))
(use-package minimap
:ensure t)
(use-package neotree
:ensure t
:bind ([f9] . neotree-toggle))
(use-package vertico
:ensure t
:init (vertico-mode))
(use-package marginalia
:ensure t
:after vertico
: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))
(use-package centaur-tabs
:ensure t
:config
(setq centaur-tabs-set-bar 'over
centaur-tabs-set-icons t
centaur-tabs-gray-out-icons 'buffer
centaur-tabs-height 24
centaur-tabs-set-modified-marker t
centaur-tabs-modified-marker "*")
(centaur-tabs-mode t))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; EDITOR BEHAVIOR ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(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))
(use-package lsp-mode
:ensure t
:commands lsp
:init
(setq lsp-keymap-prefix "C-c l")
:hook ((lua-mode . lsp)
(java-mode . lsp)
(c-mode . lsp)
(sh-mode . lsp)))
(use-package lsp-ui
:ensure t
:commands lsp-ui-mode)
(use-package vterm
:ensure t
:bind (("C-c t" . vterm)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; LANGUAGE SUPPORT ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package nix-mode
:ensure t
:mode "\\.nix\\'")
(use-package lua-mode
:ensure t)
(use-package fennel-mode
:ensure t
:mode "\\.fnl\\'")
(use-package macrostep
:ensure t
:hook (fennel-mode . macrostep-mode))
(use-package cc-mode
:ensure t)
(use-package lsp-java
:ensure t
:after lsp
:config
(require 'lsp-java-boot)
(add-hook 'java-mode-hook #'lsp))
(use-package gradle-mode
:ensure t)
(use-package sh-script
:ensure t)
;; make sure packages are proper, on first run
(when (not (package-installed-p 'lsp-java))
(package-install 'lsp-java))
(when (not (package-installed-p 'tree-sitter-langs))
(package-install 'tree-sitter-langs))
;; Custom settings
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(custom-safe-themes
'("0325a6b5eea7e5febae709dab35ec8648908af12cf2d2b569bedc8da0a3a81c1"
default))
'(package-selected-packages nil))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)