.s/.emacs.d/settings.org

456 lines
12 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
* image-types hack (thanks macos)
#+BEGIN_SRC emacs-lisp
(setq image-types '(svg png gif tiff jpeg xpm xbm pbg))
#+END_SRC
* 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
tab-width 2
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
make-backup-files nil
create-lockfiles nil)
(global-auto-revert-mode t) ;; Change files on disk as they are updated
#+END_SRC
** Move by whole line units not visually
#+BEGIN_SRC emacs-lisp
(setq line-move-visual nil)
#+END_SRC
** GUI stuff
#+BEGIN_SRC emacs-lisp
(menu-bar-mode -1)
(setq inhibit-startup-screen t ;; Startup screen
frame-resize-pixelwise t) ;; Use 100% of window space
(defun do-frame-config ()
(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))
(defun disable-scroll-bars (frame)
(modify-frame-parameters frame
'((vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil))))
(when (display-graphic-p)
(do-frame-config)
(add-hook 'after-make-frame-functions 'disable-scroll-bars))
#+END_SRC
** System path (macos)
#+BEGIN_SRC emacs-lisp
(use-package exec-path-from-shell
:ensure t
:init
(when (memq window-system '(mac ns x))
(exec-path-from-shell-initialize)))
#+END_SRC
* Theming
** Line spacing
#+BEGIN_SRC emacs-lisp
(setq line-spacing 0.24)
#+END_SRC
** Highlight current line
#+BEGIN_SRC emacs-lisp
(global-hl-line-mode)
#+END_SRC
** Font
#+BEGIN_SRC emacs-lisp
(let ((font "JetBrains Mono-12:style=Regular"))
(set-face-attribute 'default nil :font font)
(set-frame-font font nil t))
#+END_SRC
** Catppuccin and theme notify watcher
#+BEGIN_SRC emacs-lisp
(use-package catppuccin-theme
:ensure t)
(require 'filenotify)
(setq *theme-file* "~/theme")
(defun set-system-theme ()
(let ((theme
(with-temp-buffer
(insert-file-contents *theme-file*)
(buffer-string)))
(current-flavor catppuccin-flavor))
(setq catppuccin-flavor (if (string-prefix-p "dark" theme) 'mocha 'latte))
(if (not (eq catppuccin-flavor current-flavor))
(catppuccin-reload))))
(set-system-theme)
(file-notify-add-watch *theme-file* '(change)
#'(lambda (event) (set-system-theme)))
#+END_SRC
** Doom-modeline
#+BEGIN_SRC emacs-lisp
(use-package doom-modeline
:ensure t
:config
(doom-modeline-mode 1))
#+END_SRC
** Icons
must run ~(all-the-icons-install-fonts)~ and ~(nerd-fonts-install-fonts)~
#+BEGIN_SRC emacs-lisp
(use-package all-the-icons
:ensure t)
(use-package nerd-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
org-html-postamble nil
org-html-preamble t)
#+END_SRC
** Babel
*** Elixir
#+BEGIN_SRC emacs-lisp
(use-package ob-elixir
:ensure t)
#+END_SRC
*** JS
#+BEGIN_SRC emacs-lisp
(require 'ob-js)
#+END_SRC
*** Load Languages
#+BEGIN_SRC emacs-lisp
(org-babel-do-load-languages
'org-babel-load-languages
'((lisp . t)
(elixir . t)
(emacs-lisp . t)
(js . 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
*** Copilot
#+BEGIN_SRC emacs-lisp
(use-package copilot
:straight (:host github :repo "copilot-emacs/copilot.el" :files ("dist" "*.el"))
:ensure t
:config
(setq copilot-indent-offset-warning-disable t))
(define-key copilot-completion-map (kbd "C-c c") 'copilot-accept-completion)
(define-key copilot-completion-map (kbd "C-c c") 'copilot-accept-completion)
(add-hook 'prog-mode-hook 'copilot-mode)
#+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
(setq lsp-keymap-prefix "C-c l")
:hook ((python-ts-mode . lsp) ;; pip install python-lsp-server pyls-black pyls-isort pyls-mypy
(elixir-mode . lsp)
(rust-mode . lsp)
(go-ts-mode . lsp)
(java-mode . lsp)
(php-mode . lsp)
(c-mode . lsp)
(typescript-ts-mode . lsp)
(tsx-ts-mode . lsp)
(lsp-mode . lsp-enable-which-key-integration))
:config (progn
(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
** Tree-Sitter
#+BEGIN_SRC emacs-lisp
(use-package treesit-auto
:ensure t
:custom (treesit-auto-install 'prompt)
:config
(treesit-auto-add-to-auto-mode-alist 'all)
(global-treesit-auto-mode))
#+END_SRC
** Languages
*** Common Lisp
**** 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
**** cl-indentify
#+BEGIN_SRC emacs-lisp
;; roswell is in the AUR
;; ros install cl-indentify
(defun on-lisp-save-cl-indentify ()
(when (eq major-mode 'lisp-mode)
(shell-command
(format "~/.roswell/bin/cl-indentify -r %s" (buffer-file-name)))))
(add-hook 'after-save-hook
#'on-lisp-save-cl-indentify)
#+END_SRC
*** Elixir
#+BEGIN_SRC emacs-lisp
(use-package elixir-mode
:ensure t
:hook ((before-save .
(lambda ()
(when (eq major-mode 'elixir-mode)
(elixir-format))))))
#+END_SRC
*** Rust
After installing the ~rust-analyzer~, 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
**** astro
#+BEGIN_SRC emacs-lisp
(use-package astro-ts-mode
:ensure t)
;; note - do treesit-install-language-grammar astro @ https://github.com/virchau13/tree-sitter-astro
#+END_SR
**** Web Mode
#+BEGIN_SRC emacs-lisp
(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
**** 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
**** Prettier
#+BEGIN_SRC emacs-lisp
(use-package prettier-js
:ensure t)
(add-hook 'astro-ts-mode-hook 'prettier-js-mode)
(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
*** 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
*** PHP
#+BEGIN_SRC emacs-lisp
(use-package php-mode
:ensure t)
#+END_SRC
** Format All The Buffers
#+BEGIN_SRC emacs-lisp
(use-package format-all
:ensure t)
(add-hook 'prog-mode-hook 'format-all-mode)
(add-hook 'astro-ts-mode-hook 'format-all-mode)
(add-hook 'format-all-mode-hook 'format-all-ensure-formatter)
#+END_SRC
* Multiple Cursors
#+BEGIN_SRC emacs-lisp
(use-package multiple-cursors
:straight t
:ensure t
:bind (("H-SPC" . set-rectangular-region-anchor)
("C-M-SPC" . set-rectangular-region-anchor)
("C->" . mc/mark-next-like-this)
("C-<" . mc/mark-previous-like-this)
("C-c C->" . mc/mark-all-like-this)
("C-c C-SPC" . mc/edit-lines)))
#+END_SRC
* Elcord
#+BEGIN_SRC emacs-lisp
(use-package elcord
:config
(setq elcord-idle-message "Idling..."
elcord-idle-timer 300
elcord-refresh-rate 3)
:ensure t)
(elcord-mode)
#+END_SRC
* Cookbook
#+BEGIN_SRC emacs-lisp
(use-package org-chef
:config
(setq org-capture-templates
'(("c" "Cookbook" entry (file "~/org/cookbook.org")
"%(org-chef-get-recipe-from-url)"
:empty-lines 1)
("m" "Manual Cookbook" entry (file "~/org/cookbook.org")
"* %^{Recipe title: }\n :PROPERTIES:\n :source-url:\n :servings:\n :prep-time:\n :cook-time:\n :ready-in:\n :END:\n** Ingredients\n %?\n** Directions\n\n")))
:ensure t)
#+END_SRC