Commit Graph

2784 Commits

Author SHA1 Message Date
9a2f96c0f1 Lazy load projectile (experimental)
I can feel it; the power coursing through my veins. Every millisecond
saved at startup makes me more powerful. This world will be mine. Mine I
tell you!
2018-06-16 11:42:37 +02:00
c81304d18b Enable smartparens in eval-expression
This is experimental, so we can have delimiter/quote autopairing while
we write lisp into eval-expression.
2018-06-16 11:42:01 +02:00
b656e68bc3 Move startup optimization to early-init
Also load early-init from init if early-init-file isn't bound. This
improves startup a modest 3-5% for Emacs 27 users.
2018-06-16 11:38:19 +02:00
126b7b6383 Refactor associate! with cl-defmacro 2018-06-16 11:34:42 +02:00
5501b949ef Refactor def-project-mode! with cl-defmacro 2018-06-16 11:34:19 +02:00
02d532a09a Set ibuffer-use-other-window in ui/popup/+hacks.el
It was originally set to accommodate the popup system.
2018-06-16 10:22:59 +02:00
33839f54e9 Minor refactor doom|init-fonts
Take advantage of custom-set-faces taking variadic arguments to group
all font-initializing forms in one form.
2018-06-16 00:40:37 +02:00
a1278f3dff Refactor def-package!
Rely on use-package mechanisms. def-package! should be as thin a wrapper
as possible. Ideally, we should simply be an alias, but there is no way
to inject :disabled into a use-package declaration, because it is
treated especially.
2018-06-16 00:36:27 +02:00
2047a52fcd Refactor add-transient-hook!
Use gensym instead of counter (and unintern the function symbol after
it's been used).
2018-06-15 23:54:07 +02:00
8e6519ef1a Fix & refactor after!'s :when keyword support
It no longer tries to load keywords (like :when and :any) as packages,
and won't treat :when's arguments as a require target.
2018-06-15 23:53:58 +02:00
c0e271ef5a Fix "Invalid read syntax: '#'" errors
Caused when Emacs reads back the unserialized font-specs it saved in
.local/custom.el. So we store them in xlfd format instead.
2018-06-15 22:44:20 +02:00
1db3830bf3 Defer server startup
MY PRECIOUS MILLISECONDS OF STARTUP TIME
2018-06-15 21:44:44 +02:00
7773a312aa Update tests for doom/what-face 2018-06-15 21:31:13 +02:00
4d5a247d53 With C-u, doom/what-face doesn't fontify results
In case you get a face that's too hard to see.
2018-06-15 18:50:45 +02:00
60e7b78739 Minor refactor of doom/describe-active-minor-mode 2018-06-15 18:32:53 +02:00
8b739fb3b0 Set doom-file property less eagerly
Reduces the size of the autoloads file by 6-10% by only setting
doom-file property on raw forms or no-op macros.
2018-06-15 17:35:20 +02:00
f81a0e6f41 Remove redundant def-setting! docstrings
def-setting! will now grab the autodef's docstring if it has an
:obsolete property defined.
2018-06-15 16:54:39 +02:00
11b5a7116f Allow map!'s :prefix to accept key vectors 2018-06-15 16:20:20 +02:00
98632fe086 Fix doom-module-from-path on module directories
Allow PATH to be an exact path to a module.
2018-06-15 16:20:20 +02:00
58601488d9 describe-module: shows all modules, dim disabled
Shows all modules, whether or not they are enabled and dims disabled
modules.
2018-06-15 16:20:20 +02:00
a500bfb0a0 Rewrite+rename describe-settings->describe-setters
Will now list autodefs instead of def-settings, including an origin
module label to tell you where it comes from at a glance.
2018-06-15 16:20:20 +02:00
1184967531 Advise symbol-file to return doom-file property
...if it exists. Otherwise fall back on original functionality. This
allows certain symbols to overwrite where Emacs thinks they were
defined.

Warning: only use this for autodefs! It may have unintended side-effects
for other symbols.
2018-06-15 16:20:20 +02:00
da5e2d54ca Refactor autodef generator; put metadata in autodefs
Adds the doom-module and doom-file symbol properties to autodefs,
allowing functions like doom/describe-setting some insight into the
origin of the autodef.
2018-06-15 16:20:20 +02:00
bbda434365 Move startup optimizations into init.el
Doesn't really belong in core.el and only applies to interactive
sessions.
2018-06-15 16:20:20 +02:00
3c7c5d5120 Move doom-file-cookie-p to core-dispatcher
And rename it to doom--file-cookie-p
2018-06-15 16:20:20 +02:00
c22b3da9f9 Move emacs/electric-indent to emacs/electric
This module will later be expanded to customize more of electric's
functionality.
2018-06-15 16:20:20 +02:00
715167bec8 Add ability to mark modules as obsolete or moved
Better way to communicate to users that modules have moved without
breaking their config.
2018-06-15 16:20:20 +02:00
13426eecde Fix YES/-y support in doom refresh dispatcher 2018-06-15 04:24:48 +02:00
eaca8c58fa Move unit tests from ert to buttercup
Easier to organize and write. Now I can hopefully strive for better
coverage!
2018-06-15 03:42:01 +02:00
98d2f1de3f Add set-env! autodef; make :env obsolete 2018-06-15 03:42:01 +02:00
2496e0348d Add :when support to after!
This lets you delay a body of code until an arbitrary condition is
met (which is checked whenever a file is loaded).

Also refactors set-file-template! to wait until +file-templates-alist is
defined.
2018-06-15 03:42:01 +02:00
d8b1e469bc Introduce autodefs to replace some settings
+ :popup -> set-popup-rule!
+ :popups -> set-popup-rules!
+ :company-backend -> set-company-backend!
+ :evil-state -> set-evil-initial-state!

I am slowly phasing out the setting system (def-setting! and set!),
starting with these.

What are autodefs? These are functions that are always defined, whether
or not their respective modules are enabled. However, when their modules
are disabled, they are replaced with macros that no-op and don't
waste time evaluating their arguments.

The old set! function will still work, for a while.
2018-06-15 03:42:01 +02:00
db8b4091dd Fix bin/doom ignoring -d flag
defconst -> defvar
2018-06-15 00:25:39 +02:00
421d00f085 Refactor doom|check-large-file
More checks, fewer false positives.
2018-06-14 19:51:11 +02:00
3228369d73 Fix void-function errors from doom//reload
Because certain commands aren't available without core-dispatcher.
2018-06-14 19:50:27 +02:00
04ec62c8f2 General, minor refactor & feedback revision 2018-06-14 19:49:03 +02:00
f44ebbb7ed Refactor autoload generator, plus autodef support
Soon, autodefs will replace settings (i.e. def-setting! & set!). This
refactor prepares for it.
2018-06-14 19:46:31 +02:00
2908a6389e Fix font loading in daemon-spawned frames
set-face-attribute wasn't reliable for changing the fixed-pitch and
variable-pitch faces. custom-set-faces uses a custom, internal user
theme that has the highest precedence, making this the superior choice
for default font-setting.
2018-06-14 13:59:04 +02:00
da6ce8e3f9 Fix over-aggressive theme reloading
`display-graphic-p` returns a boolean (possibly a recent change in Emacs
27), which will never match any window system, causing the theme to be
reloaded on every new frame.

Also default doom-last-window-system to initial-window-system.
2018-06-14 13:58:38 +02:00
cc3fd3126a Fix "Failed to parse X" errors from use-package
use-package-handler/:after-call was (accidentally) relying on the
dynamic value of `name`, but now that use-package uses lexical binding,
this isn't possible anymore, causes errors.
2018-06-14 11:53:52 +02:00
8c4d8d739b Remove (provide ...) forms from package autoloads 2018-06-14 03:36:46 +02:00
6571c9eabf Update :depth in doom-files-in call
Was searching for *.el files one level too deep.
2018-06-14 03:36:46 +02:00
b21d575eac Init custom hooks on init-ui instead of post-init
Makes more sense to be on doom-init-ui-hook.
2018-06-14 03:36:46 +02:00
ac546220a4 Refactor core-editor def-package! blocks 2018-06-14 03:36:46 +02:00
36171f5b33 Fix :after-call deferred packages not loading
If you open emacs with a file (emacs file.txt), the file is switched to
before the switch-buffer hooks are set up. However, many core packages
are hooked to those switch-buffer hooks (to load when they're first
triggered). They miss the boat and don't get loaded.

These packages are now hooked onto after-find-file as well (and
immediately), which will fire when a file is opened, before or after
initialization.

Fixes #680
2018-06-14 03:36:46 +02:00
69c6e0b8fb Add doom-get-package-alist
New function returns a list of (NAME . DESC) cons cells in the order
they were declared (in module packages.el files).

Fixes a load-order issue where autoloads from one package would depend
on the autoloads of another package, but was inserted into
doom-package-autoload-file *before* the depended package, causing
void-variable errors.

Also allows for a big refactor of the :plugins byte-compile target.
2018-06-14 03:36:46 +02:00
08a4701774 Fix case where private init.el has no doom! block
This shouldn't error out. It's better if Doom ran normally, just without
any of its modules activated.

Addresses issue mentioned in #681
2018-06-14 00:45:57 +02:00
933023d779 Minor reformatting & docstring revision in core.el 2018-06-13 22:16:08 +02:00
b6f9bc9675 Fix package manager not :ignore'ing packages 2018-06-13 22:15:08 +02:00
4c2107d595 Refactor doom-module-from-path
If PATH is omitted, use (FILE!); also use doom-keyword-intern.
2018-06-12 21:07:34 +02:00