163 lines
5.1 KiB
Org Mode
163 lines
5.1 KiB
Org Mode
#+TITLE: Emacs Config
|
|
#+AUTHOR: Joseph Ferano
|
|
#+PROPERTY: header-args:emacs-lisp :tangle ./init.el
|
|
#+TOC: true
|
|
|
|
** Package Management
|
|
|
|
*** Straight.el
|
|
|
|
For now, use [[https://github.com/radian-software/straight.el][straight.el]] until [[https://github.com/progfolio/elpaca
|
|
][elpaca]] is ready for production use.
|
|
|
|
First, disable package.el during early init
|
|
|
|
#+BEGIN_SRC emacs-lisp :tangle ./early-init.el
|
|
(setq package-enable-at-startup nil)
|
|
#+END_SRC
|
|
|
|
Then bootstrap
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(declare-function elpaca-generate-autoloads "elpaca")
|
|
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
|
|
(when-let ((elpaca-repo (expand-file-name "repos/elpaca/" elpaca-directory))
|
|
(elpaca-build (expand-file-name "builds/elpaca/" elpaca-directory))
|
|
(elpaca-target (if (file-exists-p elpaca-build) elpaca-build elpaca-repo))
|
|
(elpaca-url "https://www.github.com/progfolio/elpaca.git")
|
|
((add-to-list 'load-path elpaca-target))
|
|
((not (file-exists-p elpaca-repo)))
|
|
(buffer (get-buffer-create "*elpaca-bootstrap*")))
|
|
(condition-case-unless-debug err
|
|
(progn
|
|
(unless (zerop (call-process "git" nil buffer t "clone" elpaca-url elpaca-repo))
|
|
(error "%s" (list (with-current-buffer buffer (buffer-string)))))
|
|
(byte-recompile-directory elpaca-repo 0 'force)
|
|
(require 'elpaca)
|
|
(elpaca-generate-autoloads "elpaca" elpaca-repo)
|
|
(kill-buffer buffer))
|
|
((error)
|
|
(delete-directory elpaca-directory 'recursive)
|
|
(with-current-buffer buffer
|
|
(goto-char (point-max))
|
|
(insert (format "\n%S" err))
|
|
(display-buffer buffer)))))
|
|
(require 'elpaca-autoloads)
|
|
(add-hook 'after-init-hook #'elpaca-process-queues)
|
|
(elpaca (elpaca :host github :repo "progfolio/elpaca"))
|
|
#+END_SRC
|
|
|
|
*** General Settings
|
|
**** Misc Stuff
|
|
#+begin_SRC emacs-lisp
|
|
|
|
(setq vc-follow-symlinks t) ; Visit real file when editing a symlink without prompting.
|
|
(global-auto-revert-mode t) ; Revert buffer's file when the file changes on disk
|
|
|
|
(fset 'yes-or-no-p 'y-or-n-p)
|
|
(prefer-coding-system 'utf-8)
|
|
(set-default-coding-systems 'utf-8)
|
|
(set-terminal-coding-system 'utf-8)
|
|
(set-keyboard-coding-system 'utf-8)
|
|
|
|
(setq gc-cons-threshold 50000000)
|
|
(setq max-specpdl-size 1200)
|
|
(setq max-lisp-eval-depth 800)
|
|
(setq large-file-warning-threshold 100000000)
|
|
|
|
(setq backup-by-copying t
|
|
delete-old-versions t
|
|
kept-new-versions 6
|
|
kept-old-versions 2
|
|
version-control t
|
|
backup-directory-alist '((".*" . (expand-file-name "backups" user-emacs-directory))))
|
|
#+END_SRC
|
|
**** Visuals
|
|
#+begin_src emacs-lisp
|
|
(setq inhibit-startup-screen t)
|
|
(add-hook 'text-mode-hook (lambda () (setq fill-column 100) (turn-on-auto-fill)))
|
|
|
|
(setq-default display-line-numbers 'relative)
|
|
(make-variable-buffer-local 'global-hl-line-mode)
|
|
(set-window-margins nil 0)
|
|
(setq-default right-fringe-width 10)
|
|
(setq scroll-margin 0
|
|
scroll-conservatively 100000
|
|
scroll-preserve-screen-position 1)
|
|
|
|
(global-hl-line-mode +1)
|
|
(column-number-mode +1)
|
|
|
|
(scroll-bar-mode -1)
|
|
(tool-bar-mode -1)
|
|
(menu-bar-mode -1)
|
|
(tooltip-mode -1)
|
|
|
|
(setq custom-safe-themes t)
|
|
;; (load-theme 'doom-vibrant t)
|
|
;; (load-theme 'doom-flatwhite t)
|
|
|
|
#+end_src
|
|
|
|
**** Text
|
|
#+begin_src emacs-lisp
|
|
(set-face-attribute 'default nil :font "Fira Code Nerd Font" :height 105)
|
|
|
|
(setq-default c-basic-offset 4) ;; This is annoying
|
|
(setq-default indent-tabs-mode nil)
|
|
(setq-default tab-width 4)
|
|
(setq indent-line-function 'insert-tab)
|
|
(set-default 'truncate-lines nil)
|
|
(set-default 'truncate-partial-width-windows nil)
|
|
|
|
(setq-default line-spacing 5)
|
|
|
|
(add-hook 'dashboard-mode-hook (lambda () (setq-local line-spacing 12)))
|
|
(add-hook 'before-save-hook 'whitespace-cleanup)
|
|
#+end_src
|
|
|
|
|
|
*** Org Mode
|
|
#+begin_src emacs-lisp
|
|
(require 'org)
|
|
(require 'org-tempo)
|
|
|
|
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
|
|
|
|
(setq org-agenda-files '("~/todo.org"))
|
|
(add-hook 'org-mode-hook
|
|
'(defun joe/org-mode-setup ()
|
|
((org-bullets-mode)
|
|
(org-indent-mode))))
|
|
(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG")))
|
|
;; (elpaca-use-package 'org-bullets)
|
|
#+end_src
|
|
|
|
*** VEMCO (Vertico Embark Marginalia Consult Orderless)
|
|
#+begin_src emacs-lisp
|
|
(elpaca-use-package 'vertico)
|
|
(vertico-mode)
|
|
(vertico-multiform-mode)
|
|
(define-key vertico-map "\M-G" #'vertico-multiform-mode)
|
|
|
|
(elpaca-use-package 'embark)
|
|
(elpaca-use-package 'embark-consult)
|
|
(define-key vertico-map "\M-e" #'embark-act)
|
|
|
|
(elpaca-use-package 'marginalia)
|
|
(marginalia-mode t)
|
|
(setq marginalia-annotators
|
|
'(marginalia-annotators-heavy marginalia-annotators-light nil))
|
|
(elpaca-use-package 'orderless)
|
|
(setq completion-styles '(orderless basic)
|
|
completion-category-overrides '((file (styles basic partial-completion))))
|
|
(elpaca-use-package 'savehist)
|
|
(savehist-mode)
|
|
#+end_src
|
|
|
|
|
|
* COMMENT Local variables
|
|
;; Local Variables:
|
|
;; eval: (add-hook 'after-save-hook '(lambda () (org-babel-tangle)) nil t)
|
|
;; End:
|