Compare commits

...

2 Commits

Author SHA1 Message Date
0f3a412bd9 Added catppuccin to themes. 2025-09-29 03:48:25 -05:00
Micheal Smith
c536a62c14 Started work on making the configuration modular. 2025-09-26 01:32:06 -05:00
6 changed files with 75 additions and 113 deletions

View File

@@ -7,19 +7,23 @@
#+LATEX_HEADER: \lstset{breaklines=true, breakatwhitespace=true, basicstyle=\ttfamily\footnotesize, columns=fullflexible}
#+begin_src emacs-lisp :exports none :tangle no
;; This asks for a file which it uses to store the processed org
;; data with the includes into. It can be anything and can safely
;; be deleted afterwards. I think README.org is a good file to
;; pick if using a repository.
(defun tangle-literate-config ()
"Tangle all my literate configuration files."
"Tangle config files with proper include handling."
(interactive)
(let ((org-confirm-babel-evaluate nil)
(files '("config.org"
"extra/feed.org"
"extra/email.org"
"extra/social.org")))
(dolist (file files)
(when (file-exists-p file)
(message "Tangling %s..." (file-name-nondirectory file))
(org-babel-tangle-file file)))
(message "All configuration files tangled!")))
(let ((org-confirm-babel-evaluate nil))
;; Create a temporary buffer with expanded includes
(with-temp-buffer
(insert-file-contents "config.org")
(org-mode)
;; This expands all #+INCLUDE directives
(org-export-expand-include-keyword)
;; Now tangle from this buffer which has everything in one place
(org-babel-tangle nil "init.el"))
(message "Configuration tangled!")))
#+end_src
#+BEGIN_SRC emacs-lisp :exports none
@@ -114,18 +118,6 @@ loading as a blank slate with only the scratch buffer open.
;; End:
#+end_src
* Basic Editing
The most crucial settings in the whole configuration. Despite the look of my
configuration I do *indeed* use it as an editor.
#+begin_src emacs-lisp
(setq initial-buffer-choice t) ;;*scratch*
(setq-default standard-indent 2)
(setq-default tab-width 2)
(editorconfig-mode)
#+end_src
* Package Management
I am using [[https://github.com/progfolio/elpaca][Elpaca]] as my package manager. I've found it to be quite quick, and easy to
@@ -201,6 +193,18 @@ features.
(setq use-package-always-ensure t))
#+end_src
* Basic Editing
The most crucial settings in the whole configuration. Despite the look of my
configuration I do *indeed* use it as an editor.
#+begin_src emacs-lisp
(setq initial-buffer-choice t) ;;*scratch*
(setq-default standard-indent 2)
(setq-default tab-width 2)
(editorconfig-mode)
#+end_src
* Garbage Collection
There's a lot of clashes that can happen with regards to performance, and
@@ -478,14 +482,6 @@ on a system by system basis.
;;;
#+end_src
# For now I'm not using headers here and letting them be defined in the org files
# themselves.
#+INCLUDE: "extra/email.org" :minlevel 1
#+INCLUDE: "extra/feed.org" :minlevel 1
#+INCLUDE: "extra/social.org" :minlevel 1
* Hail Hydra?!
I find that [[https://github.com/abo-abo/hydra][Hydra]] is great for providing visual menus for tasks that might
@@ -1226,6 +1222,12 @@ the future.
(load-theme 'solarized t))
#+end_src
I like using catppuccin from time to time as well.
#+begin_src emacs-lisp
(use-package catppuccin-theme :ensure t)
#+end_src
** Modeline
Doom emacs has a great modeline in my opinion so I'm using theirs almost
@@ -1287,6 +1289,7 @@ the package.
(c-ts-mode . lsp-deferred)
(clojure-ts-mode . lsp-deferred)
(elixir-ts-mode . lsp-deferred)
(gleam-ts-mode . lsp-deferred)
(rust-ts-mode . lsp-deferred)
(slint-mode . lsp-deferred)
(zig-mode . lsp-deferred)
@@ -1360,6 +1363,10 @@ bother with an explanation on each.
(clojure-ts-mode . rainbow-delimiters-mode)
(clojure-ts-mode . clj-refactor-mode)))
;; Gleam
(use-package gleam-ts-mode
:mode (rx ".gleam" eos))
(use-package cider
:ensure t
:defer t)

View File

@@ -7,19 +7,23 @@
#+LATEX_HEADER: \lstset{breaklines=true, breakatwhitespace=true, basicstyle=\ttfamily\footnotesize, columns=fullflexible}
#+begin_src emacs-lisp :exports none :tangle no
;; This asks for a file which it uses to store the processed org
;; data with the includes into. It can be anything and can safely
;; be deleted afterwards. I think README.org is a good file to
;; pick if using a repository.
(defun tangle-literate-config ()
"Tangle all my literate configuration files."
"Tangle config files with proper include handling."
(interactive)
(let ((org-confirm-babel-evaluate nil)
(files '("config.org"
"extra/feed.org"
"extra/email.org"
"extra/social.org")))
(dolist (file files)
(when (file-exists-p file)
(message "Tangling %s..." (file-name-nondirectory file))
(org-babel-tangle-file file)))
(message "All configuration files tangled!")))
(let ((org-confirm-babel-evaluate nil))
;; Create a temporary buffer with expanded includes
(with-temp-buffer
(insert-file-contents "config.org")
(org-mode)
;; This expands all #+INCLUDE directives
(org-export-expand-include-keyword)
;; Now tangle from this buffer which has everything in one place
(org-babel-tangle nil "init.el"))
(message "Configuration tangled!")))
#+end_src
#+BEGIN_SRC emacs-lisp :exports none
@@ -114,18 +118,6 @@ loading as a blank slate with only the scratch buffer open.
;; End:
#+end_src
* Basic Editing
The most crucial settings in the whole configuration. Despite the look of my
configuration I do *indeed* use it as an editor.
#+begin_src emacs-lisp
(setq initial-buffer-choice t) ;;*scratch*
(setq-default standard-indent 2)
(setq-default tab-width 2)
(editorconfig-mode)
#+end_src
* Package Management
I am using [[https://github.com/progfolio/elpaca][Elpaca]] as my package manager. I've found it to be quite quick, and easy to
@@ -201,6 +193,8 @@ features.
(setq use-package-always-ensure t))
#+end_src
#+INCLUDE: "config/editing.org" :minlevel 1
* Garbage Collection
There's a lot of clashes that can happen with regards to performance, and
@@ -478,14 +472,6 @@ on a system by system basis.
;;;
#+end_src
# For now I'm not using headers here and letting them be defined in the org files
# themselves.
#+INCLUDE: "extra/email.org" :minlevel 1
#+INCLUDE: "extra/feed.org" :minlevel 1
#+INCLUDE: "extra/social.org" :minlevel 1
* Hail Hydra?!
I find that [[https://github.com/abo-abo/hydra][Hydra]] is great for providing visual menus for tasks that might
@@ -1226,6 +1212,12 @@ the future.
(load-theme 'solarized t))
#+end_src
I like using catppuccin from time to time as well.
#+begin_src emacs-lisp
(use-package catppuccin-theme :ensure t)
#+end_src
** Modeline
Doom emacs has a great modeline in my opinion so I'm using theirs almost

11
config/editing.org Normal file
View File

@@ -0,0 +1,11 @@
* Basic Editing
The most crucial settings in the whole configuration. Despite the look of my
configuration I do *indeed* use it as an editor.
#+begin_src emacs-lisp
(setq initial-buffer-choice t) ;;*scratch*
(setq-default standard-indent 2)
(setq-default tab-width 2)
(editorconfig-mode)
#+end_src

View File

@@ -1,12 +1,10 @@
#+PROPERTY: header-args :tangle email.el
Incoming email is handled by [[https://notmuchmail.org][notmuch]]. Outgoing is via [[https://github.com/marlam/msmtp][msmtp]]
This is a pretty simple implementation without a lot of search queries, and
list handling. As I get more comfortable with using emacs as an email client
I'll try to get fancier.
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp :tangle "email.el"
;; Email/notmuch settings -*- lexical-binding: t; -*-
(use-package notmuch
:init

View File

@@ -1,25 +1,8 @@
#+PROPERTY: header-args :tangle "feed.el" :noweb yes
I get a lot of my news, and updates via Atom/RSS feeds. If I'm going to
browse them in emacs I use elfeed.
#+name: header
#+begin_src emacs-lisp :exports none
;;; elfeed -- Just my elfeed config. -*- lexical-binding: t; -*-
;;; Commentary:
;;; Nothing yet.
;;; Code:
#+end_src
#+name: footer
#+begin_src emacs-lisp :exports none
(provide 'feed)
;;; feed.el ends here
#+end_src
#+name: feed-src
#+begin_src emacs-lisp :exports code
#+begin_src emacs-lisp :tangle "feed.el" :exports code
(use-package elfeed
:defer t
@@ -56,9 +39,5 @@ browse them in emacs I use elfeed.
:after (elfeed)
:config
(elfeed-goodies/setup))
<<footer>>
#+end_src
#+RESULTS: feed-src
: feed

View File

@@ -1,40 +1,15 @@
#+PROPERTY: header-args :tangle "social.el" :exports code
* Mastodon, and other tidbits
#+name: header
#+begin_src emacs-lisp :exports none
;;; social -- Provides social features -*- lexical-binding: t; -*-
;;; Commentary:
;;; Only provides Mastodon, and discord presence currently.
;;; Code:
#+end_src
#+RESULTS: header
** Mastodon
Just a little package for browsing mastodon. I don't use it much, but
it's deferred and doesn't take much space.
#+begin_src emacs-lisp
<<header>>
#+begin_src emacs-lisp :tangle "social.el"
(use-package mastodon
:defer t
:config
(setq mastodon-instance-url "https://mastodon.social"
mastodon-active-user "xulfer"))
#+end_src
#+name: footer
#+begin_src emacs-lisp :exports none
;;; social.el ends here
(provide 'social)
#+end_src