[emacs][wip] define use-feature for use-package without straight.el
[~bandali/configs] / init.org
index 42fba09..6f38d73 100644 (file)
--- a/init.org
+++ b/init.org
@@ -207,6 +207,13 @@ does that (and more).  See =straight-package-neutering-mode=.
 
 *** =straight.el=
 
+#+begin_quote
+Next-generation, purely functional package manager for the Emacs
+hacker.
+#+end_quote
+
+=straight.el= allows me to have a fully reproducible Emacs setup.
+
 #+begin_src emacs-lisp
 (setq straight-repository-branch "develop")
 
@@ -226,6 +233,19 @@ does that (and more).  See =straight-package-neutering-mode=.
 (setq straight-use-package-by-default t)
 #+end_src
 
+Since we enable =straight.el='s =straight-use-package-by-default=
+integration, we will define a =use-feature= for plain ole
+=use-package= without any of the =straight.el= stuff.
+
+#+begin_src emacs-lisp
+(defmacro use-feature (name &rest args)
+  "Like `use-package', but with `straight-use-package-by-default' disabled."
+  (declare (indent defun))
+  `(use-package ,name
+     :straight nil
+,@args))
+#+end_src
+
 *** COMMENT Borg
 
 #+begin_quote
@@ -330,8 +350,7 @@ definitely don't want it mixing with =init.el=. So, here; let's give
 it it's own file. While at it, treat themes as safe.
 
 #+begin_src emacs-lisp
-(use-package custom
-  :straight nil
+(use-feature custom
   :no-require t
   :config
   (setq custom-file (no-littering-expand-etc-file-name "custom.el"))
@@ -385,8 +404,7 @@ login; so starting the server from inside Emacs is good enough for me.
 See [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html#Emacs-Server][Using Emacs as a Server]].
 
 #+begin_src emacs-lisp
-(use-package server
-  :straight nil
+(use-feature server
   :defer 1
   :config (or (server-running-p) (server-mode)))
 #+end_src
@@ -750,7 +768,18 @@ customizing it.
             'auto-compile-inhibit-compile-detached-git-head))
 #+end_src
 
-*** Org
+*** [[https://orgmode.org/][Org]]
+
+#+begin_quote
+Org mode is for keeping notes, maintaining TODO lists, planning
+projects, and authoring documents with a fast and effective plain-text
+system.
+#+end_quote
+
+In short, my favourite way of life.
+
+First, we have to resort to a [[https://github.com/raxod502/straight.el#installing-org-with-straightel][hack]] to be able to use the correct
+latest version of Org from upstream.
 
 #+begin_src emacs-lisp
   (use-package git)
@@ -781,25 +810,20 @@ customizing it.
                  "--abbrev=0"
                  "HEAD")))))
 
-  (provide 'org-version)
-
-  (use-package org
-    :defer 0.8) ; or org-plus-contrib if desired
+(provide 'org-version)
 #+end_src
 
-*** COMMENT [[https://orgmode.org/][Org mode]]
+We will use the =org-plus-contrib= package to get the whole deal:
 
-#+begin_quote
-Org mode is for keeping notes, maintaining TODO lists, planning
-projects, and authoring documents with a fast and effective plain-text
-system.
-#+end_quote
+#+begin_src emacs-lisp
+(straight-use-package 'org-plus-contrib)
+#+end_src
 
-In short, my favourite way of life.
+And here's where my actual Org configurations begin:
 
 #+begin_src emacs-lisp
-(use-package org
-  :defer 1
+(use-feature org
+  :defer 0.5
   :config
   (setq org-src-tab-acts-natively t
         org-src-preserve-indentation nil
@@ -829,7 +853,7 @@ In short, my favourite way of life.
   '(org-block ((t (:background "#1d1f21"))))
   '(org-latex-and-related ((t (:foreground "#b294bb")))))
 
-(use-package ox-latex
+(use-feature ox-latex
   :after ox
   :config
   (setq org-latex-listings 'listings
@@ -846,7 +870,7 @@ In short, my favourite way of life.
                  ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
                t))
 
-(use-package ox-beamer
+(use-feature ox-beamer
   :after ox)
 
 (use-package orgalist