Commit Graph

485 Commits

Author SHA1 Message Date
Henrik Lissner
03022d09f9 Remove doom//x naming convention
This naming convention was meant to be for batch commands, but it grew
to include "commands that were helpful with managing Doom", but many of
these commands shouldn't be interactive in the first place!
2018-06-17 21:35:58 +02:00
Henrik Lissner
3188d67d6e Hide modeline in Man-mode 2018-06-17 14:22:29 +02:00
Henrik Lissner
b880175d79 Remove switch-frame hooks
They are too unreliable. Use after-focus-change-function if you
must (though, that's an latest-Emacs-27-only feature atm).
2018-06-16 21:40:46 +02:00
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
dd9f8d47af Fix infinite recursion in buffer switch hooks
Caused by advice functions trying to manipulate non-existent buffers
that were intended to be created after switching to them.
2018-06-11 00:39:55 +02:00
Henrik Lissner
d4869228f5 Inhibit recursive switch-hooks in sub-hooks too 2018-06-10 17:28:17 +02:00
Henrik Lissner
14890376b1 Propagate buffer errors up the call stack
Delegates set-buffer(nil) errors (when switch hooks are called with an
invalid or dead buffer) to the caller to handle.

Fixes #668, #674
2018-06-10 17:28:17 +02:00
Henrik Lissner
ab98020295 Optimize buffer normalization in switch hooks
get-buffer is faster than window-normalize-buffer-to-switch-to.
2018-06-08 13:08:37 +02:00
Henrik Lissner
b207c4040b Minor, general refactor 2018-06-07 02:51:46 +02:00
Henrik Lissner
ef9d8fb2e8 Don't trigger whitespace-mode if already on
Normally doom|show-whitespace-maybe turns on whitespace-mode with a
subset of its features when indent-tabs-mode was different in that
buffer versus it's global default. e.g. If your default was spaces and
you opened a file with tabs.

This is to make it easier to notice whitespace style discrepancies.

However, it have side effects if whitespace-mode/global-whitespace-mode
was already on.
2018-06-07 02:51:45 +02:00
Henrik Lissner
fcb5284393 Update switch-buffer hooks' docstrings 2018-06-07 02:51:45 +02:00
Henrik Lissner
b4e6022c82 Fix buffer/window/frame hooks not being triggered
In certain edge cases, the buffer/window/frame switch would not make the
new buffer/window/frame current, which is what the after switch hooks
should reasonably expect, causing some shenanigans.

For example, persp wouldn't register magit buffers because
`doom-after-switch-buffer-hook` was run in the context of the previous
buffer.
2018-06-07 02:51:45 +02:00
Henrik Lissner
fdb95d9ee6 Minor optimization of doom*switch-buffer-hooks 2018-06-04 21:17:49 +02:00
Henrik Lissner
e5a4415d58 General, minor reformatting/refactor 2018-06-02 13:58:04 +02:00
Henrik Lissner
36c36ca271 Optimize switch buffer/window hooks
Significantly reduces nested triggering of these hooks.
2018-06-01 16:40:39 +02:00
Henrik Lissner
947fe345c3 Minor, general refactor
In some contexts, map-put is superior to add-to-list.
2018-05-29 15:34:13 +02:00
Henrik Lissner
456dc62051 Fix compile-time void-function errors from modeline 2018-05-29 15:32:36 +02:00
Henrik Lissner
ed5e8849cc Fix void-variable fundamental-mode error from unquoted symbol 2018-05-28 15:50:11 +02:00
Henrik Lissner
376adde0d8 Optimize mode-line segments that are just variables 2018-05-27 22:31:08 +02:00
Henrik Lissner
f3c7dac997 Don't protect visible buffers that start with an asterix 2018-05-26 23:25:57 +02:00
Henrik Lissner
1aec48a848 The *real* fix for whitespace-mode interfering with the mu4e sidebar #607 2018-05-26 03:09:53 +02:00
Henrik Lissner
6a140209b8 Optimize Doom core package configs 2018-05-24 23:41:40 +02:00
Henrik Lissner
0b48575c14 Remove def-hydra! macro alias
Causes byte-compilation issues and the alias is unnecessary.
2018-05-24 22:03:19 +02:00
Henrik Lissner
dea7c10771 Don't do naive path concatenation for private custom-theme-directory 2018-05-24 21:20:50 +02:00
Henrik Lissner
1369c51000 Replace :defer HOOK/FN with :after-call keyword 2018-05-21 01:38:17 +02:00
Henrik Lissner
da5c7d27cf Use correct init hook (doom-post-init-hook) 2018-05-20 12:18:48 +02:00
Henrik Lissner
f16aa539c7 Fix window is not a live frame error #596 2018-05-18 22:06:10 +02:00
Henrik Lissner
cea750fc55 Rename doom|ansi-color-apply => doom|compilation-ansi-color-apply 2018-05-17 17:29:23 +02:00
Henrik Lissner
b01893bef2 Disable whitespace-mode in childframes 2018-05-17 17:29:07 +02:00
Henrik Lissner
51cc1e8908 No fringes in minibuffer or which-key buffers 2018-05-17 17:28:44 +02:00
Henrik Lissner
02e4c15b8e Move avy/ace-link from core-editor to core-ui 2018-05-17 15:29:29 +02:00
Henrik Lissner
3853fdbf8d Fix doom|protect-visible-buffers protecting temporary buffers 2018-05-17 15:16:28 +02:00
Henrik Lissner
49d431ee4e Trigger switch-buffer hooks on pop-to-buffer 2018-05-17 12:11:34 +02:00
Henrik Lissner
4fba57e954 Fix trapped-in-prompt cursor issue in minibuffer 2018-05-17 12:11:19 +02:00
Henrik Lissner
c36e127ec5 Rethink core package deferral hooks
Ensure they are available exactly when they can be useful, but no
sooner.
2018-05-15 21:49:51 +02:00
Henrik Lissner
94f9e43f25 Rewrite :defer semantics
:defer now supports a hook, a cons cell with (SYMBOL . INTEGER) where
SYMBOL is a hook and INTEGER is a number of idle seconds before the
package is autoloaded, or just the integer (as per the default behavior
of :defer).

Also fixes an issue where switch-buffer-deffered packages (like
smartparens) wouldn't load.
2018-05-15 10:54:45 +02:00
Henrik Lissner
bb88411cc9 General minor refactor & docstring fixes 2018-05-14 20:55:55 +02:00
Henrik Lissner
bec79a3d4c Major refactor of Doom bootstrap process
+ New `input` and `buffer` support for :defer in def-package! can now
  defer packages until the first command invoked after startup or first
  interactive buffer switch, respectively
+ Exploit these new :defer techniques to lazy-load many core packages,
  netting Doom a 20-30% decrease in startup time
+ Various userland macros (like package!, def-package-hook!, packages!,
  and disable-packages!) will now throw an error if used incorrectly
  (i.e. outside of their intended files; e.g. package! should be used in
  packages.el files)
+ Removed support for multiple/nested doom! calls. There should only be
  THE ONE in ~/.doom.d/init.el (or ~/.config/doom/init.el)
+ Fix an issue where load-path and auto-mode-list modifications would
  not persist because doom-packages-file was cached too late.
+ Added package-activated-list to cached variables in
  doom-packages-file, thus we no longer need custom-file.
+ Load Doom core files from doom-initialize. Now doom-initialize can be
  called from state-dependent non-interactive functions, instead of
  reloading core/core.el, which was clumsy
+ Removed the doom-post-init-hook hook. There was no reason for it to
  exist when doom-init-hook can simply be appended to
2018-05-14 20:37:13 +02:00
Henrik Lissner
eb5fd0aa53 run-hook-with-args => run-hooks, in custom hooks 2018-05-14 13:05:03 +02:00
Henrik Lissner
4603a4e113 Change doom-theme on load-theme 2018-05-14 13:05:03 +02:00
Henrik Lissner
0bd88b8414 Add restart-emacs package & commands 2018-05-14 13:05:03 +02:00
Henrik Lissner
2373429e76 inhibit-compacting-font-caches = t
Performance at the cost of some space efficiency
2018-05-14 13:05:03 +02:00
Henrik Lissner
9b1385b725 core-ui: general refactor/reformatting 2018-05-11 10:00:23 +02:00