.s/.emacs.d/settings.org
2022-10-25 22:13:43 -06:00

263 lines
6.9 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+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
** use-package
#+BEGIN_SRC emacs-lisp
(dolist (package '(use-package))
(unless (package-installed-p package)
(package-install package)))
#+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
#+BEGIN_SRC emacs-lisp
(org-babel-do-load-languages
'org-babel-load-languages
'((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
* Development
** Git
#+BEGIN_SRC emacs-lisp
(use-package magit :ensure t)
#+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 (;; replace XXX-mode with concrete major-mode(e. g. python-mode)
(elixir-mode . lsp)
(rust-mode . lsp)
(typescript-mode . lsp)
;; if you want which-key integration
(lsp-mode . lsp-enable-which-key-integration))
:commands lsp)
#+END_SRC
** Languages
*** Common Lisp
**** Slime
#+BEGIN_SRC emacs-lisp
(use-package slime
:ensure t
:init
(setq inferior-lisp-program "sbcl"))
#+END_SRC
*** Elixir
#+BEGIN_SRC emacs-lisp
(use-package elixir-mode
:ensure t)
#+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
**** 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 (("\\.js\\'" . web-mode)
("\\.jsx\\'" . web-mode)
("\\.ts\\'" . 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 'web-mode-hook #'(lambda ()
(enable-minor-mode
'("\\.jsx?\\'" . prettier-js-mode))
(enable-minor-mode
'("\\.tsx?\\'" . prettier-js-mode))))
#+END_SRC