docs(emacs): user user-lisp/ dir instead of plain lisp/ dir

Also precompile user-lisp content if the ELC files are older than
their original source file.
This commit is contained in:
2026-05-03 01:11:40 +02:00
parent e42b591bd8
commit 1ea379f907
17 changed files with 69 additions and 36 deletions

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Basic Configuration #+title: Emacs — Basic Configuration
#+setupfile: ../headers #+setupfile: ../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/basic-config.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/basic-config.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Basic Configuration * Basic Configuration

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Custom Elisp #+title: Emacs — Custom Elisp
#+setupfile: ../headers #+setupfile: ../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/custom-elisp.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/custom-elisp.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Custom Elisp * Custom Elisp

View File

@@ -78,6 +78,8 @@ block.
#+end_src #+end_src
** Loading All Configuration Modules ** Loading All Configuration Modules
Here are all my Emacs configuration modules, each dedicated to a
specific aspect of my Emacs configuration.
#+name: emacs-modules #+name: emacs-modules
| Module Name | Config Page | | Module Name | Config Page |
@@ -98,27 +100,58 @@ block.
| =visual-config.el= | [[file:./packages/visual-config.org][Packages — Visual Configuration]] | | =visual-config.el= | [[file:./packages/visual-config.org][Packages — Visual Configuration]] |
| =keybindings.el= | [[file:./keybindings.org][Keybindings]] | | =keybindings.el= | [[file:./keybindings.org][Keybindings]] |
#+name: generate-modules #+name: modules
#+begin_src emacs-lisp :tangle no :cache yes :var modules=emacs-modules :exports none #+begin_src emacs-lisp :tangle no :cache yes :var modules=emacs-modules :exports none :results list
(mapconcat (lambda (line) (mapcar (lambda (module) (string-trim (car module) "=" "="))
(concat "\"" (string-trim (car line) "=" "=") "\"")) modules)
modules
" ")
#+end_src #+end_src
#+RESULTS[05f9bb535bec2ba84390cc118600323683f51e7c]: generate-modules #+RESULTS[1c6034eb268577137e95a6f828c249fc306943b1]: modules
: "basic-config.el" "custom-elisp.el" "package-manager.el" "keybinding-managers.el" "applications.el" "autocompletion.el" "editing.el" "emacs-builtin.el" "helpful.el" "latex.el" "misc.el" "org.el" "programming.el" "visual-config.el" "keybindings.el" - basic-config.el
- custom-elisp.el
- package-manager.el
- keybinding-managers.el
- applications.el
- autocompletion.el
- editing.el
- emacs-builtin.el
- helpful.el
- latex.el
- misc.el
- org.el
- programming.el
- visual-config.el
- keybindings.el
#+begin_src emacs-lisp :noweb yes The first thing Emacs does is verify if any of these modules need to
(dolist (module '(<<generate-modules()>>)) be byte-compiled again, i.e. if the =.el= file is younger than its
corresponding =.elc= file. If so, the =.el= file is byte-compiled.
#+begin_src emacs-lisp :var modules=modules :results none
(defun my/mtime (file)
"Get the modification time of FILE as a timestamp."
(let* ((current-time-list nil)
(attr (file-attributes file))
(time-attr (file-attribute-modification-time attr)))
(/ (car time-attr) (cdr time-attr))))
;; `modules' is a variable created by org-mode from the table of modules
(let* ((config-dir (expand-file-name "user-lisp" user-emacs-directory))
(modules (mapcar (lambda (module)
(file-name-sans-extension (expand-file-name module config-dir)))
modules)))
(dolist (module modules)
(let* ((el-file (concat module ".el"))
(elc-file (concat module ".elc"))
(el-last-change (my/mtime el-file))
(elc-last-change (if (file-exists-p elc-file) (my/mtime elc-file) 0)))
(when (> el-last-change elc-last-change)
(byte-compile-file el-file)))))
#+end_src
Now we can load them.
#+begin_src emacs-lisp :var modules=modules :results none
(dolist (module (mapcar #'file-name-sans-extension modules))
(load (expand-file-name module (load (expand-file-name module
(expand-file-name "lisp" user-emacs-directory)))) (expand-file-name "user-lisp" user-emacs-directory))))
#+end_src #+end_src
* TODOs :noexport:
** TODO advise ~evil-insert~ in eshell
Advise ~evil-insert~ to go to the end of the buffer while in
~eshell-mode~.
** DONE Get started with org-roam
CLOSED: [2023-06-17 Sat 13:38]

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Keybinding Managers #+title: Emacs — Keybinding Managers
#+setupfile: ../headers #+setupfile: ../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/keybinding-managers.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/keybinding-managers.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Keybinding Managers * Keybinding Managers

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Keybindings #+title: Emacs — Keybindings
#+setupfile: ../headers #+setupfile: ../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/keybindings.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/keybindings.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Keybindings * Keybindings
@@ -263,7 +263,7 @@ I also have some keybindings dedicated to opening specific files.
"fI" '((lambda () "fI" '((lambda ()
(interactive) (interactive)
(quick-find-files nil (quick-find-files nil
(expand-file-name "lisp" user-emacs-directory) (expand-file-name "user-lisp" user-emacs-directory)
"el")) "el"))
:which-key "elisp config" :which-key "elisp config"
:package quick-find-files) :package quick-find-files)

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Package Manager #+title: Emacs — Package Manager
#+setupfile: ../headers #+setupfile: ../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/package-manager.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/package-manager.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Package Manager * Package Manager

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — Applications #+title: Emacs — Packages — Applications
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/applications.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/applications.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Applications * Applications

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — Autocompletion #+title: Emacs — Packages — Autocompletion
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/autocompletion.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/autocompletion.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Autocompletion * Autocompletion

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — Editing #+title: Emacs — Packages — Editing
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/editing.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/editing.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — Emacs Built-ins #+title: Emacs — Packages — Emacs Built-ins
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/emacs-builtin.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/emacs-builtin.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — EXWM (Deprecated) #+title: Emacs — Packages — EXWM (Deprecated)
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/exwm.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/exwm.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* EXWM (Deprecated) * EXWM (Deprecated)

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — Making My Life Easier #+title: Emacs — Packages — Making My Life Easier
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/helpful.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/helpful.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Making my life easier * Making my life easier

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — LaTeX #+title: Emacs — Packages — LaTeX
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/latex.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/latex.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* LaTeX * LaTeX

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — Misc #+title: Emacs — Packages — Misc
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/misc.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/misc.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Misc * Misc

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — Org Mode #+title: Emacs — Packages — Org Mode
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/org.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/org.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Org-mode * Org-mode

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — Programming #+title: Emacs — Packages — Programming
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/programming.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/programming.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Programming * Programming

View File

@@ -1,7 +1,7 @@
#+title: Emacs — Packages — Visual Configuration #+title: Emacs — Packages — Visual Configuration
#+setupfile: ../../headers #+setupfile: ../../headers
#+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code #+property: header-args:emacs-lisp :mkdirp yes :lexical t :exports code
#+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/lisp/visual-config.el #+property: header-args:emacs-lisp+ :tangle ~/.config/emacs/user-lisp/visual-config.el
#+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export #+property: header-args:emacs-lisp+ :mkdirp yes :noweb no-export
* Visual Configuration * Visual Configuration