From d670eedb47a78430429ddf7f3adc5261704c83ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Benencia?= Date: Tue, 15 Oct 2024 22:02:20 -0700 Subject: emacs: get started with emacs literate config --- .emacs.d/rul-emacs.org | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 .emacs.d/rul-emacs.org (limited to '.emacs.d/rul-emacs.org') diff --git a/.emacs.d/rul-emacs.org b/.emacs.d/rul-emacs.org new file mode 100644 index 0000000..64a4be8 --- /dev/null +++ b/.emacs.d/rul-emacs.org @@ -0,0 +1,81 @@ +This is (will be) my Emacs literate configuration file. A self +contained file with all my configuration is useful for documentation +purposes. It will be modeled using the technique described by +Protesilaos for his own Emacs config file: +. + +This method consists in generating all files /a priori/, after modifying +this file, and *not* at load time, as that would be too slow. + +#+begin_src emacs-lisp :tangle no :results none +(org-babel-tangle) +#+end_src + +* Directory and file structure + +- =early-init.el=: quoting the [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Early-Init-File.html][Emacs documentation]], this file is "loaded + before the package system and GUI is initialized, so in it you can + customize variables that affect the package initialization process" +- =init.el=: the skeleton of my configuration framework. It will load + the rest of the modules. +- =rul-emacs-modules/=: a directory with Emacs modules specific to my + configuration. Modules group code related to a topic or theme of + configuration. For example, =rul-prog.el= contains code related to + programming, and =rul-org.el= contains code related to org-mode. If a + module gets too big, I can create a smaller module under the same + topic; for example, =rul-org-agenda.el=. +- =rul-post-init.el=: this file will be loaded after =init.el=, and will + normally live in other git repository. Here I normally add overrides + needed in my work computer. +- =rul-emacs.org=: this file. It (will) generate the rest of the structure. + +* The early init + +** Graphical aspects +Customization of graphical aspects of Emacs, such as size, panels, etc. + +#+begin_src emacs-lisp :tangle "early-init.el" +;; I don't use any of these +(menu-bar-mode -1) +(tool-bar-mode -1) +(scroll-bar-mode -1) + +;; Avoid initial flash of light. +;; Inspired on prot-emacs-avoid-initial-flash-of-light. +(setq mode-line-format nil) +(set-face-attribute 'default nil :background "#000000" :foreground "#ffffff") +(set-face-attribute 'mode-line nil :background "#000000" :foreground "#ffffff" :box 'unspecified) +#+end_src + +** Frame configuration +I like to keep a few frames open all the time. A main frame, where I +open my org files, code, etc. A frame for communication and reading, +such as email and feeds, and a frame for terminals. + +Currently, the frames are all the same, but I will add configuration +to distinguish them so I can automate their placement in my desktop +environment. + +#+begin_src emacs-lisp :tangle "early-init.el" +;; Do not resize when font size changes +(setq frame-resize-pixelwise t) + +;; By default, start maximized +(add-to-list 'default-frame-alist '(fullscreen . maximized)) + +;; No need for titlebar +(modify-frame-parameters nil '((undecorated . t))) +#+end_src + +** Miscellany +#+begin_src emacs-lisp :tangle "early-init.el" +;; Initialise installed packages, otherwise, basic functions are not +;; available during the initialization stage. +(setq package-enable-at-startup t) + +;; Do not report warnings. It's too noisy. +(setq native-comp-async-report-warnings-errors 'silent) +#+end_src + + + -- cgit v1.2.3