diff --git a/.config/emacs/init.org b/.config/emacs/init.org index 67e401b..236f1f9 100644 --- a/.config/emacs/init.org +++ b/.config/emacs/init.org @@ -113,9 +113,8 @@ Finish up (provide 'early-init) ;;; early-init.el ends here #+end_src - ** Elpaca -#+BEGIN_SRC emacs-lisp +#+BEGIN_SRC emacs-lisp :tangle no ;; -*- lexical-binding: t -*- (defvar elpaca-installer-version 0.3) (defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory)) @@ -158,13 +157,97 @@ Finish up (setq elpaca-queue-limit 30) #+END_SRC +** Package Management +#+begin_src emacs-lisp +;; Also read: +(setq package-archives + '(("elpa" . "https://elpa.gnu.org/packages/") + ("elpa-devel" . "https://elpa.gnu.org/devel/") + ("nongnu" . "https://elpa.nongnu.org/nongnu/") + ("melpa" . "https://melpa.org/packages/"))) +;; Add MELPA to `package-archives' +(add-to-list 'package-archives + '("melpa" . "https://melpa.org/packages/")) + + +;; Proof-of-concept to install a list of packages +(mapc + (lambda (package) + (unless (package-installed-p package) + (package-install package))) + '(recentf + dashboard + olivetti + ligature + highlight-quoted + doom-modeline + hydra + multiple-cursors + evil + evil-collection + evil-surround + evil-snipe + evil-commentary + evil-goggles + all-the-icons-ibuffer + ace-window + popper + centaur-tabs + all-the-icons-completion + vertico + savehist + embark + embark-consult + marginalia + all-the-icons-completion + orderless + consult + consult-lsp + dirvish + smtpmail + sendmail + age + avy + helpful + vterm + undo-fu + undo-fu-session + vundo + which-key + company + company + lsp-mode + lsp-ui + flycheck + dap-mode + rustic + ob-rust + typescript-mode + disaster + haskell-mode + clojure-mode + cider + fsharp-mode + go-mode + json-mode + markdown-mode + org-bullets + org-kanban + restclient + magit)) + +(package-initialize) +(setopt package-vc-selected-packages + '((dashboard . "554dc6f") + (doom-themes :url "https://github.com/JosephFerano/doom-themes"))) + +#+end_src ** Benchmarking This is commented out since it adds ever so slightly to init time, but keep it around in case we need to benchmark slow init times later. #+begin_src emacs-lisp :tangle no -(elpaca 'benchmark-init) (require 'benchmark-init) (add-hook 'after-init-hook 'benchmark-init/deactivate) #+end_src @@ -228,20 +311,20 @@ This shows up when building Emacs; #+end_quote ** Visuals *** Initial Buffer -#+begin_src emacs-lisp +#+begin_src emacs-lisp :tangle no (setq initial-buffer-choice "~/.config/emacs/init.org") #+end_src *** Dashboard Use Dashboard.el. First load `all-the-icons` for nicer rendering +#+begin_src emacs-lisp -#+begin_src emacs-lisp :tangle no ;; (elpaca 'all-the-icons) -(elpaca (dashboard :ref "554dc6f") -;; (elpaca 'dashboard - (dashboard-setup-startup-hook) +;; (package-vc-install (dashboard :ref) +(require 'dashboard) +(dashboard-setup-startup-hook) (setq dashboard-items '((recents . 6) - (projecss . 5) + (projects . 5) (bookmarks . 5))) (setq dashboard-startup-banner 'logo) (setq dashboard-center-content t) @@ -253,33 +336,29 @@ Use Dashboard.el. First load `all-the-icons` for nicer rendering (add-hook 'dashboard-mode-hook (lambda () (setq-local line-spacing 12) +;; TODO: It's not jumping (dashboard-jump-to-recents))) - (defun joe/launch-dashboard () - "Jump to the dashboard buffer, if doesn't exists create one." - (interactive) - (switch-to-buffer dashboard-buffer-name) - (dashboard-mode) - (dashboard-insert-startupify-lists))) + ;; (defun joe/launch-dashboard () + ;; "Jump to the dashboard buffer, if doesn't exists create one." + ;; (interactive) + ;; (switch-to-buffer dashboard-buffer-name) + ;; (dashboard-mode) + ;; (dashboard-insert-startupify-lists)) #+end_src *** Olivetti #+begin_src emacs-lisp -(elpaca 'olivetti (require 'olivetti) (setq olivetti-minimum-body-width 100) -(global-set-key (kbd "C-x x o") 'olivetti-mode)) +(global-set-key (kbd "C-x x o") 'olivetti-mode) #+end_src *** Themes #+begin_src emacs-lisp ;; Small changes to my favorite themes -(elpaca - '(doom-themes :host github :repo "doomemacs/themes" - :remotes ("fork" :repo "JosephFerano/doom-themes")) - -(load-theme 'doom-nord-light)) +;; (load-theme 'doom-nord-light)) (setq custom-safe-themes t) @@ -299,15 +378,13 @@ our case is worse since we have a literate file. Send all custom variables to ~c Save the chosen theme after picking a new one -#+begin_src emacs-lisp tangle: no +#+begin_src emacs-lisp (defun joe/save-current-theme (THEME) (let ((inhibit-message t) (message-log-max nil)) (customize-save-variable 'custom-enabled-themes custom-enabled-themes))) (advice-add 'consult-theme :after #'joe/save-current-theme) -;; (advice-remove 'load-theme 'joe/save-current-theme) - #+end_src *** Other @@ -348,13 +425,13 @@ Setup other stuff ;; Don’t compact font caches during GC, in case doom modeline gets laggy issue (setq inhibit-compacting-font-caches t) -(elpaca 'ligature -(global-ligature-mode)) +(require 'ligature) +(global-ligature-mode) -(elpaca 'highlight-quoted -(add-hook 'emacs-lisp-mode-hook 'highlight-quoted-mode)) +(require 'highlight-quoted) +(add-hook 'emacs-lisp-mode-hook 'highlight-quoted-mode) -(elpaca 'doom-modeline +(require 'doom-modeline) (doom-modeline-mode) (doom-modeline-def-modeline 'main '(workspace-name bar modals bar window-number matches buffer-info remote-host buffer-position word-count selection-info) @@ -363,7 +440,7 @@ Setup other stuff ;; Set default mode-line (add-hook 'doom-modeline-mode-hook (lambda () - (doom-modeline-set-modeline 'main 'default)))) + (doom-modeline-set-modeline 'main 'default))) ;; TODO Likely not needed anymore @@ -444,7 +521,7 @@ weren't working, until I randomly saw this in someone's init.el #+end_src *** Hydra #+begin_src emacs-lisp -(elpaca 'hydra +(require 'hydra) (defhydra hydra-navigate (global-map "") "Window Navigation" @@ -455,12 +532,12 @@ weren't working, until I randomly saw this in someone's init.el ("y" joe/smooth-scroll-short-up "line up") ("n" next-line "line down") ("p" previous-line "line up") - ("M-r" move-to-window-line-top-bottom "Reposition cursor"))) + ("M-r" move-to-window-line-top-bottom "Reposition cursor")) #+end_src *** Multiple Cursors #+begin_src emacs-lisp -(elpaca 'multiple-cursors) +(require 'multiple-cursors) #+end_src *** Meow #+begin_src emacs-lisp :tangle no @@ -612,7 +689,7 @@ weren't working, until I randomly saw this in someone's init.el (setq evil-disable-insert-state-bindings t) (setq evil-echo-state nil) -(elpaca 'evil +(require 'evil) (evil-mode t) (evil-global-set-key 'insert (kbd "C-w") #'evil-delete-backward-word) @@ -686,27 +763,27 @@ weren't working, until I randomly saw this in someone's init.el (defun joe/scroll-up-line () (interactive) (scroll-up-line 2)) (defun joe/scroll-down-line () (interactive) (scroll-down-line 2)) (evil-global-set-key 'normal (kbd "C-e") #'joe/scroll-up-line) - (evil-global-set-key 'normal (kbd "C-y") #'joe/scroll-down-line)) + (evil-global-set-key 'normal (kbd "C-y") #'joe/scroll-down-line) -(elpaca 'evil-collection - (evil-collection-init)) +(require 'evil-collection) +(evil-collection-init) -(elpaca 'evil-surround - (global-evil-surround-mode t)) +(require 'evil-surround) +(global-evil-surround-mode t) -;; (elpaca 'evil-snipe -;; (require 'evil-snipe) -;; (evil-snipe-mode +1)) +;; (require 'evil-snipe) +;; (evil-snipe-mode +1) +;; (evil-snipe-override-mode +1) -(elpaca 'evil-commentary - (evil-commentary-mode t)) +(require 'evil-commentary) +(evil-commentary-mode t) -(elpaca 'evil-goggles +(require 'evil-goggles) (evil-goggles-mode t) (setq evil-goggles-duration 0.075) (setq evil-goggles-pulse t) - (setq evil-goggles-async-duration 0.55)) + (setq evil-goggles-async-duration 0.55) #+end_src ** Buffers @@ -722,7 +799,7 @@ weren't working, until I randomly saw this in someone's init.el (global-set-key (kbd "C-x k") #'joe/kill-this-buffer-or-popup) (global-set-key (kbd "C-x M-k") #'kill-buffer) -(elpaca 'all-the-icons-ibuffer) +(require 'all-the-icons-ibuffer) (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode) (global-set-key [remap list-buffers] 'ibuffer) (global-set-key (kbd "C-x B") 'ibuffer) @@ -766,7 +843,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun (define-key ctl-x-4-map (kbd "-") #'joe/window-split-horizontal) (define-key ctl-x-4-map (kbd "t") #'rotate-window) -(elpaca 'ace-window) +(require 'ace-window) (global-set-key (kbd "C-x o") #'ace-window) (global-set-key (kbd "C-x C-o") #'ace-swap-window) @@ -779,7 +856,6 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun *** Popper #+begin_src emacs-lisp -(elpaca 'popper (require 'popper) (setq popper-reference-buffers '("\\*compilation\\*" compilation-mode @@ -849,7 +925,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun (setq popper-display-function #'joe/popper-display-func) -(popper-mode t)) +(popper-mode t) #+end_src *** Scrolling #+begin_src emacs-lisp :tangle no @@ -893,13 +969,13 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun (global-set-key (kbd "C-S-v") #'joe/smooth-scroll-short-down) (global-set-key (kbd "M-S-v") #'joe/smooth-scroll-short-up) -(elpaca 'topspace) +(require 'topspace) #+end_src ** Tabs/Workspaces *** Centaur Tabs #+begin_src emacs-lisp -(elpaca 'centaur-tabs +(require 'centaur-tabs) (setq centaur-tabs-set-bar 'under) (setq x-underline-at-descent-line t) (setq centaur-tabs-set-close-button nil) @@ -946,7 +1022,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun (t "Emacs"))))) -(centaur-tabs-mode +1)) +(centaur-tabs-mode +1) #+end_src *** Tabs #+begin_src emacs-lisp :tangle no @@ -1002,20 +1078,21 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun Vertico Embark Marginalia Consult Orderless #+begin_src emacs-lisp - (elpaca 'all-the-icons-completion) - (elpaca '(vertico :files (:defaults "extensions/*") - :includes (vertico-indexed - vertico-repeat - vertico-directory)) + (require 'all-the-icons-completion) + ;; (require '(vertico :files (:defaults "extensions/*") + ;; :includes (vertico-indexed + ;; vertico-repeat + ;; vertico-directory)) +(require 'vertico) (vertico-mode) ;; (elpaca 'vertico-posframe) - (define-key vertico-map (kbd "C-w") #'vertico-directory-delete-word) + ;; (define-key vertico-map (kbd "C-w") #'vertico-directory-delete-word) ;; (define-key vertico-map (kbd "C-r") #'vertico-repeat-) ;; (vertico-posframe-mode t) - (vertico-indexed-mode) + ;; (vertico-indexed-mode) ;; (setq vertico-posframe-parameters ;; '((left-fringe . 100) ;; (right-fringe . 100))) @@ -1038,7 +1115,7 @@ Vertico Embark Marginalia Consult Orderless (add-hook 'minibuffer-setup-hook #'vertico-repeat-save) (add-to-list 'savehist-additional-variables 'vertico-repeat-history) - (define-key vertico-map (kbd "C-M-n") #'vertico-next-group)) + (define-key vertico-map (kbd "C-M-n") #'vertico-next-group) ;; #' "C-M-p" #'vertico-previous-group) @@ -1049,7 +1126,7 @@ Vertico Embark Marginalia Consult Orderless ;; ("M-DEL" . vertico-directory-delete-word)) ;; :hook (rfn-eshadow-update-overlay . vertico-directory-tidy)) - (elpaca 'embark + (require 'embark) (setq embark-quit-after-action '((kill-buffer . nil))) @@ -1106,11 +1183,11 @@ Vertico Embark Marginalia Consult Orderless (advice-add #'embark-completing-read-prompter :around #'embark-hide-which-key-indicator) - (global-set-key (kbd "C-'") #'embark-act)) + (global-set-key (kbd "C-'") #'embark-act) - (elpaca 'embark-consult) + (require 'embark-consult) - (elpaca 'marginalia + (require 'marginalia) (setq marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)) (setq marginalia-align 'right) (setq marginalia-max-relative-age most-positive-fixnum) @@ -1120,17 +1197,17 @@ Vertico Embark Marginalia Consult Orderless (all-the-icons-completion-mode) (all-the-icons-completion-marginalia-setup) - (add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup)) + (add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup) - (elpaca 'orderless + (require 'orderless) (setq completion-styles '(orderless basic) - completion-category-overrides '((file (styles basic partial-completion))))) + completion-category-overrides '((file (styles basic partial-completion)))) #+end_src *** Consult #+begin_src emacs-lisp -(elpaca 'consult) -(elpaca 'consult-lsp) +(require 'consult) +(require 'consult-lsp) ;; (defun joe/consult-line () ;; (interactive) @@ -1149,7 +1226,7 @@ Vertico Embark Marginalia Consult Orderless #+end_src ** Dirvish/Dired #+begin_src emacs-lisp -(elpaca 'dirvish) +(require 'dirvish) (with-eval-after-load 'dirvish (dirvish-override-dired-mode) (setq delete-by-moving-to-trash t) @@ -1228,7 +1305,7 @@ Vertico Embark Marginalia Consult Orderless ** Avy #+begin_src emacs-lisp -(straight-use-package 'avy) +(require 'avy) (setq avy-case-fold-search nil) (setq avy-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?u ?i ?o ?p ?z ?x ?c ?v ?n ?m)) (define-key global-map (kbd "C-;") 'avy-goto-char) ;; I use this most frequently @@ -1237,21 +1314,20 @@ Vertico Embark Marginalia Consult Orderless (define-key global-map (kbd "M-g e") 'avy-goto-word-0) ;; lots of candidates (define-key global-map (kbd "M-g g") 'avy-goto-line) ;; digits behave like goto-line (define-key global-map (kbd "M-g w") 'avy-goto-word-1) ;; first character of the word -(define-key global-map (kbd "M-g P") 'avy-pop-mark)) +(define-key global-map (kbd "M-g P") 'avy-pop-mark) #+end_src ** Helpful #+begin_src emacs-lisp -(elpaca 'helpful +(require 'helpful) (global-set-key (kbd "C-h f") #'helpful-callable) (global-set-key (kbd "C-h v") #'helpful-variable) (global-set-key (kbd "C-h k") #'helpful-key) (global-set-key (kbd "C-h C-d") #'helpful-at-point) (global-set-key (kbd "C-h F") #'helpful-function) -(global-set-key (kbd "C-h C") #'helpful-command)) +(global-set-key (kbd "C-h C") #'helpful-command) #+end_src ** Terminals/Shells #+begin_src emacs-lisp -(elpaca 'vterm (require 'vterm) (setq vterm-shell "/bin/fish") (setq vterm-timer-delay 0.01) @@ -1284,7 +1360,7 @@ Vertico Embark Marginalia Consult Orderless (when (boundp 'evil-mode) (evil-define-key 'insert vterm-mode-map (kbd "C-w") #'vterm-send-C-w) (evil-define-key 'insert vterm-mode-map (kbd "") #'vterm-send-delete)) - (setq-local global-hl-line-mode nil)))) + (setq-local global-hl-line-mode nil))) #+end_src VTerm is loading TRAMP along with it which slows down init time noticeably so call this after @@ -1295,22 +1371,20 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i #+end_src ** Undo Fu #+begin_src emacs-lisp - (elpaca 'undo-fu - (undo-fu-session-global-mode +1) - (setq undo-limit 6710886400) ;; 64mb. - (setq undo-strong-limit 100663296) ;; 96mb. - (setq undo-outer-limit 1006632960)) ;; 960mb. +(require 'undo-fu) + (undo-fu-session-global-mode +1) + (setq undo-limit 6710886400) ;; 64mb. + (setq undo-strong-limit 100663296) ;; 96mb. + (setq undo-outer-limit 1006632960) ;; 960mb. - (elpaca 'undo-fu-session - (setq undo-fu-session-incompatible-files '("/COMMIT_EDITMSG\\'" "/git-rebase-todo\\'")) - - ) - (elpaca 'vundo) +(require 'undo-fu-session) + (setq undo-fu-session-incompatible-files '("/COMMIT_EDITMSG\\'" "/git-rebase-todo\\'")) +(require 'vundo) #+end_src ** Which Key #+begin_src emacs-lisp -(elpaca 'which-key +(require 'which-key) (setq which-key-idle-delay 0.3) (which-key-mode) (when (boundp 'evil-mode) @@ -1325,7 +1399,7 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i "SPC t" '("Tabs") "SPC p" '("Packages") "SPC s" '("Shell (vterm)") - "SPC h" '("Help")))) + "SPC h" '("Help"))) #+end_src ** IDE Features *** REPLs @@ -1336,13 +1410,9 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i (evil-define-key 'insert comint-mode-map (kbd "C-p") 'comint-previous-input)) #+end_src *** Company -#+begin_src rust -println!("Hello world"); -#+end_src #+begin_src emacs-lisp - (setq completion-in-region-function (lambda (&rest args) (apply (if vertico-mode @@ -1350,14 +1420,14 @@ println!("Hello world"); #'completion--in-region) args))) -(elpaca 'company) +(require 'company) (with-eval-after-load 'company -(add-to-list 'completion-at-point-functions #'elisp-completion-at-point) -(require 'company) -(setq company-minimum-prefix-length 1) -(setq company-tooltip-align-annotations t) -(setq company-minimum-prefix-length 2) + (add-to-list 'completion-at-point-functions #'elisp-completion-at-point) + (require 'company) + (setq company-minimum-prefix-length 1) + (setq company-tooltip-align-annotations t) + (setq company-minimum-prefix-length 2) (define-key company-active-map (kbd "C-n") nil) (define-key company-active-map (kbd "C-p") nil) (define-key company-active-map (kbd "") nil) @@ -1376,12 +1446,12 @@ println!("Hello world"); ;; company-echo-metadata-frontend) company-backends '((company-capf company-elisp company-files))) (setq company-transformers '(company-sort-by-occurrence)) - (global-company-mode)) + (global-company-mode)) #+end_src *** LSP #+begin_src emacs-lisp -(elpaca 'lsp-mode +(require 'lsp-mode) (setq lsp-enable-which-key-integration t) (setq lsp-keymap-prefix "C-c c") @@ -1421,22 +1491,22 @@ println!("Hello world"); (--take-while (not (s-equals? "```" it)) it) (--map (s-trim it) it) (s-join " " it)))) - (lsp--render-element (concat "```rust\n" sig "\n```"))))) + (lsp--render-element (concat "```rust\n" sig "\n```")))) -(elpaca 'lsp-ui) +(require 'lsp-ui) #+end_src *** Flycheck #+begin_src emacs-lisp -(elpaca 'flycheck) +(require 'flycheck) ;; TODO Add wrapping to these functions (when (boundp 'evil-mode) (evil-global-set-key 'normal (kbd "M-e") #'flycheck-next-error) (evil-global-set-key 'normal (kbd "M-E") #'flycheck-previous-error) (evil-global-set-key 'normal (kbd "ee") 'flycheck-mode) (evil-global-set-key 'normal (kbd "el") #'flycheck-list-errors) - (evil-global-set-key 'normal (kbd "ce") #'consult-lsp-diagnostics))) + (evil-global-set-key 'normal (kbd "ce") #'consult-lsp-diagnostics)) #+end_src *** Compilation #+begin_src emacs-lisp @@ -1488,7 +1558,6 @@ println!("Hello world"); ** Debugging *** DAP #+begin_src emacs-lisp -(elpaca 'dap-mode (require 'dap-mode) ;; (setq dap-auto-configure-features '(locals breakpoints expressions tooltip)) @@ -1513,20 +1582,20 @@ println!("Hello world"); :cwd "${workspaceFolder}" :console "external" :dap-compilation "cargo build" - :dap-compilation-dir "${workspaceFolder}"))) + :dap-compilation-dir "${workspaceFolder}")) #+end_src ** Languages *** Python #+begin_src emacs-lisp -(elpaca 'elpy) +(require 'elpy) (define-key inferior-python-mode-map (kbd "C-n") #'comint-next-input) (define-key inferior-python-mode-map (kbd "C-p") #'comint-previous-input) #+end_src> *** Rust #+begin_src emacs-lisp -(elpaca 'rustic) -(elpaca 'ob-rust) +(require 'rustic) +(require 'ob-rust) ;; Org-Babel ;; Disabling until we figure out how to get it working ;; (elpaca 'parsec) ;; Required by evcxr-mode @@ -1564,7 +1633,7 @@ println!("Hello world"); #+end_src *** Web #+begin_src emacs-lisp -(elpaca 'typescript-mode) +(require 'typescript-mode) (setq typescript-indent-level 2) #+end_src *** C @@ -1575,7 +1644,7 @@ whether the point hasn't been moved. This way, if I switched to another popper b it doesn't close it. #+begin_src emacs-lisp -(elpaca 'disaster) +(require 'disaster) (defun joe/c-mode-hook () (local-set-key (kbd "C-x c r") (defun joe/make-run () (interactive) (compile "make run"))) (local-set-key (kbd "C-x c c") (defun joe/make () (interactive) (compile "make"))) @@ -1585,7 +1654,7 @@ it doesn't close it. #+end_src *** Haskell #+begin_src emacs-lisp - (elpaca 'haskell-mode) + (require 'haskell-mode) (setq haskell-interactive-popup-errors nil) (when (boundp 'evil-mode) @@ -1595,17 +1664,17 @@ it doesn't close it. #+end_src *** Clojure #+begin_src emacs-lisp -(elpaca 'clojure-mode) -(elpaca 'cider) +(require 'clojure-mode) +(require 'cider) (setq cider-show-error-buffer 'only-in-repl) #+end_src *** OCaml #+begin_src emacs-lisp :tangle no -(elpaca 'tuareg) -(elpaca 'dune) -(elpaca 'utop) -(elpaca 'merlin) -(elpaca 'merlin-eldoc) +(require 'tuareg) +(require 'dune) +(require 'utop) +(require 'merlin) +(require 'merlin-eldoc) ;; Might be worth checking out, depeding on whether we stick with flycheck or not ;; (elpaca 'flycheck-ocaml) ;; Also check this out, see if it adds anything @@ -1646,25 +1715,25 @@ and there's no need for a middle-man when it's already been implemented. #+end_src *** FSharp #+begin_src emacs-lisp -(elpaca 'fsharp-mode) +(require 'fsharp-mode) ;; (elpaca 'eglot-fsharp) #+end_src *** Go #+begin_src emacs-lisp -(elpaca 'go-mode) +(require 'go-mode) ;; (elpaca 'go-imports) #+end_src *** Other #+begin_src emacs-lisp -(elpaca 'json-mode) -(elpaca 'markdown-mode) +(require 'json-mode) +(require 'markdown-mode) #+end_src ** Org Mode #+begin_src emacs-lisp - (elpaca 'org-bullets) + (require 'org-bullets) (defun joe/org-init () (setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG"))) @@ -1704,14 +1773,14 @@ and there's no need for a middle-man when it's already been implemented. (org-indent-mode)) (add-hook 'org-mode-hook 'joe/org-hook) - (elpaca 'org-kanban) + (require 'org-kanban) #+end_src ** Magit The best git porcelain/client I've ever used. Also kill stray magit buffers left over as explained [[https://manueluberti.eu/emacs/2018/02/17/magit-bury-buffer/][here]] #+begin_src emacs-lisp -(elpaca 'magit) +(require 'magit) (defun joe/magit-kill-buffers (param) "Restore window configuration and kill all Magit buffers." @@ -1732,7 +1801,7 @@ The best git porcelain/client I've ever used. Also kill stray magit buffers left ** Restclient #+begin_src emacs-lisp -(elpaca 'restclient) +(require 'restclient) (add-to-list 'auto-mode-alist '("\\.restclient\\'" . restclient-mode))