Commit graph

516 commits

Author SHA1 Message Date
Henrik Lissner
debe3e0dd3 Remove unnused letvar doom--inhibit-reload 2018-05-29 19:39:22 +02:00
Henrik Lissner
bd5ecc1aca
Display warning if a non-existent module is in your doom! block 2018-05-29 18:26:39 +02:00
Henrik Lissner
f8b9cff4aa
Get rid of doom-pre-init-hook 2018-05-28 16:07:11 +02:00
Henrik Lissner
2dc1be2ce8
Update load! macro docstring 2018-05-28 12:30:27 +02:00
Henrik Lissner
1a452b6842
💥 Change first arg of load! macro
load!'s first argument is no longer a symbol (that will cause
void-variable errors now) to save on unnecessary interning and simplify
compile-time logic. It accepts any valid form that evaluates to a string
now.

If you use load!, you need to change its argument to a string!

e.g. (load! +my-module) => (load! "+my-module")
2018-05-27 12:52:28 +02:00
Henrik Lissner
dc7488df73
Remove package-initialize hack before package commands
Doesn't appear to be necessary anymore.
2018-05-25 19:26:11 +02:00
Henrik Lissner
644dc17e32
Minor refactor of doom-initialize-packages 2018-05-25 19:25:47 +02:00
Henrik Lissner
5ef1228201
Fix nested length form typos 2018-05-25 19:22:44 +02:00
Henrik Lissner
d7a5f3b997
Fix doom-module-table failing to fetch module list
...because sexp-at-point needs a valid syntax table, and fundamental
mode ain't got one.
2018-05-25 03:07:23 +02:00
Henrik Lissner
2b8efd6783
Error of private init.el doesn't exist (it really should!) 2018-05-25 02:54:16 +02:00
Henrik Lissner
2990d5bd58
Fix hash-table-p and format type errors on blank startup 2018-05-25 01:26:24 +02:00
Henrik Lissner
a390ef8deb
Reduce doom-module-table calls significantly 2018-05-25 01:17:01 +02:00
Henrik Lissner
11705d0920
Fix void-variable error (let -> let*) 2018-05-25 01:13:28 +02:00
Henrik Lissner
59f70c2a87
Soft-fail if doom-module-table can't find your private init.el 2018-05-25 01:11:53 +02:00
Henrik Lissner
d35598520f
Only package-initialize if uninitialized (from package.el API advice) 2018-05-24 21:20:02 +02:00
Henrik Lissner
9e07940b7c
Fix use-package autoload 2018-05-24 21:20:02 +02:00
Henrik Lissner
30893b0ff1
Fix doom-initialize-packages 2018-05-24 21:20:02 +02:00
Henrik Lissner
8282280965
core-packages: revise docstrings & comments 2018-05-24 21:20:02 +02:00
Henrik Lissner
8746c12fae
Redesign Doom bootstrap, caching & autoload generation logic
The autoloads file has been split into doom-autoload-file and
doom-package-autoload-file. The former is for Doom's modules and
standard library; the latter is for compiling all package autoloads like
load-path and auto-mode-alist (among other things).

This reduced my startup speed from ~1s to ~0.5s
2018-05-24 21:20:02 +02:00
Henrik Lissner
1369c51000
Replace :defer HOOK/FN with :after-call keyword 2018-05-21 01:38:17 +02:00
Henrik Lissner
f2c02e32c8
General minor refactor & comment updates 2018-05-21 01:38:17 +02:00
Henrik Lissner
f058505306
New bin/doom (eventual replacement for make)
This commit adds bin/doom, which acts as the middle man that make once
was (and will stay for a while, though the documentation will shift away
from using it). It does everything the previous make interface did, but
is faster and more flexible. bin/doom should eventually replace the
makefile.

bin/doom also makes it easier to run Doom outside of ~/.emacs.d and
~/.doom.d with, for example:

  bin/doom run -p ~/.other.doom.d/ -e ~/.other.emacs.d

bin/doom.cmd is included for Windows users, but I don't recommend using
it yet. It hasn't been tested nor have I ever written a batch script
before.

Also update init.example.el with new defaults.
2018-05-21 01:38:17 +02:00
Henrik Lissner
f984d46a9b
Fix featurep! & load! calls while byte-compiling
The would prioritize load-file-name over byte-compile-current-file
during byte-compiling, which would result featurep! being unable to
resolve the current module and load! from figuring out where "here" was
to build its relative paths from.
2018-05-20 00:57:58 +02:00
Henrik Lissner
a46e7655dc
Move batch commands from core-packages to autoload/modules 2018-05-20 00:57:18 +02:00
Henrik Lissner
85ee9ce459
Refactor doom module API
+ Consolidate the CATEGORY -> MODULE terminology
+ Rename functions to make their function easier to understand
  + Rename doom-module-expand-file => doom-module-path
  + Rename doom-module-find-path => doom-module-locate-path
