Commit Graph

433 Commits

Author SHA1 Message Date
Henrik Lissner
c760b33212
Fix recursive load errors when an enabled module doesn't exist 2018-03-14 21:21:58 -04:00
Henrik Lissner
c54fb7b8c0
Fix package advice interfering with doom-initialize
...by aggressively reloading the config from within doom-initialize (too
early, some state hasn't been initialized at this point).
2018-03-14 20:12:15 -04:00
Henrik Lissner
8898c5cb9a
Fix void-function doom*initialize-packages error
Occurs before autoloads are generated.
2018-03-14 19:52:25 -04:00
Henrik Lissner
aec4fbe590
Always apply ansi color codes to compilation buffers 2018-03-14 18:28:25 -04:00
Henrik Lissner
cdbd677423
Allow use of package.el #444
This makes package.el commands safe to use in Doom, and prevents errors
caused by unitialized state, by running package-initialize before
you use a package.el command.
2018-03-14 18:25:25 -04:00
Henrik Lissner
5c36519dab
Ignore package! if package is disabled
This allows you to disable packages with (def-package-hook! X :disable)
without an accompanying (package! X :ignore t). This reduces redundancy.
2018-03-12 13:32:01 -04:00
Henrik Lissner
a8906cc077
Add note to def-package-hook! to use it only in init.el files 2018-03-12 13:32:01 -04:00
Henrik Lissner
23fda88b2f
Detach doom-modules-dirs from doom! macro
Formerly, you were required to have a doom! call (even a blank one) in
~/.doom.d/init.el if you wanted to have private sub-modules in
~/.doom.d/modules/.

No more. It is no longer doom!'s responsibility to affect
`doom-modules-dirs`. This is now done by :config private, while the
Doom modules directory is now the initial entry in doom-modules-dirs.
2018-03-12 13:32:00 -04:00
Henrik Lissner
c6931db3f8
Fix module count in benchmark 2018-03-12 13:32:00 -04:00
Henrik Lissner
724773cbe4
Up the doom-modules :size to 100 2018-03-12 13:32:00 -04:00
Henrik Lissner
4b82c7b7db
Ensure doom is reinitialized properly after package management 2018-03-02 21:59:10 -05:00
Henrik Lissner
a22d5f0bb4
Fix error when package cache doesn't exist on reload-load-path 2018-03-02 20:52:30 -05:00
Henrik Lissner
d5c799a536
Rewrite require! macro 2018-03-02 20:45:43 -05:00
Henrik Lissner
0425724571
Major rewrite of doom module API
+ Fix #446, where the .local/packages.el cache was generated with
  a faulty load-path.
+ Entries in the doom-modules hash table are now plists, containing
  :flags and :path, at least.
+ Add doom-initialize-modules for loading module config.el files.
+ Add doom-module-get for accessing this plist, e.g.

    (doom-module-get :some module)         ; returns plist
    (doom-module-get :some module :flags)  ; return specific property

+ Replace doom-module-enable with doom-module-set, e.g.

    (doom-module-set :some module :flags '(+a +b +c))

+ Remove doom-module-flags (use doom-module-get instead)
+ Rename doom-module-enabled-p with doom-module-p
+ Replace doom-module-path with doom-module-find-path and
  doom-module-expand-file. The former will search for an existing module
  or file in doom-modules-dirs. The latter will expand the path from
  whatever path is stored in doom-modules.
+ Replace doom-module-paths with doom-module-load-path
+ Changed doom! to allow for nested doom! calls by delaying the loading
  of module config.el files until as late as possible.
+ Refactor doom-initialize-packages to only ihitialize package state
  (i.e. doom-packages, package-alist, and quelpa-cache), rather than its
  previous behavior of loading all Doom files (and sometimes all module
  files). This is faster and more predictable.
2018-03-02 19:14:45 -05:00
Henrik Lissner
cde3a3ee78
Delete doom-packages-file on doom//reload-load-path
Fixes potentially malformed load-path after package management
operatins.
2018-03-01 04:47:14 -05:00
Henrik Lissner
70159d829f
Fix doom! not loading modules properly 2018-03-01 03:34:38 -05:00
Henrik Lissner
0b2548f7b1
Fix module load order (delay config.el load) #441 2018-02-28 17:57:30 -05:00
Henrik Lissner
56c7d7fdcf
doom//byte-recompile-plugins: use non-interactive session
May indirectly solve #428
2018-02-28 17:57:30 -05:00
Henrik Lissner
c2fd538261
Refactor doom startup benchmark 2018-02-28 17:57:29 -05:00
Henrik Lissner
047ed6c9ea
Rethink doom-initialize & use package-initalize
Doom saves a lot of startup time by avoiding package-initialize, because
it loads every packages' autoloads file, which is expensive.
Unfortunately, these autoloads files are necessary for some plugins with
abnormal file structures (such as ESS). Previously, I was content with
loading them myself, but these occurrences have become more frequent, so
it would be safest if I relied on package-initialize more.

So doom-initialize will now do so. However, it will cache the load-path
(and Info-directory-list, fixing the lost info buffers) on first run.
This makes byte-compiling Doom almost useless, but it makes startup just
as fast as Doom would be if you had.

This needs more testing.
2018-02-28 17:57:29 -05:00
Henrik Lissner
b1bf67f630
Refactor package init process
quelpa is now initialized by doom-initialize-packages.
2018-02-20 17:54:10 -05:00
Henrik Lissner
6f1b96bc9a
Fix void-function error in doom//reload-autoloads
Don't use a third party library in a function that could potentially run
before packages are installed, ya big silly!
2018-02-19 01:31:31 -05:00
Henrik Lissner
a967aa051a
Force autoloads to use absolute paths
Autoload paths used to be relative to arbitrary roots (usually
doom-modules-dir). This commit changes doom//reload-autoloads to iterate
over autoloads in doom-autoloads-file and replace their file paths with
an absolute one.

Theoretically this should make Emacs feel marginally faster, but we
*probably* get more of a benefit from a shorter load-path (because we no
longer need doom-modules-dirs, doom-core-dir or doom-psuedo-module-paths
in the load-path).

This is highly experimental however!
2018-02-19 01:25:37 -05:00
Henrik Lissner
1a20c49ef3
Refactor cl-loop => cl-member in doom//byte-compile 2018-02-19 01:20:53 -05:00
Henrik Lissner
7ac29bbd27
Refactor require! macro 2018-02-17 19:09:15 -05:00
Henrik Lissner
8efd5d1eae
Fix make clean not catching all *.elc files 2018-02-16 23:28:18 -05:00
Henrik Lissner
d91481a9a0
Add private module to load-path
This fixes autoload cookies in private autoload files (e.g.
~/.doom.d/autoload/file.el).
2018-02-16 23:26:44 -05:00
Henrik Lissner
e7c9f5c08f
Fix over-zealous path resolution
This issue made it impossible enable default modules from private doom!
blocks.
2018-02-16 05:33:27 -05:00
Henrik Lissner
bae226b94f
Refactor to revolve module tree roots around doom! calls
Any module can now use a doom! call to declare a module tree root.

This means that if you have a doom! block in
~/.emacs.d/modules/lang/org/init.el, then you can have submodules in
~/.emacs.d/modules/lang/org/modules/MODULE/SUBMODULE if you wanted to
for some reason.

This is only really truly useful for private modules. A doom! block in
~/.doom.d/init.el will recognize and enable modules in
~/.doom.d/modules/.
2018-02-16 05:07:46 -05:00
Henrik Lissner
d04a1fa940
Remove doom-module-pairs 2018-02-16 04:47:02 -05:00
Henrik Lissner
f864931643
Fix gibberish (char codes) in load-path 2018-02-16 03:11:28 -05:00
Henrik Lissner
d2436650a3
Move server+benchmark code into doom|finalize 2018-02-16 02:11:41 -05:00
Henrik Lissner
2b1c323dbf
💥 Redesign private sub-module system
~/.doom.d/modules is now a full module tree, like ~/.emacs.d/modules.
Symlinks are no longer involved.

Private modules can now shadow Doom modules. e.g.
~/.doom.d/modules/lang/org will take precendence over
~/.emacs.d/modules/lang/org.

Also, made doom--*-load-path variables public (e.g. doom--site-load-path
=> doom-site-load-path), and rearranged the load-path for a 10-15%
startup boost.
2018-02-16 02:11:10 -05:00
Henrik Lissner
0e6540fb8f
Fix featurep! in private submodules
You'll have to use the full form to use featurep! in the private module
root, but now the short form will work in the nested submodules.
2018-02-15 03:36:32 -05:00
Henrik Lissner
b3dcba54eb
Add config/private; for ~/.doom.d & ~/.config/doom support #406
A modules/ submodule will be symlinked to ~/.emacs.d/modules/private.
2018-02-14 23:36:35 -05:00
Henrik Lissner
3355378480
Fix doom//reload-load-path infinite recursion with daemon emacs 2018-02-08 02:15:41 -05:00
Henrik Lissner
14080a1781
Update core-packages docstrings; rename doom-module-get => doom-module-flags 2018-01-30 21:26:02 -05:00
Henrik Lissner
1fda25ce9a
Force make commands to traverse symlinks too 2018-01-29 23:23:48 -05:00
Henrik Lissner
e55e798048
Fix doom! not loading modules after byte-compile 2018-01-29 21:22:55 -05:00
Henrik Lissner
a3e3909368
Set doom-modules sooner
Fixes module lookups within modules (like featurep!).
2018-01-29 18:06:59 -05:00
Henrik Lissner
3a31949483
Refactor doom! to support nested calls #352
Isolates doom! a little more to allow for nested doom! calls.
2018-01-29 17:01:02 -05:00
Henrik Lissner
47d15fdf8a
Make startup benchmark a little more accurate #353
Also sets doom-init-time first thing in doom-post-init-hook.
2018-01-13 15:11:28 -05:00
Henrik Lissner
987805de5f
Fix recursive load errors with multiple doom! calls #352 2018-01-12 14:40:34 -05:00
Henrik Lissner
2b98e550e8
Reverse load-path to fix precedence issues
Originally, I built the load-path with site-lisp paths first, then
packages. There was a modest ~10% startup boost doing this, because
there were considerably more site packages loaded at startup than
plugins.

However, this meant built-in packages would get precedence over plugins,
which is undesirable. In org's case, I simply modified the load-path
in lang/org/init.el. However, this issue has cropped up again in #340.

Evidently, that 10% boost may not be worth the risk it imposes, so I've
rearranged the load-path with packages first.
2018-01-10 22:47:35 -05:00
Henrik Lissner
42f4d10d6d
Fix doom//reload-autoloads not reloading autoloads file
doom-packages--async-run doesn't return anything. Whoops!
2018-01-08 22:47:38 -05:00
Henrik Lissner
25619908a2
Narrow down the purpose of init & post-init hooks
Essential hooks should be added to doom-init-hook. Non-essential and
extra hooks should be added to doom-psot-init-hook.
2018-01-07 00:15:58 -05:00
Henrik Lissner
392f04446f
General refactor (use map.el more)
+ map-delete is shorter and faster than assq-delete-all
+ map-put is simpler than the delete-then-set workflow
+ map-merge is great for merging default and user settings
2018-01-07 00:15:58 -05:00
Henrik Lissner
379914ccd7
doom-initialize: letbind load-path to site load-path instead
PREMATURE OPTIMIZATION DETECTED.

EXTERMINATE. EXTERMINATE. EXTERMINATE.
2018-01-07 00:15:57 -05:00
Henrik Lissner
e894c07453
Load module init.el too from require! macro 2018-01-06 04:14:44 -05:00
Henrik Lissner
a568f95004
Fix doom//reload-autoloads #328
`get-file-buffer` returns nil if no buffer for that file already exists.
In an edge case on Windows, `update-file-autoloads` doesn't leave
a hanging buffer, possibly ignoring its SAVE-AFTER argument. Using
`find-file-noselect` fixes this, which will open a buffer if one doesn't
already exist.
2018-01-05 13:43:17 -05:00
Henrik Lissner
2598d48bba
Add org elpa archive + update lang/org #327
Now that the org ELPA archive has https support, we can add it to
package-archives. This fixes some 'org is unavailable' errors when
installing org packages that have declared earlier versions of org as
a dependency.

This also makes installing a newer version of org-mode much simpler.
Woo!
2018-01-04 16:16:45 -05:00
Henrik Lissner
eef6ed3d11
Minor, general refactor & comment updates 2018-01-01 13:21:52 -05:00
Henrik Lissner
79ca2b2911
Fix interactive usage of doom//byte-compile-core 2017-12-31 18:28:42 -05:00
Henrik Lissner
9628b21d22
Fix async package functions not running from right cwd 2017-12-31 18:28:26 -05:00
Henrik Lissner
a811c7ff12
core-packages: minor refactor of load! & def-package! 2017-12-28 19:15:50 -05:00
Henrik Lissner
5789fb4511
Don't rerun doom init hooks on doom-reload-hook 2017-12-28 01:02:32 -05:00
Henrik Lissner
89f07f88c5
General & minor refactor 2017-12-23 22:13:48 -05:00
Henrik Lissner
6a0e4bd0db
doom-initialize-packages: reinit packages after modules 2017-12-23 16:24:43 -05:00
Henrik Lissner
9924a43506
Fix doom-module-pairs returning pairs in arbitrary order
This causes errors because of arbitrary module load order.  This happens
in Emacs 25.x, because hash-table-keys there uses maphash, while in
Emacs 26+ it uses cl-loop.
2017-12-23 03:26:32 -05:00
Henrik Lissner
3bbb78f779
doom//byte-compile: better error handling (revert on error) 2017-12-22 17:05:01 -05:00
Henrik Lissner
9a9f2ce036
Fix make clean printing long, relative paths in output 2017-12-22 16:26:08 -05:00
Henrik Lissner
efc7ec38ae
core-packages: general, minor refactor 2017-12-22 16:26:08 -05:00
Henrik Lissner
6922fe11fe
Refactor doom-initialize-packages 2017-12-22 16:26:08 -05:00
Henrik Lissner
02c14f560d
Refactor bootstrap process + add doom-initialize-load-path 2017-12-22 16:26:05 -05:00
Henrik Lissner
6343e8ad85
(BREAKING) Don't host-namespace local files
Local cache and data files were stored in a parent folder named after
your host, because I'd symlink the same config across computers via
dropbox. This would cause byte-compile issues in packages, so I stopped
doing this.

Now that each computer gets its own clone, host-namespaced local
directories are unnecessary. There's no other benefit to having them.
2017-12-22 14:48:13 -05:00
Henrik Lissner
a5596c8923
Ensure doom-autoload-file directory exists first 2017-12-22 14:30:31 -05:00
Henrik Lissner
4e83cd516c
Add unicode symbols to package management output 2017-12-20 20:07:46 -05:00
Henrik Lissner
96a232b2ae
Rename module library functions in core-packages
+ doom-module-loaded-p => doom-module-enabled-p
+ doom-module-flags => doom-module-get
+ Use load! for module config files, rather than require!
2017-12-10 16:59:10 -05:00
Henrik Lissner
b14198dedf
Extend byte-compile ;;;###if support to other elisp files 2017-12-10 16:57:51 -05:00
Henrik Lissner
ae25e319b0
Silence 'cannot load' false positive errors when byte-compiling 2017-12-10 14:51:32 -05:00
Henrik Lissner
76a4ae459d
Fix obsolete (when|if)-let messages in Emacs 26 2017-12-10 14:49:52 -05:00
Henrik Lissner
4450f08b0b
Make async a core package again 2017-12-09 14:17:23 -05:00
Henrik Lissner
346d7bdf36
Detect init.el in any module, instead of private user module
User module (named after user-login-name) is no longer automatically
loaded or detected, and must be explicitly mentioned in the doom! macro
of your emacs init.el file.

Also, any module can now have an init.el file, which will be run before
any modules are loaded.
2017-12-08 23:14:13 -05:00
Henrik Lissner
df93fd8ce4
Refactor require! macro 2017-12-08 23:14:12 -05:00
Henrik Lissner
9d81bc5a8b
Major refactor: use-package-always-defer = nil & use :hook
Possibly breaking change: packages are no longer deferred by default.

Addresses #286
2017-12-08 23:14:11 -05:00
Henrik Lissner
2cbd1b9107
Half-revert 01185352; we need use-package's newer features+bugfixes 2017-12-08 23:14:11 -05:00
Henrik Lissner
b885164ce6
Update comments in core-packages 2017-12-04 13:43:04 -05:00
Henrik Lissner
0118535267
Install core packages from melpa-stable
Use-package broke in a recent update, as with Doom, since it relies so
heavily on it. To combat this issue arising again, use-package will be
installed from melpa-stable from now on.

Addresses #283
2017-12-04 13:22:21 -05:00
Henrik Lissner
2190d29960
Enable load-prefer-newer sooner in noninterative/debug sessions 2017-12-03 20:04:00 -05:00
Henrik Lissner
1140af7807
Report missing module in require! macro 2017-12-03 20:04:00 -05:00
Henrik Lissner
5364260a5c
Report ignored files w/ reloading autoloads 2017-12-03 20:04:00 -05:00
Henrik Lissner
f21c01fce2
predicate cookies: restrict to first 3 lines + set load-file-name 2017-12-03 20:03:55 -05:00
Henrik Lissner
a8f4b6cb2c
Fix 'No such server' errors in doom//reload-load-path #267 2017-11-14 15:32:11 +01:00
Henrik Lissner
6def061c5a
Minor refactor/comment corrections 2017-11-13 18:03:36 +01:00
Henrik Lissner
eb01401513
Remove references to old package api 2017-11-13 17:58:16 +01:00
Henrik Lissner
8e8ddeda5f
doom--display-benchmark => doom-packages--display-benchmark 2017-11-08 22:51:55 +01:00
Henrik Lissner
903ac3f0ef
Run doom//reload-autoloads in separate session
Includes a minor refactor core/core-packages.el
2017-11-08 22:51:55 +01:00
Henrik Lissner
e38f508ec1
doom--module-paths => doom-module-paths 2017-11-08 22:51:55 +01:00
Henrik Lissner
211977e28a
doom--module-pairs => doom-module-pairs 2017-11-08 22:51:55 +01:00
Henrik Lissner
b4f9087022
Add docstring to doom//byte-compile-core 2017-11-08 14:42:22 +01:00
Henrik Lissner
5f166d9297
Add --quick to Emacs batch calls (experimental) 2017-11-07 13:09:24 +01:00
Henrik Lissner
2516a123d6
Use -- to delimit arguments 2017-11-07 13:08:19 +01:00
Henrik Lissner
95a5b46dc5
New // naming convention + refactor doom management functions 2017-11-05 19:54:43 +01:00
Henrik Lissner
2009a841fd
doom-initialize: retry package-initialize on error 2017-11-05 01:16:36 +01:00
Henrik Lissner
40a1aaae8e
Make async a core package 2017-11-05 01:16:35 +01:00
Henrik Lissner
cd7ab060e0
General refactor & docstring updates 2017-10-05 17:02:59 +02:00
Henrik Lissner
3062687998 Revert "Preload modules before compiling #219"
This reverts commit c9632a7d8b.

Causes more general breakage.
2017-10-05 14:17:05 +02:00
Henrik Lissner
c9632a7d8b
Preload modules before compiling #219 2017-10-05 12:38:23 +02:00
Henrik Lissner
e2adda7466
More init logging; more details in startup message 2017-10-02 20:03:49 +02:00
Henrik Lissner
42fec8494d
Rename doom/reload => doom/reload-load-path 2017-09-19 15:07:57 +02:00
Henrik Lissner
42e7f56a1f
Refactor doom--module out of featurep! workflow
Fixes a 'featurep! not used properly' error that occurs during byte
compilation.
2017-09-15 14:37:19 +02:00
Henrik Lissner
a2367866ec
Load files during byte-compilation
Prevents issues like missing macro definitions in later modules, at the
cost of making byte-compilation a little heavier.
2017-09-15 13:44:37 +02:00
Henrik Lissner
bb959c635b
Prevent/delay hash-table rehashing
This is *definitely* premature optimization.
2017-09-11 23:15:20 +02:00
Henrik Lissner
4addd92c30
Simplify core loading process (part 3) 2017-08-08 19:14:10 +02:00
Henrik Lissner
c021d347d3 Refactor module pairs and paths helpers 2017-08-08 16:38:17 +02:00
Henrik Lissner
87ee1a06e3 Remove def-feature! (keep things simple!)
Removed syntactic sugar macro because it just hides obvious
functionality behind magic.
2017-08-08 16:38:17 +02:00
Henrik Lissner
ac05f9a763 Remove wildcard support from doom! macro
"Explicit is better than implicit."
2017-08-08 16:38:17 +02:00
Henrik Lissner
0b7b8800a2 Add support for module flags in doom! macro #158
For example:

  (doom! :feature (version-control +git))

I leave it to modules to interpret these flags, and they can be detected
through one of the following:

 + (featurep! :feature version-control +git)
 + (featurep! +git) -- syntactic sugar, only available from within
   modules.
 + (doom-module-flags :feature version-control) -- returns a list of
   flags for this module.

Flags are also available from packages.el files.
2017-08-08 16:38:17 +02:00
Henrik Lissner
65748c5809
Simplify core loading process 2017-08-08 14:25:36 +02:00
Henrik Lissner
5346670ab0 Add doom/recompile-packages (make compile:elpa)
If you upgrade (or downgrade) Emacs, there may be byte-compilation
errors. This works around that.
2017-07-28 19:21:00 +02:00
Henrik Lissner
aa255d9cb6
Revert "Refactor doom-initialize-packages"
This reverts commit ea4d0a50cb.

Fixes #148
2017-07-26 17:07:10 +02:00
Henrik Lissner
f0fc5c5281
doom/compile: don't count excluded test files 2017-07-14 19:49:54 +02:00
Henrik Lissner
6a5bd216e5
Appease byte-compiler senpai 2017-07-14 18:19:08 +02:00
Henrik Lissner
ac514d7a0c
[Hotfix] Fix doom-initialize-packages #147
Caused by incomplete initialization of Doom core when
doom-initialize-packages is used from noninteractive commands.
2017-07-14 18:14:23 +02:00
Henrik Lissner
c50dc63854
General cleanup 2017-07-14 15:23:12 +02:00
Henrik Lissner
ea4d0a50cb
Refactor doom-initialize-packages
It reloaded Doom too aggressively. No more.
2017-07-13 00:05:30 +02:00
Henrik Lissner
f93fb61f33
Refactor core.el
+ Load Doom core in doom! macro
+ Move automatic minor modes to core-editor
+ Move doom*set-indirect-buffer-filename to core-editor
2017-07-13 00:05:30 +02:00
Henrik Lissner
1ff0c2a8e7
doom/clean-compiled => doom/clean-compiled-files 2017-07-09 22:52:28 +02:00
Henrik Lissner
27b344b64a
Rename doom/clean-cache => doom/reset (+ make reset) 2017-07-09 22:51:36 +02:00
Henrik Lissner
a002f7025c
Rewrite docstrings for package functions/macros 2017-07-02 16:47:27 +02:00
Henrik Lissner
ce5cd52642
Refactor load! to accept a string filesym 2017-07-02 16:38:28 +02:00
Henrik Lissner
cbfb3eeda4
Fix, rename & move doom/run-tests => doom-run-tests 2017-06-24 17:15:22 +02:00
Henrik Lissner
fac587d21e
Remove debug code in doom-initialize-modules 2017-06-24 16:51:37 +02:00
Henrik Lissner
e38337b357 Evaluate featurep! at compile-time
Its return value shouldn't change during runtime.
2017-06-24 02:25:15 +02:00
Henrik Lissner
a5e2a5745b
Eval :ignore/:freeze in package! plists 2017-06-22 23:59:34 +02:00
Henrik Lissner
e44f5d0457
Call doom|finalize after doom-initialize-packages
doom-initialize-packages re-initializes certain important variables,
like gc-cons-threshold (which causes intermittent freezing when set too
high), without resetting them to sensible defaults. This ensures those
variable are reset afterwards.
2017-06-20 16:25:46 +02:00
Henrik Lissner
345b704a0d
Make interactive doom/compile less destructive
It would reload all files; which is harmless, but does unnecessarily
inflate variables that get push-ed or nconc-ed to. It's best to compile
from the command line.
2017-06-20 16:25:46 +02:00
Henrik Lissner
9039707184
Fix error when private init.el doesn't exist
Found in doom-initialize-packages, which DOOM calls in many
noninteractive functions.
2017-06-14 21:42:08 +02:00
Henrik Lissner
816df321a5
General refactor & cleanup 2017-06-14 21:15:19 +02:00
Henrik Lissner
9c93c453e8
Reorganize unit-tests and test workflow
+ Moved unit tests out of tests/ and into their respective modules.
+ Rewrite makefile and added these tasks:
  + <MODULE>/<SUBMODULE> -- byte-compile a specific module
  + test:<MODULE>/<SUBMODULE> -- runs tests for a specific module
  + testi -- run tests in an interactive session of Emacs (WIP)
  + run -- opens an Emacs session with this config; useful when it is in
    a non-standard location.
2017-06-14 21:15:19 +02:00
Henrik Lissner
732dee608a
Stability/error-handling refactor (part 1)
This refactor is about improving how Emacs deals with errors.

A large net is now cast at startup to catch possible errors, produce
more helpful error messages, and localize the damage. Significantly
reducing the risk of later modules not loading (and leaving you
stranded in a half-broken Emacs session).

The DOOM core files are an exception. If something messes up in there,
it *should* choke.

+ use-package will now report missing packages or slow-loading/broken
  def-package! configurations.
+ Persp-mode no longer (inadvertantly) hides buffers that pop up at
  startup, like the *Warnings*, *Backtrace* or debugger buffers.
+ `make autoloads` (or doom/reload-autoloads) now produces a slightly
  more informative error message if an error occurs while building the
  autoloads file.
+ Error handling for package management is *slightly* better now; error
  messages now include the type of error; this needs work.
2017-06-14 21:15:19 +02:00
Henrik Lissner
042da73d5d
Initialize doom-init-time a little sooner (#106) 2017-06-12 15:13:30 +02:00
Henrik Lissner
4984a548d1
Refactor DOOM init & add new init hooks
+ Add doom-init-hook and doom-post-init-hook to simplify Emacs init
  hooks into less ambiguous ones.
+ Attach former after-init-hook and emacs-startup-hook hooks to new doom
  init hooks.
+ Vastly improves daemon and tty support: preventing incorrect colors
  from bleeding across face class barriers, and into GUI Emacs and vice
  versa, when spawned with emacsclient.
+ Fix persp-mode breaking Emacs daemon, and ensuring that initialization
  is done properly in terminal Emacs (and emacsclient frames).
2017-06-12 00:37:14 +02:00
Henrik Lissner
2097498f3e
General docstring+idempotency refactor 2017-06-11 00:59:02 +02:00
Henrik Lissner
688aef12d4
Fix #88: ignored private packages.el 2017-06-10 18:21:59 +02:00
Henrik Lissner
c7254e7bdc
Major optimization refactor, across the board
+ enable lexical-scope everywhere (lexical-binding = t): ~5-10% faster
  startup; ~5-20% general boost
+ reduce consing, function calls & garbage collection by preferring
  cl-loop & dolist over lambda closures (for mapc[ar], add-hook, and
  various cl-lib filter/map/reduce functions) -- where possible
+ prefer functions with dedicated opcodes, like assq (see byte-defop's
  in bytecomp.el for more)
+ prefer pcase & cond (faster) over cl-case
+ general refactor for code readability
+ ensure naming & style conventions are adhered to
+ appease byte-compiler by marking unused variables with underscore
+ defer minor mode activation to after-init, emacs-startup or
  window-setup hooks; a customization opportunity for users + ensures
  custom functionality won't interfere with startup.
2017-06-09 00:47:45 +02:00
Henrik Lissner
aa6ecaa68e
Revert async package refresh (#95, #96) 2017-06-08 01:00:44 +02:00
Henrik Lissner
a2f14183a1
Fix double package-refresh on first install 2017-06-06 12:01:10 +02:00
Henrik Lissner
7005ae13d7
Load private init.el before compilation (fix #95)
Ensures that private settings are available during byte-compilation.

Also fixes a compile error when private init.el (which should be an
optional file) doesn't exist.
2017-06-06 11:45:19 +02:00
Henrik Lissner
fe610c0973
Fix private init.el when byte-compiled
By byte-compiling it earlier in doom/compile
2017-06-05 23:02:07 +02:00
Henrik Lissner
df92e47967
Refactor subr-x out of doom/compile 2017-06-05 20:19:46 +02:00
Henrik Lissner
341219f1bf
Refactor doom! (simplify) 2017-06-05 20:19:23 +02:00
Henrik Lissner
d4761a7c6d
Add :disable support to def-package-hook!
`def-package!` now respects `doom-disabled-packages`
2017-06-05 16:45:42 +02:00
Henrik Lissner
d62f446dc3
General cleanup + refactor; revise docstrings 2017-06-05 16:45:19 +02:00
Henrik Lissner
0d9c0e7f54 Add def-package-hook! macro 2017-06-05 14:23:17 +02:00
Henrik Lissner
27bfa14def General refactor + cleanup 2017-06-05 14:23:17 +02:00
Henrik Lissner
435fda0f41
Add :ignore & :freeze support to package! 2017-06-05 14:21:07 +02:00
Henrik Lissner
b82ace43ea Autoload private module & add private init.el (#88) 2017-06-05 12:35:51 +02:00
Henrik Lissner
30402495fe General refactor + cleanup 2017-06-05 12:35:51 +02:00
Henrik Lissner
77e2a1f6f2 Refactor doom/reload 2017-06-03 21:00:53 +02:00
Henrik Lissner
d5682953a9 Be extra sure to delete the right *.elc files
Ensures no extra elc files are caught in the crossfire, e.g. in .cask or
elsewhere.
2017-06-03 12:05:43 +02:00
Henrik Lissner
8af009f9b7 Ignore autoload/evil*.el if evil isn't loaded 2017-05-28 02:48:20 +02:00
Henrik Lissner
157eb3e5da Revise tls-program; rely on default trust stores
Addresses #72 & #80
2017-05-26 20:22:45 +02:00
Henrik Lissner
d5d0f26c09 Add :gblame & :grevert ex commands 2017-05-21 15:10:49 +02:00
Henrik Lissner
ddb2c2cd4d quelpa-verbose = doom-debug-mode 2017-05-21 15:10:33 +02:00
Henrik Lissner
5b343a32d0 Don't change gc-cons-threshold on reload 2017-05-21 10:34:21 +02:00
Henrik Lissner
a4bacca812 Update TLS settings (#72) 2017-05-20 18:40:13 +02:00
Henrik Lissner
00b4ab1776 Fix .travis.yml + add INSECURE envvar 2017-05-19 23:49:07 +02:00
Henrik Lissner
7e702bd9d3 Use default gnutls-trustfiles for other OSes 2017-05-19 22:34:08 +02:00
Henrik Lissner
5e894027c5 Improve error handling for package management 2017-05-19 22:30:44 +02:00
Henrik Lissner
e678d13ed6 Use HTTPS ELPA sources & verify TLS (#72) 2017-05-19 22:30:34 +02:00
Henrik Lissner
323b2f6c2f Refactor package management: better feedback & bug fixes 2017-05-19 02:57:39 +02:00
Henrik Lissner
c98efbe28e doom/reload-autoloads: more feedback when debug mode is on 2017-05-15 20:26:33 +02:00
Henrik Lissner
e265431507 General refactor, cleanup & commenting 2017-05-10 05:28:50 +02:00
Henrik Lissner
c52efdfb5b Load ~/.emacs.local.el, if available 2017-05-01 14:52:39 -04:00
Henrik Lissner
d651311d1d Various tweaks & clean up 2017-05-01 14:52:29 -04:00
Henrik Lissner
d20c8045ab General cleanup 2017-04-25 23:01:45 -04:00
Henrik Lissner
49b4b39dfe autoload/packages: refactor + improve output consistency 2017-04-18 05:45:47 -04:00
Henrik Lissner
4c19cd3e28 Remove unused doom-inhibit-reload 2017-04-17 23:55:05 -04:00
Henrik Lissner
96e83e987f Give the byte compiler a voice 2017-04-17 02:17:26 -04:00
Henrik Lissner
5ae94b765c PRAISE BE TO THE BYTE COMPILER FOR THY SHARP QUOTES 2017-04-17 02:17:10 -04:00
Henrik Lissner
8a6cf96cfc doom-initialize: don't remove use-package keywords (no need) 2017-04-16 21:23:22 -04:00
Henrik Lissner
9288b59d91 Remove spacing in package management output 2017-04-16 11:54:22 -04:00
Henrik Lissner
e48c6c5381 ansi-{format,message}! => {format,message}! (to be generalized) 2017-04-15 01:29:24 -04:00
Henrik Lissner
39fe6d5f86 doom/compile: fix output macros 2017-04-12 21:41:49 -04:00
Henrik Lissner
a1625eaf73 Refactor doom/compile; shorter file paths in doom/clean-compiled 2017-04-12 08:53:27 -04:00
Henrik Lissner
931b6d2116 doom/reload: add doom-inhibit-reload & ignorable reload requests 2017-04-12 08:52:57 -04:00
Henrik Lissner
0c23ff43a4 Add doom-protected-packages for excluding packages from autoremoval 2017-04-11 08:43:26 -04:00
Henrik Lissner
e3a33f6a9e Rename doom-protected-packages => doom-core-packages 2017-04-11 08:42:55 -04:00
Henrik Lissner
cff600935a doom/recompile: aggressively compile core.el, in case of load-path updates 2017-04-08 23:27:39 -04:00
Henrik Lissner
58173432d3 Refactor doom compilation; unset byte-compile-dynamic 2017-04-06 19:43:56 -04:00
Henrik Lissner
6d998b48d9 doom-initialize: load instead of require (in case of internal reloading) 2017-04-05 19:40:34 -04:00
Henrik Lissner
f09fba5736 doom--display-benchmark: fix plugin count for uncompiled state 2017-04-05 14:26:13 -04:00
Henrik Lissner
91cc8294c6 core-packages (compilation): don't be coy doom-initialize-packages 2017-03-31 23:45:35 -04:00
Henrik Lissner
22d1969a52 doom/reload: recompile + reload compiled el files; silence byte compile 2017-03-30 15:15:26 -04:00
Henrik Lissner
50062dadd7 Add doom/recompile; use it in doom/reload; refactor doom/reload 2017-03-28 15:53:53 -04:00
Henrik Lissner
4d89fd1cc9 Fix doom/reload (recompiles if necessary); simplify doom/compile 2017-03-27 23:22:53 -04:00
Henrik Lissner
e199b3f7ed core-packages: remove use-package :after hack (fixed upstream) 2017-03-27 22:10:22 -04:00
Henrik Lissner
fc5dd09f47 core: minor tweaks 2017-03-27 13:05:30 -04:00
Henrik Lissner
88726e9afe doom/reload: fix recompilation 2017-03-25 18:46:27 -04:00
Henrik Lissner
12d0cf94b6 doom/reload: fix server.el + no process errors 2017-03-25 01:44:22 -04:00
Henrik Lissner
b60e8b7214 doom/compile-lite: add docstring 2017-03-25 01:06:40 -04:00
Henrik Lissner
06b1a8c928 Reload (via server if noninteractive) after pkg install/update/autoremove 2017-03-25 01:03:40 -04:00
Henrik Lissner
e8e66c88d0 core-packages: add doom/compile-lite and make compile-lite 2017-03-25 01:03:02 -04:00
Henrik Lissner
34b76ef43b core-packages: move use-packaeg :after hack to eob
So it doesn't cause errors when emacs.d is compiled
2017-03-25 01:02:19 -04:00
Henrik Lissner
5fc77363b0 load-prefer-newer = t when noninteractive 2017-03-20 23:01:02 -04:00
Henrik Lissner
188baf8626 Allow forced require! 2017-03-20 21:15:18 -04:00
Henrik Lissner
8aac4b2091 doom/clear-* => doom/clean-* (consistent with makefile tasks) 2017-03-19 23:48:43 -04:00
Henrik Lissner
1bd33f6ff1 core-packages: use-package update + temporary :after fix 2017-03-19 22:51:54 -04:00
Henrik Lissner
3e63d2d23b Reduce def-package magic; explicitly use :when property 2017-03-19 22:47:50 -04:00