Homepage: https://github.com/edvorg/req-package
Author: Edward Knyshov
Updated:
A use-package wrapper for package runtime dependencies management
Table of Contents
─────────────────
1 req-package
.. 1.1 Description
.. 1.2 Usage
.. 1.3 Logging
.. 1.4 Migrate from use-package
.. 1.5 Note
.. 1.6 Contribute
.. 1.7 Changelog
..... 1.7.1 `v1.3'
..... 1.7.2 `v1.2'
..... 1.7.3 `v1.1'
..... 1.7.4 `v1.0'
..... 1.7.5 `v0.9'
..... 1.7.6 `v0.8'
..... 1.7.7 `v0.7'
..... 1.7.8 `v0.6'
..... 1.7.9 `v0.5'
..... 1.7.10 `v0.4.2'
..... 1.7.11 `v0.4.1'
..... 1.7.12 `v0.4-all-cycles'
..... 1.7.13 `v0.3-cycles'
..... 1.7.14 `v0.2-auto-fetch'
1 req-package
═════════════
[file:https://img.shields.io/badge/license-GPL_3-green.svg]
[file:http://melpa.org/packages/req-package-badge.svg]
[file:http://stable.melpa.org/packages/req-package-badge.svg]
[file:https://travis-ci.org/edvorg/req-package.svg]
[file:https://coveralls.io/repos/edvorg/req-package/badge.svg?branch=develop&service=github]
[file:https://img.shields.io/badge/license-GPL_3-green.svg]
http://www.gnu.org/licenses/gpl-3.0.txt
[file:http://melpa.org/packages/req-package-badge.svg]
http://melpa.org/#/req-package
[file:http://stable.melpa.org/packages/req-package-badge.svg]
http://stable.melpa.org/#/req-package
[file:https://travis-ci.org/edvorg/req-package.svg]
https://travis-ci.org/edvorg/req-package
[file:https://coveralls.io/repos/edvorg/req-package/badge.svg?branch=develop&service=github]
https://coveralls.io/github/edvorg/req-package?branch=develop
1.1 Description
───────────────
`req-package' provides dependency management for use-package. This
allows to write simple and modular configs. Migration from
use-package is simple and syntax is almost same.
1.2 Usage
─────────
Load req-package:
┌────
│ (require 'req-package)
│
│ (req-package use-package-el-get ;; prepare el-get support for use-package (optional)
│ :force t ;; load package immediately, no dependency resolution
│ :config
│ (add-to-list 'el-get-recipe-path "~/.emacs.d/el-get/el-get/recipes")
│ (el-get 'sync)
│ (use-package-el-get-setup))
└────
Define required packages with dependencies using `:require'. Use
`:force t' if you want to avoid dependency management and load right
now. Use `:el-get t' or `:el-get package-name' if you want to install
from el-get (Requires `use-package-el-get' package setup like
described above).
┌────
│ ;; init-dired.el
│
│ (req-package dired) ;; this form is optional as it doesn't have any configuration
│
│ (req-package dired-single
│ :require dired ;; depends on dired
│ :config (...))
│
│ (req-package dired-isearch
│ :require dired ;; depends on dired
│ :config (...))
│
│ ;; init-lua.el
│
│ (req-package lua-mode
│ :config (...))
│
│ (req-package flymake-lua
│ :require flymake lua-mode
│ :config (...))
│
│ ;; init-flymake.el
│
│ (req-package flymake
│ :config (...))
│
│ (req-package flymake-cursor
│ :require flymake
│ :config (...))
│
│ (req-package flymake-custom
│ :require flymake
│ :load-path "/path/to/file/directory"
│ :config (...))
└────
Solve dependencies, install and load packages in right order:
┌────
│ ;; order doesn't matter here
│ (require 'init-dired)
│ (require 'init-lua)
│ (require 'init-flymake)
│ (req-package-finish)
└────
1.3 Logging
───────────
You can use `req-package--log-open-log' to see, what is happening with
your configuration. You can choose log level in `req-package' group
by `req-package-log-level' custom. These log levels are supported:
`fatal', `error', `warn', `info', `debug', `trace'.
1.4 Migrate from use-package
────────────────────────────
Just replace all `(use-package ...)' with `(req-package [:require
DEPS] ...)' and add `(req-package-finish)' at the end of your
configuration file. There is a `:force' keyword which simulates plain
old use-package behavior.
1.5 Note
────────
More complex req-package usage example can be found at
[https://github.com/edvorg/emacs-configs].
Use `load-dir' package to load all `*.el' files in a dir (e.g
`~/.emacs.d/init.d')
1.6 Contribute
──────────────
Please, pull-request your changes to `develop' branch. Master is used
for automatic *release* package builds by travis-ci.
1.7 Changelog
─────────────
1.7.1 `v1.3'
╌╌╌╌╌╌╌╌╌╌╌╌
• :el-get keyword support moved to separate package
[use-package-el-get]
[use-package-el-get] https://github.com/edvorg/use-package-el-get
1.7.2 `v1.2'
╌╌╌╌╌╌╌╌╌╌╌╌
• add :el-get keyword
1.7.3 `v1.1'
╌╌╌╌╌╌╌╌╌╌╌╌
• due to use-package being mature enough drop providers system
1.7.4 `v1.0'
╌╌╌╌╌╌╌╌╌╌╌╌
• once you called `req-package-finish' you are able reload package
just by reload `req-package' form
• proper errors handling. see `req-package--log-open-log' for messages
• smart add-hook which invokes function if mode is loaded
• refactor providers system
• no need to use progn in :init and :config sections
• no need to use list literal in :require section
• `:loader' keyword now accepts loaders as keywords or as functions.
e.g. `:el-get', `:elpa', `:built-in', `:path' and `my-loader-fn'
• `req-package-force' replaced with `:force' keyword
1.7.5 `v0.9'
╌╌╌╌╌╌╌╌╌╌╌╌
• `:loader' keyword support
1.7.6 `v0.8'
╌╌╌╌╌╌╌╌╌╌╌╌
• bugfixes
1.7.7 `v0.7'
╌╌╌╌╌╌╌╌╌╌╌╌
• fixed some issues with packages installation. all packages will be
installed at bootstrap time
• custom package providers support by `req-package-providers'
• priority feature for cross provider packages loading. you can
choose, what to try first - elpa, el-get, or something else
1.7.8 `v0.6'
╌╌╌╌╌╌╌╌╌╌╌╌
• `el-get' support
1.7.9 `v0.5'
╌╌╌╌╌╌╌╌╌╌╌╌
• Major system refactoring.
• Fixed bugs with defered loading.
• Significant performance optimization.
• `max-specpdl-size', `max-lisp-eval-depth' issues completely solved.
• Flexible `:require' keyword parsing.
1.7.10 `v0.4.2'
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Bug fixes.
1.7.11 `v0.4.1'
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Various tweaks and bug fixes.
1.7.12 `v0.4-all-cycles'
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• All cycles of your dependencies will be printed now.
• Also there are more handy log messages and some bug fixes.
1.7.13 `v0.3-cycles'
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• There are nice error messages about cycled dependencies now.
• Cycles printed in a way: `pkg1 -> [pkg2 -> ...] pkg1'.
• It means there is a cycle around `pkg1'.
1.7.14 `v0.2-auto-fetch'
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• There is no need of explicit `:ensure' in your code now.
• When you req-package it adds `:ensure' if package is available in
your repos.
• Also package deps `:ensure''d automatically too.
• Just write `(req-package pkg1 :require pkg2)' and all you need will
be installed.