From f776a5ccc9bc012eec419350d4a9811f837e6335 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Thu, 9 Jul 2015 15:35:26 +0430 Subject: [PATCH] theme extension added --- fg42-config.el | 7 ++++--- lib/extensions/development.el | 2 +- lib/extensions/editor-theme.el | 17 +++++++++++++++++ lib/extensions/editor.el | 5 ++--- lib/extensions/editor/init.el | 2 +- lib/extensions/ruby.el | 2 +- lib/extensions/web.el | 2 +- lib/fg42/base.el | 26 +++++++++++++++++++------- 8 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 lib/extensions/editor-theme.el diff --git a/fg42-config.el b/fg42-config.el index 7829296..f588c2f 100644 --- a/fg42-config.el +++ b/fg42-config.el @@ -2,18 +2,19 @@ (toggle-debug-on-error) (require 'fg42) +;; Load the default theme +(theme themes/color-theme-monokai) + ;; Activate these extensions (activate-extensions 'editor 'development 'web + 'editor-theme 'ruby) ;; Disable abilities which we do not want to load (disable 'rbenv) -;; Load the default theme -(theme themes/color-theme-monokai) - ;; Load user config file in ~/.fg42 (load-user-config "~/.fg42") diff --git a/lib/extensions/development.el b/lib/extensions/development.el index 40ae814..4fe8b11 100644 --- a/lib/extensions/development.el +++ b/lib/extensions/development.el @@ -17,7 +17,7 @@ ;; Extension ------------------------------------- (extension development - :version "2.67" + :version "2.31" :on-initialize extension/development-initialize) (provide 'extensions/development) diff --git a/lib/extensions/editor-theme.el b/lib/extensions/editor-theme.el new file mode 100644 index 0000000..a132fb1 --- /dev/null +++ b/lib/extensions/editor-theme.el @@ -0,0 +1,17 @@ +(require 'fpkg) +(require 'fg42/extension) + +;; Dependencies ---------------------------------- +(depends-on 'color-theme) + +(defun extensions/editor-theme-initialize () + "Initialize 'editor-theme' extension." + (message "Initializing 'editor-theme' extension.") + (load-default-theme)) + +;; Extension ------------------------------------- +(extension editor-theme + :version "2.31" + :on-initialize extensions/editor-theme-initialize) + +(provide 'extensions/editor-theme) diff --git a/lib/extensions/editor.el b/lib/extensions/editor.el index 84276c2..e1e960d 100644 --- a/lib/extensions/editor.el +++ b/lib/extensions/editor.el @@ -3,7 +3,6 @@ (require 'extensions/editor/init) ;; Dependencies ---------------------------------- -(depends-on 'color-theme) (depends-on 'ido) (depends-on 'ido-vertical-mode) (depends-on 'multiple-cursors) @@ -13,7 +12,7 @@ ;; Extension ------------------------------------- (extension editor - :version "2.67" - :on-initialize extension/editor-initialize) + :version "2.31" + :on-initialize extensions/editor-initialize) (provide 'extensions/editor) diff --git a/lib/extensions/editor/init.el b/lib/extensions/editor/init.el index a1df75a..1508943 100644 --- a/lib/extensions/editor/init.el +++ b/lib/extensions/editor/init.el @@ -6,7 +6,7 @@ (load-file (concat (getenv "FG42_HOME") "/fg42-config.el"))) ;;;###autoload -(defun extension/editor-initialize () +(defun extensions/editor-initialize () "Base plugin initialization." (message "Initializing 'editor' extension.") diff --git a/lib/extensions/ruby.el b/lib/extensions/ruby.el index ef8d0ed..acdf955 100644 --- a/lib/extensions/ruby.el +++ b/lib/extensions/ruby.el @@ -21,7 +21,7 @@ ;; Extension ------------------------------------- (extension ruby - :version "2.67" + :version "2.31" :on-initialize extensions/ruby-initialize) (provide 'extensions/ruby) diff --git a/lib/extensions/web.el b/lib/extensions/web.el index 229fbf0..6368a6e 100644 --- a/lib/extensions/web.el +++ b/lib/extensions/web.el @@ -18,7 +18,7 @@ ;; Extension ------------------------------------- (extension web - :version "2.67" + :version "2.31" :on-initialize extensions/web-initialize) (provide 'extensions/web) diff --git a/lib/fg42/base.el b/lib/fg42/base.el index c3faf85..569d4da 100644 --- a/lib/fg42/base.el +++ b/lib/fg42/base.el @@ -1,17 +1,29 @@ (require 'cl-lib) (require 'fg42/extension) +;; Vars ----------------------------------- +(defvar default-theme nil "Default FG42 theme.") + ;; Macros --------------------------------- -(defmacro theme (name) - "Load the given theme name" +(defmacro theme (name &optional local) + "Mark the given theme name as default them. +local should be 't' if theme is on FG42 it self" `(progn - (require ',(intern (symbol-name name))) - (eval-after-load "color-theme" - '(progn - (color-theme-initialize) - (,name))))) + (setq default-theme ',(intern (symbol-name name))) + (when (not (null ,local)) + (depends-on default-theme)))) ;; Functions ------------------------------ +(defun load-default-theme () + "Load the given theme name" + + (require default-theme) + (eval-after-load "color-theme" + '(progn + (color-theme-initialize) + (funcall (symbol-function default-theme)))) + (require 'color-theme)) + (defun load--extension (extension) "Load a single extension and call its :on-initialize function" (let ((lib (concat "extensions/" (symbol-name extension))))