-
-
Notifications
You must be signed in to change notification settings - Fork 107
Feature: restructure modules and config #277
Feature: restructure modules and config #277
Commits on Dec 31, 2021
-
feat(modules): make modules very granular
These changes have been discussed in doom-neovim#233. As a side note, I ran stylua and luacheck over the repo. * From everyone's perpective - The module structure has been flattened out, removing the category grouping. Beyond less iteration scopes, this may help with, in the future, allowing the user to write and enable custom modules in $DOOMDIR. * From the user's perpective - `doom_config.lua` works via overrides now, it can change defaults on the global `doom` before everything gets actually configured. - `doom_modules.lua` just returns the actual thing it's supposed to, without {return value}.source. More on that next. - Instead of each config file returning a source key with its file location, the handlers for each config file actively search for them. This is described in the respective files inside `lua/doom/core/config`, but it's basicaly a check for two special paths falling back to runtimepath. - `doom_userplugins.lua` is removed in favor of having its functionality in `doom_config.lua`. To add a standalone package, add its packer spec to `doom.packages` (this is a map-like table of package names to packer specs). - To override the spec of a module package, change the keys in `doom.packages[package_name_without_author]`. Special attrs: `config` is run after the built-in config. - To change settings and behavior, override keys in `doom[module]`, or just `doom.*` for some core features. - To add standalone bindings, add them to `doom.binds`. This is passed to nest along with the modules' binds. `doom.binds` overrides anything you don't like in modules, you can safely replace the bind. - To add standalone autocmds, add them to `doom.autocmds[augroup_name]`. The structure is as passed to `utils.create_augroups`, so: ```lua doom.autocmds[group_name] = { { event1, pattern1, cmd1 }, ... } ``` - You shouldn't override any tables, like `doom.autocmds` or `doom.packages`, only the leaves, else you remove all that is already there. We could use metatables to avoid this in the future. - The `config.nvim` table is no longer used, most of its functionality is spread elsewhere, like autocmds. For variables and options, just use vim.opt.*, vim.g.* etc. in `doom_config.lua` - Settings can also be appended to in `doom_config.lua`, because defaults are prepopulated. * From a maintainer's perpective - Most things are grouped under the `doom` global, which is populated and overriden early in `init.lua`. The exception is enabled modules, which you still need to require `doom.core.config.modules` to get. However, do so sparingly, and only if you truly mean to iterate over enabled modules disregarding user overrides (they may have removed a particular package or reset binds). - Modules are defined in the following folder structure inside `lua/doom/modules`: `<module>/{init.lua,packages.lua,binds.lua,autocmds.lua}`. init.lua and packages.lua are required, even if empty. - `init.lua` returns: defaults under a `defaults` key; config functions under `packer_config[package_name]`. It can access the doom global only inside the configs. - `packages.lua` returns: a map of package names to package specs, with no `config` or `disable` keys present. Most things should be lazy-loaded, preferably with the `cmd` and `module` keys. It cannot access the doom global. - `autocmds.lua` returns: a list of autocmds to be applied under the group `doom_{module}`. It can use the `doom` global to add things conditionally. - `binds.lua` returns: the keyconfig to be passed to nest. It can use the `doom` global to add things conditionally. What's left: - Implement lsp wrapping. - Document the individual modules. - Write a migration script.
Configuration menu - View commit details
-
Copy full SHA for 9c6bcde - Browse repository at this point
Copy the full SHA 9c6bcdeView commit details -
feat(modules): lsp wrapping for new architecture
This adds wrapping of lsp for one language: lua. It adds two modules, `auto_install` and `lua`. The former toggles auto installation, and is sort of a marker module. Beyond installing and configuring nvim-lsp-installer and DAPInstall.nvim, it doesn't really do anything. It's purpose is to be checked on the lua module which will use the installers if it is enabled. Otherwise just falls back to $PATH. Since I'm on NixOS, I can only test the non-auto installation, but it seems to be downloading properly for the auto version. The lua module also installs additional packages, namely lua-dev.nvim, which used to be part of the lsp module. It could add keybinds, but I couldn't think of any. It has a special autocommand that `dofile`s the config.lua, which actually sets up lsp (and possibly dap) lazily and only after the first lua file is opened. This commit is meant as a template/prototype to other language wrappings.
Configuration menu - View commit details
-
Copy full SHA for a2792d9 - Browse repository at this point
Copy the full SHA a2792d9View commit details -
fix(core): port reload and log to new architecture
Also remove the built-in modules in favor of putting them inside utils (reloader and async) or implementing them later with the new module structure (others).
Configuration menu - View commit details
-
Copy full SHA for b38659b - Browse repository at this point
Copy the full SHA b38659bView commit details -
feat(modules): better autocmd syntax
Now supports lua functions. The ideas come from @caligian and his repo, though modified to use a unique index instead of requiring a name.
Configuration menu - View commit details
-
Copy full SHA for d1f7604 - Browse repository at this point
Copy the full SHA d1f7604View commit details
Commits on Jan 15, 2022
-
fix(lang): run config.lua on FileType
Previously ran on BufNewFile,BufRead.
Configuration menu - View commit details
-
Copy full SHA for 7682dab - Browse repository at this point
Copy the full SHA 7682dabView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1b9f807 - Browse repository at this point
Copy the full SHA 1b9f807View commit details -
Configuration menu - View commit details
-
Copy full SHA for 512b12d - Browse repository at this point
Copy the full SHA 512b12dView commit details -
Configuration menu - View commit details
-
Copy full SHA for f6b035b - Browse repository at this point
Copy the full SHA f6b035bView commit details -
Configuration menu - View commit details
-
Copy full SHA for fd07891 - Browse repository at this point
Copy the full SHA fd07891View commit details
Commits on Jan 16, 2022
-
feat(modules): Replace
kommentary
withcomment
Fixes issues with the kommentary module and provides new behaviour such as `gcA` to add comment to end of line.
Configuration menu - View commit details
-
Copy full SHA for 554e849 - Browse repository at this point
Copy the full SHA 554e849View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3e68213 - Browse repository at this point
Copy the full SHA 3e68213View commit details -
feat(modules): Add
annotations
module.This replaces broken `nvim-tree-docs`.
Configuration menu - View commit details
-
Copy full SHA for 4307ada - Browse repository at this point
Copy the full SHA 4307adaView commit details -
fix(modules): conditional inter-module depends
Previously, some modules would cause packer errors by depending on packages of disabled modules. This fixes that behavior.
Configuration menu - View commit details
-
Copy full SHA for 85defcf - Browse repository at this point
Copy the full SHA 85defcfView commit details -
Configuration menu - View commit details
-
Copy full SHA for c66490f - Browse repository at this point
Copy the full SHA c66490fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1fdbe66 - Browse repository at this point
Copy the full SHA 1fdbe66View commit details -
fix(modules): Use @connorgmeehan's nest.nvim
It is more up to date and well maintained than my own, plus includes what I had implemented.
Configuration menu - View commit details
-
Copy full SHA for a3c8d68 - Browse repository at this point
Copy the full SHA a3c8d68View commit details
Commits on Jan 20, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 2583ce3 - Browse repository at this point
Copy the full SHA 2583ce3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 26d4d95 - Browse repository at this point
Copy the full SHA 26d4d95View commit details -
Configuration menu - View commit details
-
Copy full SHA for 809da0c - Browse repository at this point
Copy the full SHA 809da0cView commit details -
fix(reloader): Don't require on global scope
This is sometimes allowed, but here it would try and get things that weren't initialized.
Configuration menu - View commit details
-
Copy full SHA for 8234e5c - Browse repository at this point
Copy the full SHA 8234e5cView commit details