Commit Graph

2213 Commits

Author SHA1 Message Date
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
57efa1b864 Update & fix unit tests 2018-03-02 20:46:45 -05:00
Henrik Lissner
d5c799a536 Rewrite require! macro 2018-03-02 20:45:43 -05:00
Henrik Lissner
738f39d21a Change how shell env is injected #449
Changes the behavior of the :env setting to fetch the shell variables
immediately on call.
2018-03-02 19:55:05 -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
01f9ca9e67 Ensure (if|when)-let* are available to the byte-compiler
This fixes void function errors in earlier versions of Emacs while
byte-compiling Doom.
2018-03-02 19:14:45 -05:00
Henrik Lissner
5c9ef4ee38 Replace doom-hide-modeline-mode w/ hide-mode-line-mode #423 2018-03-02 19:14:44 -05:00
Henrik Lissner
7542f4a660 Fix doom-visible-windows including popup windows 2018-03-01 22:07:14 -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
a9cbfc7f4e New :env setting for pulling shell envvars into MacOS sessions
:env lets you specify what environment variables exec-path-from-shell
should pull in from your shell environment at startup. As such, these
need to be defined at startup. :env is useless post-init.

May address #433
2018-03-01 01:03:03 -05:00
Henrik Lissner
48e605a7ca Delay exec-path-from-shell & don't omit it after byte-compile
Gives users an opportunity to customize what environment variables
exec-path-from-shell pulls in.

May address #433
2018-03-01 01:03:03 -05:00
Henrik Lissner
138ec2bf07 Remove manual loading of pkg-autoloads files
No longer necessary as of 0c80bb42
2018-02-28 17:57:30 -05:00
Henrik Lissner
0b2548f7b1 Fix module load order (delay config.el load) #441 2018-02-28 17:57:30 -05:00
Henrik Lissner
589108fdb2 Extend after! macro to support :any, :all & feature lists #442 2018-02-28 17:57:30 -05:00
Henrik Lissner
cacf13f226 Don't byte-compile exec-path on MacOS 2018-02-28 17:57:30 -05:00
Henrik Lissner
606b4695cc Add NOSUFFIX flag to (load custom-file) 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
2f7c9254d6 Fix over-zealous delete-backward-char #431
Would consume entire sexps.
2018-02-24 20:05:35 -05:00
Henrik Lissner
55c6244e9f doom-install-package: clean up after failed quelpa install 2018-02-22 04:48:36 -05:00
Henrik Lissner
446a66603f Fix quelpa packages looking up elpa version
This is a regression introduced in b1bf67f6.

Package management would incorrectly compare quelpa package versions
with elpa package versions. This would cause "outdated" packages to get
deleted.
2018-02-22 04:19:25 -05:00
Henrik Lissner
fe81a501f3 Fix void-function doom--menu-read error in byte-compiled Doom #427
The macro would be expanded, and then its helpers would never be loaded.
2018-02-21 15:32:51 -05:00
Henrik Lissner
7bfd0a3304 And changed-quelpa-recipe detection
These packages are now reinstalled on make install.
2018-02-20 17:55:55 -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
f113f99484 projectile-indexing-method = native (on windows) 2018-02-19 20:27:47 -05:00
Henrik Lissner
95009c08f8 doom/describe-module: detect module associated with major-mode 2018-02-19 20:27:18 -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
7707aec28a Remove doom group
Not really useful, and Doom doesn't encourage using the Emacs Customize
interface.
2018-02-18 03:04:58 -05:00
Henrik Lissner
b05ccbb98e Move some UI vars from core.el to core-ui.el 2018-02-18 02:59:11 -05:00
Henrik Lissner
cf4420e903 Fix doom//run-tests 2018-02-17 22:18:04 -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
2b43dd42e2 Refactor doom-hide-modeline-mode 2018-02-16 21:02:46 -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
dfefbd0176 Fix make test not resetting doom-modules properly 2018-02-14 21:18:56 -05:00
Henrik Lissner
4321f20b3e Appease byte-compiler-sama 2018-02-14 20:54:53 -05:00
Henrik Lissner
ae52b2ff60 Fix empty load-file-name in warn! macro during byte-compilation 2018-02-14 20:52:25 -05:00