67 lines
2.2 KiB
Org Mode
67 lines
2.2 KiB
Org Mode
|
#+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
|