Clean up init file

- Move most logic from init.el into core/siren-init.el.
- Move siren-modules.el and siren-theme.el into core/ directory.
- Create core/siren-vendor.el to deal with setting up the vendor load
  paths.
- Let core/siren-modules.el and core/siren-theme.el deal with setting
  up their own relevant load paths.
This commit is contained in:
2017-08-08 02:25:01 +01:00
parent 8cc0540e48
commit b2ce61cf6d
5 changed files with 89 additions and 73 deletions

57
core/siren-init.el Normal file
View File

@@ -0,0 +1,57 @@
;;; siren-init.el --- jimeh's Emacs Siren: Initialize all the things
;;; Commentary:
;; Initialize and start loading Emacs Siren config.
;;; Code:
(message "Siren is powering up... Be patient, Master %s!"
(getenv (if (equal system-type 'windows-nt) "USERNAME" "USER")))
;; Check Emacs version.
(when (version< emacs-version "24.1")
(error "Siren requires at least GNU Emacs 24.1, but you're running %s"
emacs-version))
;; Setup basic paths.
(setq siren-core-dir (file-name-directory load-file-name))
(setq siren-dir (expand-file-name ".." siren-core-dir))
(add-to-list 'load-path siren-core-dir)
;; Configure savefile-dir
(setq siren-savefile-dir (expand-file-name "savefile" siren-dir))
(unless (file-exists-p siren-savefile-dir)
(make-directory siren-savefile-dir))
;; Ensure vendor directory load-paths are configured
(require 'siren-vendor)
;; Core stuff
(require 'siren-custom)
(require 'siren-core)
(require 'siren-packages)
(require 'siren-env)
(require 'siren-ui)
(require 'siren-editor)
;; OSX specific
(when (eq system-type 'darwin)
(require 'siren-osx))
;; Linux specific
(when (eq system-type 'gnu/linux)
(require 'siren-linux))
;; config changes made through the customize UI will be store here
(setq custom-file (expand-file-name "custom.el" siren-dir))
(load-file custom-file)
;; The modules
(require 'siren-modules)
;; The theme
(require 'siren-theme)
(provide 'siren-init)
;;; siren-init.el ends here

View File

@@ -6,6 +6,9 @@
;;; Code:
(setq siren-modules-dir (expand-file-name "modules" siren-dir))
(add-to-list 'load-path siren-modules-dir)
;; Modules
(require 'siren-aliases)
(require 'siren-avy)

View File

@@ -6,6 +6,9 @@
;;; Code:
(setq siren-themes-dir (expand-file-name "themes" siren-dir))
(add-to-list 'load-path siren-themes-dir)
(if window-system
(require 'siren-theme-twilight-anti-bright)
(require 'siren-theme-tomorrow-night-paradise))

24
core/siren-vendor.el Normal file
View File

@@ -0,0 +1,24 @@
;;; siren-vendor.el --- jimeh's Emacs Siren: Setup vendor load-paths
;;; Commentary:
;; Setup vendor directory load paths.
;;; Code:
(defun siren-add-subfolders-to-load-path (parent-dir)
"Add all level PARENT-DIR subdirs to the `load-path'."
(dolist (f (directory-files parent-dir))
(let ((name (expand-file-name f parent-dir)))
(when (and (file-directory-p name)
(not (string-prefix-p "." f)))
(add-to-list 'load-path name)
(siren-add-subfolders-to-load-path name)))))
(setq siren-vendor-dir (expand-file-name "vendor" siren-dir))
(add-to-list 'load-path siren-vendor-dir)
(siren-add-subfolders-to-load-path siren-vendor-dir)
(provide 'siren-vendor)
;;; siren-vendor.el ends here

75
init.el
View File

@@ -12,80 +12,9 @@
;;
;; (package-initialize)
(defvar current-user
(getenv (if (equal system-type 'windows-nt) "USERNAME" "USER")))
(message "Siren is powering up... Be patient, Master %s!" current-user)
(when (version< emacs-version "24.1")
(error "Siren requires at least GNU Emacs 24.1, but you're running %s"
emacs-version))
;; Always load newest byte code
(setq load-prefer-newer t)
;; Setup paths
(defvar siren-dir (file-name-directory load-file-name)
"The root dir of the Emacs config.")
(defvar siren-core-dir (expand-file-name "core" siren-dir)
"The home of core stuff.")
(defvar siren-modules-dir (expand-file-name "modules" siren-dir)
"This directory houses all of the modules.")
(defvar siren-themes-dir (expand-file-name "themes" siren-dir)
"This directory houses all of the modules.")
(defvar siren-savefile-dir (expand-file-name "savefile" siren-dir)
"This folder stores all the automatically generated save/history-files.")
(defvar siren-vendor-dir (expand-file-name "vendor" siren-dir)
"This directory houses packages that are not yet available in ELPA (or MELPA).")
(defvar siren-modules-file (expand-file-name "siren-modules.el" siren-dir)
"This files contains a list of modules to be loaded.")
(defvar siren-theme-file (expand-file-name "siren-theme.el" siren-dir)
"This files contains a list of modules to be loaded.")
(unless (file-exists-p siren-savefile-dir)
(make-directory siren-savefile-dir))
(defun siren-add-subfolders-to-load-path (parent-dir)
"Add all level PARENT-DIR subdirs to the `load-path'."
(dolist (f (directory-files parent-dir))
(let ((name (expand-file-name f parent-dir)))
(when (and (file-directory-p name)
(not (string-prefix-p "." f)))
(add-to-list 'load-path name)
(siren-add-subfolders-to-load-path name)))))
(add-to-list 'load-path siren-core-dir)
(add-to-list 'load-path siren-modules-dir)
(add-to-list 'load-path siren-themes-dir)
(add-to-list 'load-path siren-vendor-dir)
(siren-add-subfolders-to-load-path siren-vendor-dir)
;; core stuff
(require 'siren-custom)
(require 'siren-core)
(require 'siren-packages)
(require 'siren-env)
(require 'siren-ui)
(require 'siren-editor)
;; osx specific
(when (eq system-type 'darwin)
(require 'siren-osx))
(when (eq system-type 'gnu/linux)
(require 'siren-linux))
;; config changes made through the customize UI will be store here
(setq custom-file (expand-file-name "custom.el" siren-dir))
(load-file custom-file)
;; the modules
(if (file-exists-p siren-modules-file)
(load siren-modules-file))
;; the theme
(if (file-exists-p siren-theme-file)
(load siren-theme-file))
(load (expand-file-name "core/siren-init.el"
(file-name-directory load-file-name)))
;;; init.el ends here