Makes it easier to change company-backends retrospectively (with a hook
or setq-hook!). Also simplifies how backend defaults are stored (no more
of this :derived and :exact business).
Also updates unit tests.
This provides an alternative backend for filtering and sorting ivy
searches. Uses prescient instead of flx for fuzzy completion when both
+prescient and +fuzzy are selected.
:feature was a "catch-all" category. Many of its modules fit better in
other categories, so they've been moved:
- feature/debugger -> tools/debugger
- feature/evil -> editor/evil
- feature/eval -> tools/eval
- feature/lookup -> tools/lookup
- feature/snippets -> editor/snippets
- feature/file-templates -> editor/file-templates
- feature/workspaces -> ui/workspaces
More potential changes in the future:
- A new :term category for terminal emulation modules (eshell, term and
vterm).
- A new :os category for modules dedicated to os-specific functionality.
The :tools macos module would fit here, but so would modules for nixos
and arch.
- A new :services category for web-service integration, like wakatime,
twitter, elfeed, gist and pastebin services.
company-active-map and company-search-map were losing to global evil
state keymaps, causing an odd issue with the insert keybind for C-j was
overriding C-j (company-select-next) when company was active and
completing.
+ Added +smartparens flag to config/default for default smartparens
config.
+ Fixed +tng support for completion/company.
+ Removed super keybinds (for all but MacOS)
+ Moved "keybind fixes" to config/default/config.el (these should be
universally available).
+ Replaced both +default-repeat-forward-key and +default-repeat-backward-key
with +default-repeat-keys. If this variable is nil, the universal
repeat motions won't be bound.
Completion rarely works in the middle of (or at the beginning of) a
symbol, so we insert a space in front of the cursor in those cases and
then invoke completion.
Company backends are now built from an alist (+company-backend-alist),
which can be manipulated through set-company-backend!. Backends can now
be set to all children of a parent mode (text-mode, prog-mode, etc),
like so:
(set-company-backend! :derived 'text-mode 'company-dabbrev)
or only for an exact major-mode:
(set-company-backend! 'markdown-mode 'company-dabbrev-code)
Backends cascade. So combining the two examples above will cause
company-backends in a markdown-buffer (which is derived from text-mode)
to be (company-dabbrev-code company-dabbrev).
+ It wasn't preserving insertion order of multiple backends
+ It failed when BACKENDS = nil (supposed to unset mode backends)
+ Use eq/equal as a test-fn conditionally (glorious, glorious premature
optimization)
+ :popup -> set-popup-rule!
+ :popups -> set-popup-rules!
+ :company-backend -> set-company-backend!
+ :evil-state -> set-evil-initial-state!
I am slowly phasing out the setting system (def-setting! and set!),
starting with these.
What are autodefs? These are functions that are always defined, whether
or not their respective modules are enabled. However, when their modules
are disabled, they are replaced with macros that no-op and don't
waste time evaluating their arguments.
The old set! function will still work, for a while.