Commit Graph

144 Commits

Author SHA1 Message Date
e76e4a1f75 Fix void-variable errors from defer-until! macro 2018-06-28 14:40:11 +02:00
07d37f97fb Refactor after! macro
KISS
2018-06-27 22:46:49 +02:00
5a7c8803d9 Remove :when support from after!; add defer-until!
New macro does what the :when keyword did for after!.
2018-06-27 21:29:28 +02:00
5ae25318a4 Remove fmakunbound from add-transient-hook!
unintern is enough.
2018-06-27 18:53:05 +02:00
79e155a2a8 doom-files-in: match full path with :match
Instead of just the filename.
2018-06-26 18:58:07 +02:00
e91af20003 Optimize core-lib & pure module functions
And confer module membership check to run-time, rather than compile
time.
2018-06-24 22:23:08 +02:00
f6dc6ac74e Refactor out map.el usage
After some profiling, it turns out map-put and map-delete are 5-7x
slower (more on Emacs 25) than delq, setf/alist-get and add-to-list for
small lists (under 250 items), which is exactly how I've been using
them.

The only caveat is alist-get's signature is different on Emacs 25, thus
a polyfill is necessary in core-lib.
2018-06-23 19:53:54 +02:00
5cb1d5d4c9 eval-after-load -> with-eval-after-load
The way Doom was using eval-after-load ensured its form were never
byte-compiled or even checked by the byte-compiler, because they were
treated as quoted forms (data), and thus eval'ed.

Friends don't let friends use eval.
2018-06-20 02:08:34 +02:00
151858a8dc Redesign Doom error handling
Another refactor, again to improve the locality of doom errors and make
the data that accompanies them more useful in determining the origin and
source of issues. Also, bin/doom is now a little more informative about
how to debug errors.
2018-06-20 02:07:12 +02:00
126b7b6383 Refactor associate! with cl-defmacro 2018-06-16 11:34:42 +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
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
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
399591b951 Add :mindepth property to doom-files-in
+ don't error out if directory doesn't exist.
+ :depth now starts from 0, instead of 1
2018-06-12 21:07:34 +02:00
fe6afa19a3 Add docstrings to FILE! & DIR! macros 2018-06-12 00:25:11 +02:00
0741c8851a Split core-packages into two (packages & modules)
+ Move doom-initialize et co into core.el
+ Lazy load core-packages
+ load! has been moved into core-lib
+ Added FILE! and DIR! macros
+ Fix package! not returning correct value when package is disabled
+ Remove :disabled support for def-package-hook! officially
2018-06-12 00:02:04 +02:00
dd2d704137 Fix reference to renamed _directory variable
Whoops!
2018-06-08 13:39:04 +02:00
bc2f8a0ec9 Don't complain about used _directory letvar
Byte-compiler-sama must be appeased.
2018-06-08 13:30:20 +02:00
dda81f7b54 Fix insertion order of add-hook! when appending
When appending multiple functions to a hook(s) with add-hook!, insertion
order was not preserved. e.g.

  => (add-hook! :append 'some-mode-hook #'(hook-1 hook-2))
  => some-mode-hook
  (hook-2 hook-1)
2018-06-07 02:51:45 +02:00
c96086d426 Fix reference to void variable path
In certain uses of file-exists-p! and project-file-exists-p!
2018-06-04 21:17:49 +02:00
52a04fd8c6 Optimize file-exists-p! & project-file-exists-p! 2018-06-04 21:17:49 +02:00
b53df20dd5 Minor refactor of associate! macro 2018-06-03 23:56:25 +02:00
796af69c28 Move define-key! macro to core-lib 2018-06-03 23:52:21 +02:00
e5a4415d58 General, minor reformatting/refactor 2018-06-02 13:58:04 +02:00
a4d03654bd Fix associate!'s :files refusing a list of strings
Due to changes under the hood, the :files FORM property requires FORM to
either be a nested form of and/or sexps, or a single string. This is
inconsistent with the plurality of ":files", so it has been fixed to
accept a list of strings (with an implicit (and ...)).
2018-05-31 16:59:53 +02:00
c0b904afca Fix void-variable nose-mode error in python #628
Caused by associate! only doing a fboundp check on MODE, but not boundp,
before trying to access its value.
2018-05-30 16:05:24 +02:00
6b1e1a2c58 Fix doom-files-in returning files in arbitrary order
This would cause compilation issues in doom//byte-compile because
prerequisite files weren't compiled before dependent ones.
2018-05-30 01:43:57 +02:00
4863f9fbf0 Fix after! macro with multiple features 2018-05-28 17:31:44 +02:00
9e7703db2a core-lib (add-transient-hook!): set permanent-local-hook on hook fn 2018-05-24 22:35:45 +02:00
3dd291a675 core-lib: improve function docstrings 2018-05-24 21:15:17 +02:00
4ee0b5ba6d New macros file-exists-p! & project-file-exists-p!
The latter replaces the doom-project-has! macro
2018-05-24 21:15:17 +02:00
b2186745b7 Refactor doom--resolve-path-forms 2018-05-24 18:35:06 +02:00
a48f75371b core-lib (doom-files-in): default relative-to to default-directory 2018-05-24 13:02:20 +02:00
dc0175b8e1 Merge doom-files-under into doom-files-in; more powerful doom-files-in 2018-05-23 23:34:32 +02:00
2637c415d3 Add error checks & docstrings to doom-keyword-* lib functions 2018-05-23 19:09:09 +02:00
67269fdf2b add-transient-hook!: unintern => fmakunbound 2018-05-21 01:38:17 +02:00
ac5eaf0fb3 Load core-lib before core-package
So that core-package may use the Doom standard library.
2018-05-21 01:38:17 +02:00
16a9126b3e Make after! noop if package is disabled
After disabling a package, def-package! blocks for that package are
ignored. Now, after! blocks for those packages will be ignored too.
2018-05-21 01:38:17 +02:00
dc4e0f1556 Add doom-file-cookie-p to core-lib 2018-05-20 00:07:06 +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
59f510e85f Add four new functions for keywords & file collection 2018-05-19 16:32:12 +02:00
80adb9c1f6 General refactor for consistency & idempotency
Also updated comments
2018-05-18 01:26:41 +02:00
673d3ed147 Prevent duplicate entries in doom-auto-minor-mode-alist 2018-05-16 13:14:46 +02:00
262b2f957b Fix associate! not enabling minor modes for :files/:modes/:when
Fixes #585
2018-05-16 13:14:46 +02:00
6b8520d189 Change add-transient-hook! to take hook suffix as 2nd arg
By default, transient hooks are defined as doom-transient-hook-N, where
N is a counter. This makes debugging them difficult.

Now, you may specify an id for the second argument. e.g.

  (add-transient-hook! 'find-file-hook load-evil (require 'evil))

Will define doom|transient-hook-load-evil, which is easier to debug and
remove, if necessary.
2018-05-15 21:49:51 +02:00
afdc6a31b5 Move def-setting! macros to core-packages 2018-05-14 13:05:03 +02:00
cef82fe0b0 Minor reorganization of core-lib 2018-05-14 13:05:03 +02:00
57f383ef76 General revision of docstrings 2018-05-14 13:05:03 +02:00
878b413885 New library macro: setq-hook! 2018-05-07 22:35:14 +02:00