Also adds doom|disable-delete-trailing-whitespace hook, which can be
used to disable this behavior on a per-buffer basis. If you want to turn
off this global behavior:
(remove-hook 'write-file-functions #'delete-trailing-whitespace)
global-command-log-mode isn't autoloaded, but
clm/toggle-command-log-buffer is, and if command-log-mode-is-global is
set, it is equivalent to global-command-log-mode.
Inspired by #786: `:filter-return' expects a function to be given. If neither
"zstd" or "gzip" are found on the executable path, then it gets given nil
instead, which results in sadness when trying to save files.
Persistent undo history is great. I'm hoping that, with
undo-tree-enable-undo-in-region disabled, we can enable this feature
again safely.
Time will tell.
This restores the correct value of noninteractive while core libs are
loading, so packages like recentf can avoid initializing when running
emacs non interactively (thus polluting output or possibly causing
errors).
+ doom-before-switch-buffer-hook => doom-exit-buffer-hook
+ doom-before-switch-window-hook => doom-exit-window-hook
+ doom-after-switch-buffer-hook => doom-enter-buffer-hook
+ doom-after-switch-window-hook => doom-enter-window-hook
Shorter, easier-to-type names that better describe their intended
purpose.
The old names are still usable, but deprecated.
Fixes quirky backspace and autoskipping behavior with html tags or
closing delimtiers unpredictably. These might be more useful to non-evil
users, but more testing is required.
Indirectly fixes#712
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
Editorconfig is given precedence. If it successfully sets an
indent_style or indent_size for the current buffer, automatic
indentation detection will be disabled.
: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.
+ 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
Let whitespace dynamically set `whitespace-line-column` depending on the current
state of the variable `fill-column`. Changing the value to `nil` does exactly that.
+ 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
Phases out dependence on the doom-kill-buffer workflow, which ensured
the user would always land on a real buffer (or the fallback buffer)
after killing a buffer. This required all quit-window, kill-this-buffer
and various buffer-killing commands be advised or remapped. There was no
need, kill-buffer-query-functions is better.
Also introduces a new hook: doom-init-theme-hook. doom-init-ui-hook
still exists, but is used for UI initialization (surprise), while theme
hooks should be moved over.
+ Parts of my smartparens config that were personal preference have been
moved to my private module.
+ The css-mode config was redundant and was removed
+ Moved lang-specific config to their respective modules
+ Markdown config was redundant with native electric support, and thus
removed.
set! used to aggressively evaluate its arguments (at expansion-time),
even if placed inside an after! block. This causes unavoidable errors if
those arguments use functions/variables that don't exist yet.
Fixes#112
Editorconfig in Lisp enforces lisp-indent-offset too strictly, ruining
its adaptive indentation. We don't want to disable it complete in those
modes however. In all other respects (controlling spaces vs tabs,
charset, max_line_length, etc) editorconfig is great.
+ 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).
+ 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.