#+TITLE: Simponic's Settings #+AUTHOR: Simponic #+STARTUP: fold * Packages ** Melpa #+BEGIN_SRC emacs-lisp (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) #+END_SRC * General emacs ** Tab bar mode #+BEGIN_SRC emacs-lisp (defun my-tabbar-buffer-groups () ;; customize to show all normal files in one group (list (cond ((string-equal "*" (substring (buffer-name) 0 1)) "emacs") ((eq major-mode 'dired-mode) "emacs") (t "user")))) (setq tabbar-buffer-groups-function 'my-tabbar-buffer-groups) (tab-bar-mode) #+END_SRC ** Indentation #+BEGIN_SRC emacs-lisp (setq default-tab-width 2) (setq-default tab-width 2) (setq-default indent-tabs-mode nil) #+END_SRC ** Line numbers #+BEGIN_SRC emacs-lisp (setq display-line-numbers-type 'relative) (global-display-line-numbers-mode) #+END_SRC ** Filesystem stuff #+BEGIN_SRC emacs-lisp (setq auto-save-default nil) (setq make-backup-files nil) (setq create-lockfiles nil) (global-auto-revert-mode t) ;; Change files on disk as they are updated #+END_SRC ** GUI stuff #+BEGIN_SRC emacs-lisp (menu-bar-mode -1) (setq inhibit-startup-screen t) ;; Startup screen (if (display-graphic-p) (funcall (lambda () (tool-bar-mode -1) ;; System bar (set-fringe-mode '(1 . 1)) ;; Minimize arrows before and after wrapped lines by setting fringe to 1px (toggle-scroll-bar -1)))) ;; Scroll bar (setq frame-resize-pixelwise t) ;; Use 100% of window space #+END_SRC ** System path (macos) #+BEGIN_SRC emacs-lisp ;; Use system path on macos - needed for node (use-package exec-path-from-shell :ensure t :init (when (memq window-system '(mac ns x)) (exec-path-from-shell-initialize))) #+END_SRC * Theming ** Highlight current line #+BEGIN_SRC emacs-lisp (global-hl-line-mode) #+END_SRC ** Font #+BEGIN_SRC emacs-lisp (let ((font "CozetteVector-14")) (set-face-attribute 'default nil :font font) (set-frame-font font nil t)) #+END_SRC ** Doom-themes #+BEGIN_SRC emacs-lisp (use-package doom-themes :ensure t :config ;; Global settings (defaults) (setq doom-themes-enable-bold t ; if nil, bold is universally disabled doom-themes-enable-italic t) ; if nil, italics is universally disabled (load-theme 'doom-gruvbox-light t) ;; Enable flashing mode-line on errors (doom-themes-visual-bell-config) ;; Enable custom neotree theme (all-the-icons must be installed!) (doom-themes-neotree-config) ;; or for treemacs users (setq doom-themes-treemacs-theme "doom-atom") ; use "doom-colors" for less minimal icon theme (doom-themes-treemacs-config) ;; Corrects (and improves) org-mode's native fontification. (doom-themes-org-config)) #+END_SRC ** Doom-modeline #+BEGIN_SRC emacs-lisp (use-package doom-modeline :ensure t :init (doom-modeline-mode 1)) #+END_SRC ** All the icons #+BEGIN_SRC emacs-lisp (use-package all-the-icons :ensure t) #+END_SRC * Projectile #+BEGIN_SRC emacs-lisp (use-package projectile :bind ("C-c p" . 'projectile-command-map) :init (projectile-mode +1) (setq projectile-enable-caching t) :ensure t) #+END_SRC * Swiper, Ivy #+BEGIN_SRC emacs-lisp (use-package counsel :ensure t :bind ("C-s" . 'swiper-isearch) ("M-x" . 'counsel-M-x) :init (setq ivy-use-virtual-buffers t) (setq enable-recursive-minibuffers t) (ivy-mode 1)) #+END_SRC * Neotree #+BEGIN_SRC emacs-lisp (use-package neotree :ensure t :bind ("C-c j" . 'neotree-toggle) :init ;; slow rendering (setq inhibit-compacting-font-caches t) ;; set icons theme (setq neo-theme (if (display-graphic-p) 'icons 'arrow)) ;; Every time when the neotree window is opened, let it find current file and jump to node (setq neo-smart-open t) ;; When running ‘projectile-switch-project’ (C-c p p), ‘neotree’ will change root automatically (setq projectile-switch-project-action 'neotree-projectile-action) (setq neo-window-width 35) ;; show hidden files (setq-default neo-show-hidden-files t)) #+END_SRC * Org mode ** General #+BEGIN_SRC emacs-lisp (setq org-startup-indented t) #+END_SRC ** Babel *** Elixir #+BEGIN_SRC emacs-lisp (use-package ob-elixir :ensure t) #+END_SRC *** Load Languages #+BEGIN_SRC emacs-lisp (org-babel-do-load-languages 'org-babel-load-languages '((lisp . t) (elixir . t) (emacs-lisp . t) (python . t))) #+END_SRC ** org-bullets #+BEGIN_SRC emacs-lisp (use-package org-bullets :ensure t :init (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) #+END_SRC ** org-appear #+BEGIN_SRC emacs-lisp (use-package org-appear :ensure t :init (add-hook 'org-mode-hook 'org-appear-mode)) #+END_SRC ** Presentations #+BEGIN_SRC emacs-lisp (use-package org-present :ensure t :straight '(org-present :type git :host github :repo "rlister/org-present")) #+END_SRC * Development ** Git #+BEGIN_SRC emacs-lisp (use-package magit :ensure t) #+END_SRC ** Autocomplete #+BEGIN_SRC emacs-lisp (use-package auto-complete :ensure t) (ac-config-default) #+END_SRC ** Company mode #+BEGIN_SRC emacs-lisp (use-package company :ensure t :init (global-company-mode t) :bind (:map company-active-map ("C-n" . company-select-next) ("C-p" . company-select-previous)) :config (setq company-idle-delay 0.3)) #+END_SRC ** LSP Mode #+BEGIN_SRC emacs-lisp (use-package lsp-mode :ensure t :init ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") (setq lsp-keymap-prefix "C-c l") :hook ((python-mode . lsp) ;; pip install python-lsp-server pyls-black pyls-isort pyls-mypy (elixir-mode . lsp) (rust-mode . lsp) (java-mode . lsp) (php-mode . lsp) (typescript-mode . lsp) ;; npm install -g typescript typescript-language-server (lsp-mode . lsp-enable-which-key-integration)) :config (lsp-register-custom-settings '(("pyls.plugins.pyls_mypy.enabled" t t) ("pyls.plugins.pyls_mypy.live_mode" nil t) ("pyls.plugins.pyls_black.enabled" t t) ("pyls.plugins.pyls_isort.enabled" t t))) :commands lsp) #+END_SRC ** Languages *** Common Lisp **** Formatter! semantic-refactor #+BEGIN_SRC emacs-lisp (use-package srefactor :ensure t :hook ((before-save . (lambda () (when (eq major-mode 'lisp-mode) (srefactor-lisp-format-buffer)))))) (require 'srefactor) (require 'srefactor-lisp) #+END_SRC **** Rainbow Parentheses #+BEGIN_SRC emacs-lisp (use-package rainbow-delimiters :ensure t) (add-hook 'lisp-mode-hook #'rainbow-delimiters-mode) #+END_SRC **** Slime #+BEGIN_SRC emacs-lisp (use-package slime :ensure t :init (setq inferior-lisp-program "sbcl")) #+END_SRC **** AC-Slime #+BEGIN_SRC emacs-lisp (use-package ac-slime :ensure t :straight '(ac-slime :type git :host github :repo "purcell/ac-slime")) (add-hook 'slime-mode-hook 'set-up-slime-ac) (add-hook 'slime-repl-mode-hook 'set-up-slime-ac) (eval-after-load "auto-complete" '(add-to-list 'ac-modes 'slime-repl-mode)) #+END_SRC *** Elixir #+BEGIN_SRC emacs-lisp (use-package elixir-mode :ensure t :hook ((before-save . elixir-format))) #+END_SRC *** Rust After installing the ~rust-analyzer~ program, the following can be used: #+BEGIN_SRC emacs-lisp (use-package rust-mode :ensure t) (setq lsp-rust-server 'rust-analyzer) #+END_SRC *** Web Stuff **** typescript-mode #+BEGIN_SRC emacs-lisp ;; TODO: Update to tree-sitter in Emacs 29 (use-package typescript-mode :ensure t) (setq typescript-indent-level 2) #+END_SRC **** TIDE #+BEGIN_SRC emacs-lisp (defun setup-tide-mode () (interactive) (tide-setup) (flycheck-mode +1) (setq flycheck-check-syntax-automatically '(save mode-enabled)) (eldoc-mode +1) (tide-hl-identifier-mode +1) ;; company is an optional dependency. You have to ;; install it separately via package-install ;; `M-x package-install [ret] company` (company-mode +1)) (use-package tide :ensure t :after (typescript-mode company flycheck) :hook ((typescript-mode . setup-tide-mode) ;; TODO: Update to tree-sitter in Emacs 29 (js2-mode . setup-tide-mode))) #+END_SRC **** Web Mode #+BEGIN_SRC emacs-lisp ;; web-mode (setq web-mode-markup-indent-offset 2) (setq web-mode-code-indent-offset 2) (setq web-mode-css-indent-offset 2) (use-package web-mode :ensure t :mode (("\\.scss\\'" . web-mode) ("\\.css\\'" . web-mode) ("\\.jsx\\'" . web-mode) ("\\.tsx\\'" . web-mode) ("\\.html\\'" . web-mode)) :commands web-mode) #+END_SRC **** Prettier #+BEGIN_SRC emacs-lisp (use-package prettier-js :ensure t) (add-hook 'js2-mode-hook 'prettier-js-mode) (add-hook 'typescript-mode 'prettier-js-mode) (add-hook 'web-mode-hook 'prettier-js-mode) #+END_SRC **** Prisma #+BEGIN_SRC emacs-lisp (use-package prisma-mode :ensure t :straight '(prisma-mode :type git :host github :repo "pimeys/emacs-prisma-mode")) #+END_SRC **** Svelte #+BEGIN_SRC emacs-lisp (use-package svelte-mode :ensure t :straight '(svelte-mode :type git :host github :repo "leafOfTree/svelte-mode")) #+END_SRC *** Kotlin #+BEGIN_SRC emacs-lisp (use-package kotlin-mode :ensure t) #+END_SRC *** Java #+BEGIN_SRC emacs-lisp (use-package lsp-java :config (add-hook 'java-mode-hook 'lsp) :ensure t) #+END_SRC #+RESULTS: : t *** PHP #+BEGIN_SRC emacs-lisp (use-package php-mode :ensure t) #+END_SRC #+RESULTS: ** Format All The Buffers #+BEGIN_SRC emacs-lisp (use-package format-all :ensure t) (add-hook 'prog-mode-hook 'format-all-mode) (add-hook 'format-all-mode-hook 'format-all-ensure-formatter) #+END_SRC #+RESULTS: | format-all-ensure-formatter | * Elcord #+BEGIN_SRC emacs-lisp (use-package elcord :ensure t) (elcord-mode) #+END_SRC