#+title: Setup Crafted Emacs User Configuration File #+PROPERTY: header-args:emacs-lisp :tangle ./init.el :mkdirp yes * Basic configuration ** Set import directories for =crafted-emacs= #+begin_src emacs-lisp ;;; init.el -- Fschl Crafted Emacs user customization file -*- lexical-binding: t; -*- ;; This file is generated from init.org. If you want to edit the ;; configuration, DO NOT edit init.el, edit init.org, instead. (setq user-emacs-directory "~/.config/crafted-emacs-configdir/") (setq crafted-emacs-home "~/src/crafted-emacs/") (setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (when (and custom-file (file-exists-p custom-file)) (load custom-file nil :nomessage)) (load (expand-file-name "modules/crafted-init-config" crafted-emacs-home)) #+end_src ** Add selected =crafted-emacs= packages #+begin_src emacs-lisp (require 'crafted-completion-packages) (require 'crafted-evil-packages) (require 'crafted-org-packages) (require 'crafted-ui-packages) (require 'crafted-ide-packages) (package-install-selected-packages :noconfirm) #+end_src ** Load selected =crafted-emacs= packages #+begin_src emacs-lisp (require 'crafted-defaults-config) (require 'crafted-startup-config) (require 'crafted-completion-config) (require 'crafted-evil-config) (require 'crafted-org-config) (require 'crafted-ui-config) (require 'crafted-ide-config) (unless crafted-startup-inhibit-splash (setq initial-buffer-choice #'crafted-startup-screen)) #+end_src ** Auto-tangle on save Whenever you edit =init.org= in Emacs and save it, it updates =init.el= in the same directory. See the [[https://orgmode.org/manual/Extracting-Source-Code.html][Org Manual]] for details and alternatives. #+begin_src emacs-lisp ;; Tangle the code blocks to config.el on save. (defun org-babel-tangle-config () (when (string-equal (buffer-file-name) (expand-file-name "init.org" user-emacs-directory)) ;; Dynamic scoping to the rescue (let ((org-confirm-babel-evaluate nil)) (org-babel-tangle)))) (add-hook 'org-mode-hook (lambda () (add-hook 'after-save-hook #'org-babel-tangle-config))) #+end_src