core: new layer files packages-config.el and packages-funcs.el

Start to isolate the list of packages. Also we want to define packages
function at the top level of an elisp file in order to not prevent
emacs from knowing where the functions are defined.

This commit has a POC made with elfeed and elixir layers.
This commit is contained in:
syl20bnr 2016-01-31 00:03:04 -05:00
parent 33fd71d4bf
commit 5a061b3813
5 changed files with 196 additions and 172 deletions

View File

@ -637,7 +637,9 @@ path."
"Declare all packages contained in LAYERS."
(let ((layers2 layers)
(warning-minimum-level :error))
(configuration-layer//load-layers-files layers2 '("packages.el"))
(configuration-layer//load-layers-files layers2 '("packages.el"
"packages-config.el"
"pakcages-funs.el"))
;; gather all the packages of current layer
(configuration-layer//sort-packages (configuration-layer/get-packages
layers2 t))))

View File

@ -0,0 +1,134 @@
;;; packages-config.el --- Elixir Layer packages configuration File for Spacemacs
;;
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(defun elixir/init-alchemist ()
(use-package alchemist
:defer t
:init
(progn
(add-hook 'elixir-mode-hook 'alchemist-mode)
(setq alchemist-project-compile-when-needed t)
(push 'alchemist-company company-backends-elixir-mode)
(push 'alchemist-company company-backends-alchemist-iex-mode))
:config
(spacemacs/declare-prefix-for-mode 'elixir-mode "mc" "compile")
(spacemacs/declare-prefix-for-mode 'elixir-mode "me" "eval")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mp" "project")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mh" "help")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mt" "test")
(spacemacs/declare-prefix-for-mode 'elixir-mode "ms" "iex")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mm" "mix")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mx" "execute")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mg" "goto")
(spacemacs/set-leader-keys-for-major-mode 'elixir-mode
"el" 'alchemist-eval-current-line
"eL" 'alchemist-eval-print-current-line
"er" 'alchemist-eval-region
"eR" 'alchemist-eval-print-region
"eb" 'alchemist-eval-buffer
"eB" 'alchemist-eval-print-buffer
"ej" 'alchemist-eval-quoted-current-line
"eJ" 'alchemist-eval-print-quoted-current-line
"eu" 'alchemist-eval-quoted-region
"eU" 'alchemist-eval-print-quoted-region
"ev" 'alchemist-eval-quoted-buffer
"eV" 'alchemist-eval-print-quoted-buffer
"pt" 'alchemist-project-find-test
"gt" 'alchemist-project-toggle-file-and-tests
"gT" 'alchemist-project-toggle-file-and-tests-other-window
"h:" 'alchemist-help
"hH" 'alchemist-help-history
"hh" 'alchemist-help-search-at-point
"hr" 'alchemist-help-search-marked-region
"m:" 'alchemist-mix
"mc" 'alchemist-mix-compile
"mx" 'alchemist-mix-run
"mh" 'alchemist-mix-help
"sc" 'alchemist-iex-compile-this-buffer
"si" 'alchemist-iex-run
"sI" 'alchemist-iex-project-run
"sl" 'alchemist-iex-send-current-line
"sL" 'alchemist-iex-send-current-line-and-go
"sm" 'alchemist-iex-reload-module
"sr" 'alchemist-iex-send-region
"sR" 'alchemist-iex-send-region-and-go
"ta" 'alchemist-mix-test
"tb" 'alchemist-mix-test-this-buffer
"tt" 'alchemist-mix-test-at-point
"tf" 'alchemist-test-file
"tn" 'alchemist-test-jump-to-next-test
"tp" 'alchemist-test-jump-to-previous-test
"tr" 'alchemist-mix-rerun-last-test
"xb" 'alchemist-execute-this-buffer
"xf" 'alchemist-execute-file
"x:" 'alchemist-execute
"cb" 'alchemist-compile-this-buffer
"cf" 'alchemist-compile-file
"c:" 'alchemist-compile
"gg" 'alchemist-goto-definition-at-point
"," 'alchemist-goto-jump-back)
(dolist (mode (list alchemist-compile-mode-map
alchemist-eval-mode-map
alchemist-execute-mode-map
alchemist-message-mode-map
alchemist-help-minor-mode-map
alchemist-mix-mode-map
alchemist-macroexpand-mode-map
alchemist-refcard-mode-map
alchemist-test-report-mode-map))
(evil-define-key 'normal mode
(kbd "q") 'quit-window))))
(defun elixir/post-init-company ()
(spacemacs|add-company-hook elixir-mode)
(spacemacs|add-company-hook alchemist-iex-mode))
(defun elixir/init-elixir-mode ()
(use-package elixir-mode
:defer t))
(defun elixir/pre-init-popwin ()
(spacemacs|use-package-add-hook popwin
:post-config
(push '("*mix*" :tail t :noselect t) popwin:special-display-config)))
(defun elixir/init-ruby-end ()
(use-package ruby-end
:defer t
:init
(progn
(defun spacemacs//ruby-end ()
(set (make-variable-buffer-local 'ruby-end-expand-keywords-before-re)
"\\(?:^\\|\\s-+\\)\\(?:do\\)")
(set (make-variable-buffer-local 'ruby-end-check-statement-modifiers)
nil)
(ruby-end-mode +1))
(add-hook 'elixir-mode-hook 'spacemacs//ruby-end)
;; hack to remove the autoloaded `add-hook' in `ruby-end'
;; since they are inserted as an autoload, they have to be removed both
;; before and after loading
(remove-hook 'ruby-mode-hook 'ruby-end-mode)
(remove-hook 'enh-ruby-mode-hook 'ruby-end-mode))
:config
(progn
(spacemacs|hide-lighter ruby-end-mode)
;; see comment in `:init' block
(remove-hook 'ruby-mode-hook 'ruby-end-mode)
(remove-hook 'enh-ruby-mode-hook 'ruby-end-mode))))

View File

@ -18,126 +18,3 @@
ruby-end
))
(defun elixir/init-alchemist ()
(use-package alchemist
:defer t
:init
(progn
(add-hook 'elixir-mode-hook 'alchemist-mode)
(setq alchemist-project-compile-when-needed t)
(push 'alchemist-company company-backends-elixir-mode)
(push 'alchemist-company company-backends-alchemist-iex-mode))
:config
(spacemacs/declare-prefix-for-mode 'elixir-mode "mc" "compile")
(spacemacs/declare-prefix-for-mode 'elixir-mode "me" "eval")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mp" "project")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mh" "help")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mt" "test")
(spacemacs/declare-prefix-for-mode 'elixir-mode "ms" "iex")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mm" "mix")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mx" "execute")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mg" "goto")
(spacemacs/set-leader-keys-for-major-mode 'elixir-mode
"el" 'alchemist-eval-current-line
"eL" 'alchemist-eval-print-current-line
"er" 'alchemist-eval-region
"eR" 'alchemist-eval-print-region
"eb" 'alchemist-eval-buffer
"eB" 'alchemist-eval-print-buffer
"ej" 'alchemist-eval-quoted-current-line
"eJ" 'alchemist-eval-print-quoted-current-line
"eu" 'alchemist-eval-quoted-region
"eU" 'alchemist-eval-print-quoted-region
"ev" 'alchemist-eval-quoted-buffer
"eV" 'alchemist-eval-print-quoted-buffer
"pt" 'alchemist-project-find-test
"gt" 'alchemist-project-toggle-file-and-tests
"gT" 'alchemist-project-toggle-file-and-tests-other-window
"h:" 'alchemist-help
"hH" 'alchemist-help-history
"hh" 'alchemist-help-search-at-point
"hr" 'alchemist-help-search-marked-region
"m:" 'alchemist-mix
"mc" 'alchemist-mix-compile
"mx" 'alchemist-mix-run
"mh" 'alchemist-mix-help
"sc" 'alchemist-iex-compile-this-buffer
"si" 'alchemist-iex-run
"sI" 'alchemist-iex-project-run
"sl" 'alchemist-iex-send-current-line
"sL" 'alchemist-iex-send-current-line-and-go
"sm" 'alchemist-iex-reload-module
"sr" 'alchemist-iex-send-region
"sR" 'alchemist-iex-send-region-and-go
"ta" 'alchemist-mix-test
"tb" 'alchemist-mix-test-this-buffer
"tt" 'alchemist-mix-test-at-point
"tf" 'alchemist-test-file
"tn" 'alchemist-test-jump-to-next-test
"tp" 'alchemist-test-jump-to-previous-test
"tr" 'alchemist-mix-rerun-last-test
"xb" 'alchemist-execute-this-buffer
"xf" 'alchemist-execute-file
"x:" 'alchemist-execute
"cb" 'alchemist-compile-this-buffer
"cf" 'alchemist-compile-file
"c:" 'alchemist-compile
"gg" 'alchemist-goto-definition-at-point
"," 'alchemist-goto-jump-back)
(dolist (mode (list alchemist-compile-mode-map
alchemist-eval-mode-map
alchemist-execute-mode-map
alchemist-message-mode-map
alchemist-help-minor-mode-map
alchemist-mix-mode-map
alchemist-macroexpand-mode-map
alchemist-refcard-mode-map
alchemist-test-report-mode-map))
(evil-define-key 'normal mode
(kbd "q") 'quit-window))))
(defun elixir/post-init-company ()
(spacemacs|add-company-hook elixir-mode)
(spacemacs|add-company-hook alchemist-iex-mode))
(defun elixir/init-elixir-mode ()
(use-package elixir-mode
:defer t))
(defun elixir/pre-init-popwin ()
(spacemacs|use-package-add-hook popwin
:post-config
(push '("*mix*" :tail t :noselect t) popwin:special-display-config)))
(defun elixir/init-ruby-end ()
(use-package ruby-end
:defer t
:init
(progn
(defun spacemacs//ruby-end ()
(set (make-variable-buffer-local 'ruby-end-expand-keywords-before-re)
"\\(?:^\\|\\s-+\\)\\(?:do\\)")
(set (make-variable-buffer-local 'ruby-end-check-statement-modifiers)
nil)
(ruby-end-mode +1))
(add-hook 'elixir-mode-hook 'spacemacs//ruby-end)
;; hack to remove the autoloaded `add-hook' in `ruby-end'
;; since they are inserted as an autoload, they have to be removed both
;; before and after loading
(remove-hook 'ruby-mode-hook 'ruby-end-mode)
(remove-hook 'enh-ruby-mode-hook 'ruby-end-mode))
:config
(progn
(spacemacs|hide-lighter ruby-end-mode)
;; see comment in `:init' block
(remove-hook 'ruby-mode-hook 'ruby-end-mode)
(remove-hook 'enh-ruby-mode-hook 'ruby-end-mode))))

View File

@ -0,0 +1,59 @@
;;; packages-config el --- elfeed Layer packages figuration File for Spacemacs
;;
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(defun elfeed/init-elfeed ()
(use-package elfeed
:defer t
:init (spacemacs/set-leader-keys "af" 'elfeed)
:config
(progn
(evilified-state-evilify-map elfeed-search-mode-map
:mode elfeed-search-mode
:eval-after-load elfeed-search
:bindings
"c" 'elfeed-db-compact
"gr" 'elfeed-update
"gR" 'elfeed-search-update--force
"gu" 'elfeed-unjam
"o" 'elfeed-load-opml
"q" 'quit-window
"w" 'elfeed-web-start
"W" 'elfeed-web-stop)
(evilified-state-evilify-map elfeed-show-mode-map
:mode elfeed-show-mode
:eval-after-load elfeed-show
:bindings
"q" 'quit-window
(kbd "C-j") 'elfeed-show-next
(kbd "C-k") 'elfeed-show-prev))))
(defun elfeed/init-elfeed-goodies ()
(use-package elfeed-goodies
:commands elfeed-goodies/setup
:init (spacemacs|use-package-add-hook elfeed
:post-config (elfeed-goodies/setup))))
(defun elfeed/init-elfeed-org ()
(use-package elfeed-org
:defer t
:if (boundp 'rmh-elfeed-org-files)
:init (spacemacs|use-package-add-hook elfeed
:pre-config (elfeed-org))))
(defun elfeed/init-elfeed-web ()
(use-package elfeed-web
:defer t
:commands elfeed-web-stop
:init (when elfeed-enable-web-interface
;; TODO check if the port is already in use
;; hack to force elfeed feature to be required before elfeed-search
(require 'elfeed)
(elfeed-web-start))))

View File

@ -16,51 +16,3 @@
elfeed-web
))
(defun elfeed/init-elfeed ()
(use-package elfeed
:defer t
:init (spacemacs/set-leader-keys "af" 'elfeed)
:config
(progn
(evilified-state-evilify-map elfeed-search-mode-map
:mode elfeed-search-mode
:eval-after-load elfeed-search
:bindings
"c" 'elfeed-db-compact
"gr" 'elfeed-update
"gR" 'elfeed-search-update--force
"gu" 'elfeed-unjam
"o" 'elfeed-load-opml
"q" 'quit-window
"w" 'elfeed-web-start
"W" 'elfeed-web-stop)
(evilified-state-evilify-map elfeed-show-mode-map
:mode elfeed-show-mode
:eval-after-load elfeed-show
:bindings
"q" 'quit-window
(kbd "C-j") 'elfeed-show-next
(kbd "C-k") 'elfeed-show-prev))))
(defun elfeed/init-elfeed-goodies ()
(use-package elfeed-goodies
:commands elfeed-goodies/setup
:init (spacemacs|use-package-add-hook elfeed
:post-config (elfeed-goodies/setup))))
(defun elfeed/init-elfeed-org ()
(use-package elfeed-org
:defer t
:if (boundp 'rmh-elfeed-org-files)
:init (spacemacs|use-package-add-hook elfeed
:pre-config (elfeed-org))))
(defun elfeed/init-elfeed-web ()
(use-package elfeed-web
:defer t
:commands elfeed-web-stop
:init (when elfeed-enable-web-interface
;; TODO check if the port is already in use
;; hack to force elfeed feature to be required before elfeed-search
(require 'elfeed)
(elfeed-web-start))))