Skip to content

Commit

Permalink
Clean up init file
Browse files Browse the repository at this point in the history
- 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.
  • Loading branch information
jimeh committed Aug 8, 2017
1 parent 8cc0540 commit b2ce61c
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 73 deletions.
57 changes: 57 additions & 0 deletions core/siren-init.el
@@ -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
3 changes: 3 additions & 0 deletions siren-modules.el → core/siren-modules.el
Expand Up @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions siren-theme.el → core/siren-theme.el
Expand Up @@ -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))
Expand Down
24 changes: 24 additions & 0 deletions core/siren-vendor.el
@@ -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 changes: 2 additions & 73 deletions init.el
Expand Up @@ -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

0 comments on commit b2ce61c

Please sign in to comment.