2018-05-20 00:03:57 +02:00
Henrik Lissner
5abdbaee38
Rewrite docstrings for doom-initialize{,-packages} 2018-05-20 00:01:07 +02:00
Henrik Lissner
6f5e710d98
Refactor startup process, hooks, doom-initialize & doom!
+ Brings back doom-pre-init-hook and doom-post-init-hook hooks.
+ Extracts autoload file loading logic into doom-initialize-autoloads
  function.
2018-05-19 23:59:55 +02:00
Henrik Lissner
fa37d7b05e
Refactor core initialization process
A vastly simpler bootstrap process.

Also load core libs in core-lib (duh)
2018-05-19 16:42:48 +02:00
Henrik Lissner
80adb9c1f6
General refactor for consistency & idempotency
Also updated comments
2018-05-18 01:26:41 +02:00
Henrik Lissner
7aecb85c34
Reverse order of operations for doom//reload-packages 2018-05-18 01:10:05 +02:00
Henrik Lissner
340aa0449c
Rewrite & optimize autoload generation logic
Now includes package autoloads (which allows us to shed some fat from
various module configs, but that'll come later).
2018-05-18 01:09:14 +02:00
Henrik Lissner
82f9fb7027
Optimize package management commands
Effectively halving run time on package install, update and autoremove
commands.
2018-05-18 01:08:28 +02:00
Henrik Lissner
e2f99a8c24
Load core-lib sooner 2018-05-17 22:44:20 +02:00
Henrik Lissner
9b0dbe20b0
doom//refresh-packages -> doom//reload-packages (consistency) 2018-05-16 18:26:56 +02:00
Henrik Lissner
a1e49d174a
Exclude {packages,doctor}.el from make compile
These two files shouldn't be byte-compiled. Until now it was expected
that you'd include a no-byte-compile: t header in these files. This is
more convenient.
2018-05-16 18:13:07 +02:00
Henrik Lissner
377e8a7b3c
Refactor doom-initialize; error handling for faulty autoloads 2018-05-16 10:50:01 +02:00
Henrik Lissner
3e6d7f174a
Optimize make autoloads & improve path expansion
Make autoloads will expand the include paths of Doom autoload cookies.
This fixes an issue where paths were expanded to include a file
extension, bypassing the benefits of byte-compilation.
2018-05-16 10:50:01 +02:00
Henrik Lissner
980f5e470b
Fix edge case where package autoloads would break startup
Particularly in the case of gh loading eieio and marshal.
2018-05-16 00:57:31 +02:00
Henrik Lissner
595109209a
Fix doom//reload & optimize make all task 2018-05-16 00:11:14 +02:00
Henrik Lissner
9aa346f185
Make packages! accept list of package names (non lists)
This convenience macro lets you specify multiple packages with one
block, e.g.

  (packages! rtags ivy-rtags glsl-mode)

Each entry can be a full recipe.

  (packages! (rtags :disable t) (glsl-mode :recipe (...)))
2018-05-16 00:11:14 +02:00
Henrik Lissner
0dfe1bc3d5
Allow chained package!'s
This allows users to disable one master package, thus disabling all its
children. e.g. Disable irony, then irony-eldoc, flycheck-irony,
company-irony and company-irony-c-headers will be disabled too.
2018-05-16 00:11:14 +02:00
Henrik Lissner
09ecce0073
Fix package! :disable not disabling packages 2018-05-16 00:11:14 +02:00
Henrik Lissner
18e6a6b1db
Include package autoloads in doom-autoloads-file
This offloads some of the work Doom has to do creating
`doom-packages-file` onto `make autoloads`. This closely mimics the
package-quickstart-refresh functionality in Emacs 27+, but is more
specialized.

This means package autoloads are now loaded on every startup.

Many :mode, :interpreter, and :commands declarations in def-package!
blocks are made redundant by this and will be cleaned up soon.
2018-05-15 22:17:43 +02:00
Henrik Lissner
12013b4ad4
Cache interpreter-mode-alist in doom-packages-file too 2018-05-15 21:49:51 +02:00
Henrik Lissner
97b8c04dbb
def-package!: specify id for deferred-load transient hooks
Makes them easier to identify in hook lists.
2018-05-15 21:49:51 +02:00
Henrik Lissner
af079e5f6f
Remove unused doom-deferred-packages variable 2018-05-15 21:49:51 +02:00
Henrik Lissner
70d0ce4528
Fix error when def-package-hook! was used anywhere 2018-05-15 11:23:44 +02:00
Henrik Lissner
94f9e43f25
Rewrite :defer semantics
:defer now supports a hook, a cons cell with (SYMBOL . INTEGER) where
SYMBOL is a hook and INTEGER is a number of idle seconds before the
package is autoloaded, or just the integer (as per the default behavior
of :defer).

Also fixes an issue where switch-buffer-deffered packages (like
smartparens) wouldn't load.
2018-05-15 10:54:45 +02:00
Henrik Lissner
bdf6fceb52
Silence deleted *.elc messages if byte-compile fails 2018-05-14 21:09:12 +02:00
Henrik Lissner
bb88411cc9
General minor refactor & docstring fixes 2018-05-14 20:55:55 +02:00