From b2ce61cf6d54559df85aa8b16cae70c5885c00f9 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Tue, 8 Aug 2017 02:25:01 +0100 Subject: [PATCH] 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. --- core/siren-init.el | 57 +++++++++++++++++ siren-modules.el => core/siren-modules.el | 3 + siren-theme.el => core/siren-theme.el | 3 + core/siren-vendor.el | 24 ++++++++ init.el | 75 +---------------------- 5 files changed, 89 insertions(+), 73 deletions(-) create mode 100644 core/siren-init.el rename siren-modules.el => core/siren-modules.el (95%) rename siren-theme.el => core/siren-theme.el (72%) create mode 100644 core/siren-vendor.el diff --git a/core/siren-init.el b/core/siren-init.el new file mode 100644 index 0000000..253bfa1 --- /dev/null +++ b/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 diff --git a/siren-modules.el b/core/siren-modules.el similarity index 95% rename from siren-modules.el rename to core/siren-modules.el index 25c7de0..a0ddf8f 100644 --- a/siren-modules.el +++ b/core/siren-modules.el @@ -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) diff --git a/siren-theme.el b/core/siren-theme.el similarity index 72% rename from siren-theme.el rename to core/siren-theme.el index 05bb455..cacaf51 100644 --- a/siren-theme.el +++ b/core/siren-theme.el @@ -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)) diff --git a/core/siren-vendor.el b/core/siren-vendor.el new file mode 100644 index 0000000..05b1f1b --- /dev/null +++ b/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 diff --git a/init.el b/init.el index 7bdd047..9692f98 100644 --- a/init.el +++ b/init.el @@ -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