Skip to content
This repository has been archived by the owner on Apr 16, 2024. It is now read-only.

Feature: restructure modules and config #277

Merged

Commits on Dec 31, 2021

  1. 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.
    LuigiPiucco committed Dec 31, 2021
    Configuration menu
    Copy the full SHA
    9c6bcde View commit details
    Browse the repository at this point in the history
  2. 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.
    LuigiPiucco committed Dec 31, 2021
    Configuration menu
    Copy the full SHA
    a2792d9 View commit details
    Browse the repository at this point in the history
  3. 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).
    LuigiPiucco committed Dec 31, 2021
    Configuration menu
    Copy the full SHA
    b38659b View commit details
    Browse the repository at this point in the history
  4. 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.
    LuigiPiucco committed Dec 31, 2021
    Configuration menu
    Copy the full SHA
    d1f7604 View commit details
    Browse the repository at this point in the history

Commits on Jan 15, 2022

  1. fix(lang): run config.lua on FileType

    Previously ran on BufNewFile,BufRead.
    LuigiPiucco committed Jan 15, 2022
    Configuration menu
    Copy the full SHA
    7682dab View commit details
    Browse the repository at this point in the history
  2. fix(telescope): Fix config breaking typo

    connorgmeean authored and LuigiPiucco committed Jan 15, 2022
    Configuration menu
    Copy the full SHA
    1b9f807 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    512b12d View commit details
    Browse the repository at this point in the history
  4. fix(core): Missing nvim-web-devicons now installed by default.

    connorgmeean authored and LuigiPiucco committed Jan 15, 2022
    Configuration menu
    Copy the full SHA
    f6b035b View commit details
    Browse the repository at this point in the history
  5. fix(lsp): Fixed gd not jumping to definition.

    connorgmeean authored and LuigiPiucco committed Jan 15, 2022
    Configuration menu
    Copy the full SHA
    fd07891 View commit details
    Browse the repository at this point in the history

Commits on Jan 16, 2022

  1. feat(modules): Replace kommentary with comment

    Fixes issues with the kommentary module and provides new behaviour such
    as `gcA` to add comment to end of line.
    connorgmeean authored and LuigiPiucco committed Jan 16, 2022
    Configuration menu
    Copy the full SHA
    554e849 View commit details
    Browse the repository at this point in the history
  2. fix(core): Fixed broken treesitter highlights

    connorgmeean authored and LuigiPiucco committed Jan 16, 2022
    Configuration menu
    Copy the full SHA
    3e68213 View commit details
    Browse the repository at this point in the history
  3. feat(modules): Add annotations module.

    This replaces broken `nvim-tree-docs`.
    connorgmeean authored and LuigiPiucco committed Jan 16, 2022
    Configuration menu
    Copy the full SHA
    4307ada View commit details
    Browse the repository at this point in the history
  4. fix(modules): conditional inter-module depends

    Previously, some modules would cause packer errors by depending on
    packages of disabled modules. This fixes that behavior.
    LuigiPiucco committed Jan 16, 2022
    Configuration menu
    Copy the full SHA
    85defcf View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    c66490f View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    1fdbe66 View commit details
    Browse the repository at this point in the history
  7. 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.
    LuigiPiucco committed Jan 16, 2022
    Configuration menu
    Copy the full SHA
    a3c8d68 View commit details
    Browse the repository at this point in the history

Commits on Jan 20, 2022

  1. Configuration menu
    Copy the full SHA
    2583ce3 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    26d4d95 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    809da0c View commit details
    Browse the repository at this point in the history
  4. fix(reloader): Don't require on global scope

    This is sometimes allowed, but here it would try and get things that
    weren't initialized.
    LuigiPiucco committed Jan 20, 2022
    Configuration menu
    Copy the full SHA
    8234e5c View commit details
    Browse the repository at this point in the history