emacs/init.org

67 lines
2.2 KiB
Org Mode
Raw Normal View History

#+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