(require 'package) (unless package-archive-contents (package-refresh-contents)) (require 'package) (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") ("melpa" . "https://melpa.org/packages/"))) (package-initialize) (require 'use-package) ;; THEMES & APPEARANCE (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) (global-display-line-numbers-mode 1) (use-package rainbow-mode :ensure t :hook (prog-mode . rainbow-mode)) (use-package all-the-icons :if (display-graphic-p) :ensure t) ;; UI & INTERFACE (use-package hl-line :hook (after-init . global-hl-line-mode)) (use-package elcord :ensure t :config (elcord-mode 1)) (use-package minimap :ensure t) (load-theme 'doom-badger t) (use-package neotree :ensure t :bind ("" . neotree-toggle)) (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)) ;; 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 ((java-mode c-mode sh-mode python-mode rust-mode go-mode typescript-mode lua-mode zig-mode web-mode) . lsp)) (use-package lsp-ui :ensure t) (use-package lsp-java :ensure t :after lsp-mode :hook (java-mode . lsp) :config (require 'lsp-java-boot)) ;; TERMINAL (global-set-key (kbd "C-c t") 'ansi-term) ;; WEB/HTML/CSS/JS (use-package web-mode :ensure t :mode ("\\.html?\\'" . web-mode) :config (setq web-mode-enable-auto-pairing t web-mode-enable-auto-closing t web-mode-enable-auto-expanding t)) (use-package emmet-mode :ensure t :hook ((web-mode html-mode css-mode) . emmet-mode) :config (setq emmet-expand-jsx-className? t)) ;; Pairs (electric-pair-mode 1) (setq electric-pair-pairs '((?\" . ?\") (?\{ . ?\}) (?\( . ?\)) (?\[ . ?\]) (?\< . ?\>))) (setq electric-pair-text-pairs electric-pair-pairs) ;; LANGUAGES (use-package nix-mode :ensure t :mode ("\\.nix\\'" . nix-mode)) (use-package python :mode ("\\.py\\'" . python-mode)) (use-package sh-script :mode ("\\.sh\\'" . sh-mode)) (use-package fennel-mode :ensure t :mode ("\\.fnl\\'" . fennel-mode) :hook (fennel-mode . macrostep-mode)) (use-package macrostep :ensure t) (use-package zig-mode :ensure t :mode ("\\.zig\\'" . zig-mode) :hook (zig-mode . lsp-deferred)) (use-package cc-mode) (use-package markdown-mode :ensure t :mode ("\\.md\\'" . markdown-mode)) (use-package lua-mode :ensure t :mode ("\\.lua\\'" . lua-mode)) (use-package rust-mode :ensure t :mode ("\\.rs\\'" . rust-mode)) (use-package go-mode :ensure t :mode ("\\.go\\'" . go-mode)) (use-package typescript-mode :ensure t :mode ("\\.ts\\'" . typescript-mode)) (use-package toml-mode :ensure t :mode ("\\.toml\\'" . toml-mode)) (use-package yaml-mode :ensure t :mode ("\\.ya?ml\\'" . yaml-mode))