Browse Source

Cleanup startup code

main
parent
commit
1ee62b438d
  1. 120
      modules/core.org

120
modules/core.org

@ -10,65 +10,43 @@
Minimal configuration to make Emacs usable for my own personal workflow. This does little in the ways of improving the visuals, only removing what's included by default and not required. Read more about my technique in my post *Immutable Emacs*[fn:1]. Minimal configuration to make Emacs usable for my own personal workflow. This does little in the ways of improving the visuals, only removing what's included by default and not required. Read more about my technique in my post *Immutable Emacs*[fn:1].
* Startup
+ Packages are managed with *straight.el*[fn:2]
+ Packages are installed with *use-package*[fn:3]
Emacs creates a lot of files relative to ~user-emacs-directory~, these files are not part of this immutable configuration and do not belong in the emacs directory. How can we solve this issue? Shortly after initialization, before most packages load, we change the value to ~dotfiles/cache~. I elaborate more on the technique in my post *Immutable Emacs*[fn:1]
#+begin_src emacs-lisp
(setq user-emacs-directory dotfiles/cache)
#+end_src
Because this project uses version-control, we can disable more unwanted features:
+ Lock files
+ Backup files
#+begin_src emacs-lisp
(setq create-lockfiles nil
make-backup-files nil)
#+end_src
* Packages
Download and install packages using *straight.el*[fn:2], a functional package manager that integrates with *use-package*[fn:3], giving more control over sourcing packages.
+ Use the development branch
+ Integrate with *use-package*[fn:3]
** Options
Apply the configurations prior to bootstrapping the package manager, by setting (writing) to the variables that =straight= will ultimately read from.
#+begin_src emacs-lisp
(setq straight-repository-branch "develop"
straight-use-package-by-default t)
#+end_src
* Babel
** Setup
*Organize your plain life in plain text*
Bootstrap the package manager, downloading, installing, or configuring depending on the state of the configuration. All packages build from source, pinned to specific git commit hashes.
#+begin_src emacs-lisp
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
#+end_src
*Org mode*[fn:4] is one of the hallmark features of Emacs, and provides the basis for my *Literate Programming*[fn:5] platform. It's essentially a markdown language with rich features for project management, scheduling, development, and writing. It's hard to convey everything within its capabilities.
** Integration
+ Setup ~shell~ and ~emacs-lisp~ as *Babel Languages*[fn:6]
+ Configure *Structure Templates*[fn:7] for both languages
Complete the integration with *use-package*[fn:3] by installing it with *straight.el*[fn:2].
#+begin_src emacs-lisp #+begin_src emacs-lisp
(straight-use-package 'use-package)
(use-package org
:hook (org-mode . (lambda ()
(org-indent-mode)
(visual-line-mode 1)
(variable-pitch-mode 1)))
:custom (org-ellipsis " ▾")
(org-log-done 'time)
(org-log-into-drawer t)
(org-return-follows-link t)
(org-image-actual-width nil)
(org-directory dotfiles/home)
(org-src-fontify-natively t)
(org-src-tab-acts-natively t)
(org-src-preserve-indentation t)
(org-confirm-babel-evaluate nil)
(org-todo-keywords '((sequence "TODO" "START" "WAIT" "DONE")))
:config (require 'org-tempo)
(add-to-list 'org-structure-template-alist '("s" . "src"))
(add-to-list 'org-structure-template-alist '("q" . "quote"))
(add-to-list 'org-structure-template-alist '("e" . "example"))
(add-to-list 'org-structure-template-alist '("sh" . "src shell"))
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
(org-babel-do-load-languages 'org-babel-load-languages '((shell . t)
(emacs-lisp . t))))
#+end_src #+end_src
* Cleanup * Cleanup
@ -106,42 +84,6 @@ Emacs has a long history of running on machines without gigabytes of available m
gnutls-min-prime-bits 4096) gnutls-min-prime-bits 4096)
#+end_src #+end_src
* Babel
*Organize your plain life in plain text*
*Org mode*[fn:4] is one of the hallmark features of Emacs, and provides the basis for my *Literate Programming*[fn:5] platform. It's essentially a markdown language with rich features for project management, scheduling, development, and writing. It's hard to convey everything within its capabilities.
+ Setup ~shell~ and ~emacs-lisp~ as *Babel Languages*[fn:6]
+ Configure *Structure Templates*[fn:7] for both languages
#+begin_src emacs-lisp
(use-package org
:hook (org-mode . (lambda ()
(org-indent-mode)
(visual-line-mode 1)
(variable-pitch-mode 1)))
:custom (org-ellipsis " ▾")
(org-log-done 'time)
(org-log-into-drawer t)
(org-return-follows-link t)
(org-image-actual-width nil)
(org-directory dotfiles/home)
(org-src-fontify-natively t)
(org-src-tab-acts-natively t)
(org-src-preserve-indentation t)
(org-confirm-babel-evaluate nil)
(org-todo-keywords '((sequence "TODO" "START" "WAIT" "DONE")))
:config (require 'org-tempo)
(add-to-list 'org-structure-template-alist '("s" . "src"))
(add-to-list 'org-structure-template-alist '("q" . "quote"))
(add-to-list 'org-structure-template-alist '("e" . "example"))
(add-to-list 'org-structure-template-alist '("sh" . "src shell"))
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
(org-babel-do-load-languages 'org-babel-load-languages '((shell . t)
(emacs-lisp . t))))
#+end_src
* Resources * Resources
[fn:1] https://chrishayward.xyz/posts/immutable-emacs/ [fn:1] https://chrishayward.xyz/posts/immutable-emacs/

Loading…
Cancel
Save