Commit Graph

484 Commits

Author SHA1 Message Date
88f1ae3797 Refactor autoloads init in doom-initialize
Simplify doom-initialize-autoloads
2018-06-10 17:28:17 +02:00
01d1a814f9 Refactor doom-initialize functions
Removes doom-module-table; which was inflexible (though more stable). It
prevented you from putting your doom! block in anywhere but
~/.doom.d/init.el.

It is replaced (somewhat) by (doom-modules).
2018-06-10 17:30:26 +02:00
1e2fc4227a Fix void-variable: package--initialized error 2018-06-10 17:28:17 +02:00
81c465a545 Move OS constants to core/core.el
So it is universally available to all of Doom, rather than excluding
sessions that haven't called doom-initialize interactively.
2018-06-08 13:31:45 +02:00
b207c4040b Minor, general refactor 2018-06-07 02:51:46 +02:00
4978a64678 Create core directories before checking version
Otherwise the version cache file can't be written to!
2018-06-05 12:09:42 +02:00
c9bfb58369 Minor, general refactor
Remove redundant keybinds, unused letvars, and fix
doom-module-load-path's docstring referencing its former signature.
2018-06-05 12:04:43 +02:00
8124d5a893 Use package-activated-list for package count
Now that this variable is cached, it should always be available.
2018-06-05 12:04:43 +02:00
282e0d6653 Move emacs version check into doom-initialize
Also fixes void-function errors caused by (now removed)
doom-same-emacs-version-p not being defined in all the contexts it was
needed.

Where it was before was clumsy design.
2018-06-05 12:04:43 +02:00
6da8e5b3ab Add error handling when loading autoloads files 2018-06-04 21:20:13 +02:00
29005d9975 Load quelpa uncompiled to fix arrayp errors #647
Hopefully...
2018-06-04 21:19:46 +02:00
9ba76b60dc Refactor require! macro 2018-06-04 00:06:01 +02:00
428f1e1d07 Refactor def-setting!/set! implementation
The `doom-settings` variable has been removed. Setting checks are done
with fboundp now, which is simpler.
2018-06-02 16:26:59 +02:00
a0bec84997 Don't complain if no private packages.el 2018-06-02 01:08:23 +02:00
b28d3414bb Remove load-prefer-newer letvar around private init
Doesn't actually help and only slows things down.
2018-06-01 17:07:53 +02:00
c04bccc68b Fix disabled packages not being disabled
By loading the private packages.el in two passes. The first time ensures
later modules will know about disabled packages and the second time
ensures overwritten packages are properly overwritten.

Not the most efficient, but efficiency is low priority in noninteractive
sessions (i.e. during package management), the performance loss is
negligible, and packages.el files (should) have no other side effects
anyway.
2018-06-01 17:03:01 +02:00
6bad6d12f3 Remove doom-psuedo-modules-dir
Not needed with now that doom-private-dir has first class support.
2018-06-01 17:01:39 +02:00
bb6b91da9b Downgrade missing module warnings to messages 2018-05-29 22:44:21 +02:00
debe3e0dd3 Remove unnused letvar doom--inhibit-reload 2018-05-29 19:39:22 +02:00
bd5ecc1aca Display warning if a non-existent module is in your doom! block 2018-05-29 18:26:39 +02:00
f8b9cff4aa Get rid of doom-pre-init-hook 2018-05-28 16:07:11 +02:00
2dc1be2ce8 Update load! macro docstring 2018-05-28 12:30:27 +02:00
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
dc7488df73 Remove package-initialize hack before package commands
Doesn't appear to be necessary anymore.
2018-05-25 19:26:11 +02:00
644dc17e32 Minor refactor of doom-initialize-packages 2018-05-25 19:25:47 +02:00
5ef1228201 Fix nested length form typos 2018-05-25 19:22:44 +02:00
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
2b8efd6783 Error of private init.el doesn't exist (it really should!) 2018-05-25 02:54:16 +02:00
2990d5bd58 Fix hash-table-p and format type errors on blank startup 2018-05-25 01:26:24 +02:00
a390ef8deb Reduce doom-module-table calls significantly 2018-05-25 01:17:01 +02:00
11705d0920 Fix void-variable error (let -> let*) 2018-05-25 01:13:28 +02:00
59f70c2a87 Soft-fail if doom-module-table can't find your private init.el 2018-05-25 01:11:53 +02:00
d35598520f Only package-initialize if uninitialized (from package.el API advice) 2018-05-24 21:20:02 +02:00
9e07940b7c Fix use-package autoload 2018-05-24 21:20:02 +02:00
30893b0ff1 Fix doom-initialize-packages 2018-05-24 21:20:02 +02:00
8282280965 core-packages: revise docstrings & comments 2018-05-24 21:20:02 +02:00
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
1369c51000 Replace :defer HOOK/FN with :after-call keyword 2018-05-21 01:38:17 +02:00
f2c02e32c8 General minor refactor & comment updates 2018-05-21 01:38:17 +02:00
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
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
a46e7655dc Move batch commands from core-packages to autoload/modules 2018-05-20 00:57:18 +02:00
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
5abdbaee38 Rewrite docstrings for doom-initialize{,-packages} 2018-05-20 00:01:07 +02:00
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
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
80adb9c1f6 General refactor for consistency & idempotency
Also updated comments
2018-05-18 01:26:41 +02:00
7aecb85c34 Reverse order of operations for doom//reload-packages 2018-05-18 01:10:05 +02:00
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
82f9fb7027 Optimize package management commands
Effectively halving run time on package install, update and autoremove
commands.
2018-05-18 01:08:28 +02:00