diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index d85c28da..436a68ec 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -16,7 +16,7 @@ If you have any questions regarding those files, feel free to open an issue or [
## Contributing
-The contribution process is mostly documented in the [pull request template](pull_request_template.md). You will find a checklist of items to complete before submitting a pull request. Please make sure you complete it before submitting a pull request. If you are unsure about any of the items, please ask.
+The contribution process is mostly documented in the [pull request template](.github/pull_request_template.md). You will find a checklist of items to complete before submitting a pull request. Please make sure you complete it before submitting a pull request. If you are unsure about any of the items, please ask.
### Guidelines
diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
new file mode 100644
index 00000000..ca65c8b2
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
@@ -0,0 +1,39 @@
+# Description
+
+A clear and concise description of the aim of your Pull Request.
+
+**If your pull request aims to fix an open issue or a present bug, please link the relevant issue below. If not, please remove this section**
+Fixes #(issue)
+
+## Type of change
+
+Please delete any options that are not relevant.
+
+- Bug fix (non-breaking change which fixes an issue)
+- New feature (non-breaking change which adds functionality)
+- Breaking change (fix or feature that would cause existing functionality to not work as expected)
+- Translation/Language update
+- Docs
+- Other
+
+## Checklist
+
+Please try to check at least a majority of the checklist before opening your pull request. Exceptions to this will be reviewed on a case by case basis.
+
+- [ ] My code follows the style and contributing guidelines of this project.
+- [ ] I ran Alejandra to format my code (`nix fmt`).
+- [ ] I have performed a self-review of my own code and tested it.
+- [ ] I have commented my code, particularly in hard-to-understand areas.
+- [ ] My changes generate no new warnings.
+- [ ] This change requires a documentation update.
+- [ ] I have updated the documentation accordingly.
+
+## Screenshots & Logs
+
+You are kindly requested to attach screenshots of your changes in actions and preferably your build/run logs for all available packages. If you are not sure how to do this, you can refer to the [documentation](https://notashelf.github.io/neovim-flake/).
+
+**Please do not use any external image service. Instead, just paste in or drag and drop the image here, and it will be uploaded automatically.**
+
+```console
+# Paste your logs here
+```
diff --git a/.github/README.md b/.github/README.md
index 531d062b..06c9eb7d 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -33,9 +33,10 @@
@@ -43,7 +44,6 @@
-[Features]: #features
[Get Started]: #get-started
[Documentation]: #documentation
[Help]: #help
@@ -51,156 +51,119 @@
[FAQ]: #faq
[Credits]: #credits
-**[
Features
][Features]**
-**[
Get Started
][Get Started]**
-**[
Documentation
][Documentation]**
-**[
Help
][Help]**
-**[
Contribute
][Contribute]**
-**[
FAQ
][Faq]** **[
Credits
][Credits]**
+**[
Get Started
][Get Started]**
+**[
Documentation
][Documentation]**
+**[
Help
][Help]**
+**[
Contribute
][Contribute]**
+**[
FAQ
][Faq]**
+**[
Credits
][Credits]**
---
-## Features
-
-- **Reproducible**: Your configuration will behave the same _anywhere_. No
- surprises, promise!
-- **Portable**: nvf depends _solely_ on your Nix store, and nothing else. No
- more global binaries! Works on all platforms, without hassle.
-- **Customizable**: There are _almost no defaults_ to annoy you. nvf is fully
- customizable through the Nix module system.
-- **Well-documented**: Documentation is priority. You will _never_ face
- undocumented, obscure behaviour.
-- **Idiomatic**: nvf does things ✨ _the right way_ ✨ - the codebase is, and
- will, remain maintainable for myself and any contributors.
-
## Get Started
-[nvf manual]: https://notashelf.github.io/nvf/
-[issue tracker]: https://github.com/NotAShelf/nvf/issues
+### Using `nix` CLI
-If you are not sold on the concepts of **nvf**, and would like to try out the
-default configuration before even _thinking about_ installing it, you may run
-the following in order to take **nvf** out for a spin.
+If you would like to try out the configuration before even thinking about
+installing it, you can run the following command
-```bash
-# Run the default package
+```console
nix run github:notashelf/nvf
```
-This will get you a feel for the base configuration and UI design. Though, none
-of the configuration options are final as **nvf** is designed to be modular and
-configurable.
+This will get you a feel for the base configuration and UI design.
+The flake exposes `#nix` as the default package, providing minimal
+language support and various utilities.You may also use `#nix`,
+`#tidal` or `#maximal` to get try out different configurations.
-> [!TIP]
-> The flake exposes `#nix` as the default package, providing minimal language
-> support and various utilities. You may also use the `#nix` or `#maximal`
-> packages provided by the this flake to get try out different configurations.
+It is as simple as changing the target output to get a different
+configuration. For example, to get a configuration with `tidal` support, run:
-It is as simple as changing the target output to get a different configuration.
-For example, to get a configuration with large language coverage, run:
-
-```bash
-# Run the maximal package
-nix run github:notashelf/nvf#maximal
+```console
+nix run github:notashelf/nvf#tidal
```
Similar instructions will apply for `nix profile install`. However, you are
recommended to instead use the module system as described in the manual.
-> [!NOTE]
-> The `maximal` configuration is quite large, and might take a while to build.
-> To get a feel for the configuration, use the default `nix` configuration.
-> Should you choose to try out the `maximal` configuration, using the binary
-> cache as described in the manual is _strongly_ recommended.
-
-If you are convinced, proceed to the next section to view the installation
-instructions.
+> [!NOTE]
+> The `maximal` configuration is _massive_ and will take a while to build.
+> To get a feel for the configuration, use the default `nix` or `tidal`
+> configurations. Should you choose to try out the `maximal` configuration,
+> using the binary cache as described in the manual is _strongly_ recommended.
## Documentation
-The _recommended_ way of installing **nvf** is using either the NixOS or the
-Home-Manager module, though it is completely possible and no less supported to
-install **nvf** as a standalone package, or a flake output.
+See the [**nvf** Manual](https://notashelf.github.io/nvf/) for
+detailed installation guides, configurations, available options, release notes
+and more. Tips for installing userspace plugins is also contained in the
+documentation.
-See the rendered [nvf manual] for detailed and up-to-date installation guides,
-configurations, available options, release notes and more. Tips for installing
-userspace plugins is also contained in the documentation.
+If you want to dive right into trying **nvf** you can get a fully
+featured configuration with `nix` language support by running:
-> [!TIP]
-> While using NixOS or Home-Manager modules,
-> `programs.nvf.enableManpages = true;` will allow you to view option
-> documentation from the comfort of your terminal via `man 5 nvf`. The more you
-> know.
+```console
+nix run github:notashelf/nvf#nix
+```
-Please create an issue on the [issue tracker] if you find the documentation
-lacking or confusing. Any improvements to the documentation through pull
-requests are also welcome, and appreciated.
+[Issues]: https://github.com/NotAShelf/nvf/issues
+
+Please create an issue on the [issue tracker](issues) if you find
+the documentation lacking or confusing. I also appreciate any contributions
+to the documentation.
## Help
-You can create an issue on the [issue tracker] to ask questions or report bugs.
-I am not yet on spaces like matrix or IRC, so please use the issue tracker for
-now.
+You can create an issue on the [issue tracker](issues) to ask questions
+or report bugs. I am not yet on spaces like matrix or IRC, so please use the issue
+tracker for now.
## Contributing
I am always looking for new ways to help improve this flake. If you would like
to contribute, please read the [contributing guide](CONTRIBUTING.md) before
-submitting a pull request. You can also create an issue on the [issue tracker]
-before submitting a pull request if you would like to discuss a feature or bug
-fix.
+submitting a pull request. You can also create an issue on the
+[issue tracker](issues) before submitting a pull request if you would
+like to discuss a feature or bug fix.
## FAQ
-[appropriate issue template]: https://github.com/NotAShelf/nvf/issues/new/choose
-[list of branches]: https://github.com/NotAShelf/nvf/branches
-[list of open pull requests]: https://github.com/NotAShelf/nvf/pulls
-
-**Q**: What platforms are supported?
-
**A**: nvf actively supports Linux and Darwin platforms using standalone
-Nix, NixOS or Home-Manager. Please take a look at the
-
**Q**: Can you add _X_?
-
**A**: Maybe! It is not one of our goals to support each and every Neovim
-plugin, however, I am always open to new modules and plugin setup additions to
-**nvf**. Use the [appropriate issue template] and I will consider a module
-addition. As mentioned before, PRs adding new features are also welcome.
+
+**A**: Maybe! It is not one of our goals to support each and every Neovim
+plugin, however, I am always open to new modules and plugin setup additions
+to **nvf**. Use the [appropritate issue template](issues/new/choose) and I will
+consider a module addition.
**Q**: A plugin I need is not available in **nvf**. What to do?
-
**A**: **nvf** exposes several APIs for you to be able to add your own
-plugin configurations! Please see the documentation on how you may do this.
+
+**A**: **nvf** exposes several APIs for you to be able to add your own
+plugin configurations! Please see the documentation on how you may do
+this.
**Q**: Main branch is awfully silent, is the project dead?
-
**A**: No! Sometimes we branch out (e.g. `v0.6`) to avoid breaking
-userspace and work in a separate branch until we make sure the new additions are
-implemented in the most comfortable way possible for the end user. If you have
-not noticed any activity on the main branch, consider taking a look at the
-[list of branches] or the [list of open pull requests]. You may also consider
-_testing_ those release branches to get access to new features ahead of time and
-better prepare to breaking changes.
+
+**A**: No! Sometimes we branch out (e.g. v0.6) to avoid breaking userspace
+and work in a separate branch until we make sure the new additions are
+implemented in the most comfortable way available to the end user. If you have
+not noticed any activity on the main branch, consider taking a look at the [list
+of branches](https://github.com/NotAShelf/nvf/branches=) or the [list of open
+pull requests](https://github.com/NotAShelf/nvf)
## Credits
### Contributors
-Special, heart-felt thanks to
+Special thanks to
- [@fufexan](https://github.com/fufexan) - For the transition to flake-parts
-- [@FlafyDev](https://github.com/FlafyDev) - For getting the home-manager to
- work
-- [@n3oney](https://github.com/n3oney) - For making custom keybinds finally
- possible
-- [@horriblename](https://github.com/horriblename) - For actively implementing
- planned features and quality of life updates
+- [@FlafyDev](https://github.com/FlafyDev) - For getting the home-manager to work
+- [@n3oney](https://github.com/n3oney) - For making custom keybinds finally possible
+- [@horriblename](https://github.com/horriblename) - For actively implementing planned features and quality of life updates
- [@Yavko](https://github.com/Yavko) - For the amazing **nvf** logo
-- [@FrothyMarrow](https://github.com/FrothyMarrow) - For seeing mistakes that I
- could not
-- [@Diniamo](https://github.com/Diniamo) - For actively submitting PRs, pull
- requests and overall assistence
-- [@Gerg-l](https://github.com/gerg-l) - For the modern Neovim wrapper, mnw and
- occasional code improvements
+- [@FrothyMarrow](https://github.com/FrothyMarrow) - For seeing mistakes that I could not
and everyone who has submitted issues or pull requests!
@@ -209,18 +172,10 @@ and everyone who has submitted issues or pull requests!
This configuration borrows from and is based on a few other configurations,
including:
-- [@jordanisaacs's](https://github.com/jordanisaacs)
- [neovim-flake](https://github.com/jordanisaacs/neovim-flake) that this flake
- is originally based on.
-- [@sioodmy's](https://github.com/sioodmy)
- [dotfiles](https://github.com/sioodmy/dotfiles) that inspired the design
- choices.
-- [@wiltaylor's](https://github.com/wiltaylor)
- [neovim-flake](https://github.com/wiltaylor/neovim-flake) for plugin and
- design ideas.
-- [@gvolpe's](https://github.com/gvolpe)
- [neovim-flake](https://github.com/gvolpe/neovim-flake) for plugin, design and
- nix concepts.
+- [@jordanisaacs's](https://github.com/jordanisaacs) [neovim-flake](https://github.com/jordanisaacs/neovim-flake) that this flake is originally based on.
+- [@sioodmy's](https://github.com/sioodmy) [dotfiles](https://github.com/sioodmy/dotfiles) that inspired the design choices.
+- [@wiltaylor's](https://github.com/wiltaylor) [neovim-flake](https://github.com/wiltaylor/neovim-flake) for plugin and design ideas.
+- [@gvolpe's](https://github.com/gvolpe) [neovim-flake](https://github.com/gvolpe/neovim-flake) for plugin, design and nix concepts.
I am grateful for their previous work and inspiration, and I wholeheartedly
recommend checking their work out.
@@ -228,14 +183,11 @@ recommend checking their work out.
## License
-Following the license of the
-[original neovim-flake](https://github.com/jordanisaacs/neovim-flake), **nvf**
-has been made available under the [**MIT License**](LICENSE). However, all
-assets and documentation are published under the
+Following the license of the [original neovim-flake](https://github.com/jordanisaacs/neovim-flake),
+**nvf** has been made available under the [**MIT License**](LICENSE). However, all assets
+and documentation are published under the
[**CC BY License**](https://github.com/NotAShelf/nvf/blob/main/.github/assets/LICENSE).
-Yes, this includes the logo work too. Stop taking artwork that is not yours!
-
---
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
deleted file mode 100644
index 7768d36e..00000000
--- a/.github/pull_request_template.md
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-## Sanity Checking
-
-
-
-[editorconfig]: https://editorconfig.org
-[changelog]: https://github.com/NotAShelf/nvf/tree/main/docs/release-notes
-
-- [ ] I have updated the [changelog] as per my changes.
-- [ ] I have tested, and self-reviewed my code.
-- Style and consistency
- - [ ] I ran **Alejandra** to format my code (`nix fmt`).
- - [ ] My code conforms to the [editorconfig] configuration of the project.
- - [ ] My changes are consistent with the rest of the codebase.
-- If new changes are particularly complex:
- - [ ] My code includes comments in particularly complex areas
- - [ ] I have added a section in the manual.
- - [ ] _(For breaking changes)_ I have included a migration guide.
-- Package(s) built:
- - [ ] `.#nix` (default package)
- - [ ] `.#maximal`
- - [ ] `.#docs-html`
-- Tested on platform(s)
- - [ ] `x86_64-linux`
- - [ ] `aarch64-linux`
- - [ ] `x86_64-darwin`
- - [ ] `aarch64-darwin`
-
-
-
----
-
-Add a :+1: [reaction] to [pull requests you find important].
-
-[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
-[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc
diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml
deleted file mode 100644
index 204dcba7..00000000
--- a/.github/workflows/cleanup.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: Cleanup
-on:
- workflow_dispatch:
- schedule:
- - cron: "0 4 1 * *" # 4AM on 1st of every month
- - cron: "0 4 15 * *" # 4AM on the 15th of every month
-jobs:
- branches:
- name: Cleanup old branches
- runs-on: ubuntu-latest
- steps:
- - name: "Checkout"
- uses: actions/checkout@v4
-
- - name: "Delete old branches"
- uses: beatlabs/delete-old-branches-action@v0.0.10
- with:
- repo_token: "${{ secrets.GITHUB_TOKEN }}"
- date: "1 months ago"
- dry_run: false
- delete_tags: false
- exclude_open_pr_branches: true
diff --git a/configuration.nix b/configuration.nix
index 832bf95c..08b0f9b6 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -19,7 +19,6 @@ isMaximal: {
lspsaga.enable = false;
trouble.enable = true;
lspSignature.enable = true;
- otter-nvim.enable = isMaximal;
lsplines.enable = isMaximal;
nvim-docs-view.enable = isMaximal;
};
@@ -51,11 +50,9 @@ isMaximal: {
css.enable = isMaximal;
sql.enable = isMaximal;
java.enable = isMaximal;
- kotlin.enable = isMaximal;
ts.enable = isMaximal;
svelte.enable = isMaximal;
go.enable = isMaximal;
- lua.enable = isMaximal;
elixir.enable = isMaximal;
zig.enable = isMaximal;
ocaml.enable = isMaximal;
@@ -70,7 +67,6 @@ isMaximal: {
lsp.server = "clangd";
};
- scala.enable = isMaximal;
rust = {
enable = isMaximal;
crates.enable = isMaximal;
@@ -108,10 +104,12 @@ isMaximal: {
transparent = false;
};
- autopairs.nvim-autopairs.enable = true;
+ autopairs.enable = true;
- autocomplete.nvim-cmp.enable = true;
- snippets.luasnip.enable = true;
+ autocomplete = {
+ enable = true;
+ type = "nvim-cmp";
+ };
filetree = {
nvimTree = {
@@ -157,7 +155,7 @@ isMaximal: {
};
utility = {
- ccc.enable = false;
+ ccc.enable = isMaximal;
vim-wakatime.enable = false;
icon-picker.enable = isMaximal;
surround.enable = isMaximal;
@@ -174,7 +172,6 @@ isMaximal: {
notes = {
obsidian.enable = false; # FIXME: neovim fails to build if obsidian is enabled
- neorg.enable = false;
orgmode.enable = false;
mind-nvim.enable = isMaximal;
todo-comments.enable = true;
diff --git a/docs/manual/configuring/dag-entries.md b/docs/manual/configuring/dag-entries.md
index 402cde66..d5afa9b6 100644
--- a/docs/manual/configuring/dag-entries.md
+++ b/docs/manual/configuring/dag-entries.md
@@ -5,19 +5,16 @@ can add code that relies on other code. However, if you don't know what the
entries are called, it's hard to do that, so here is a list of the internal
entries in nvf:
-## `vim.luaConfigRC` (top-level DAG) {#ch-vim-luaconfigrc}
+`vim.luaConfigRC` (top-level DAG):
1. (`luaConfigPre`) - not a part of the actual DAG, instead, it's simply
inserted before the rest of the DAG
2. `globalsScript` - used to set globals defined in `vim.globals`
3. `basic` - used to set basic configuration options
-4. `optionsScript` - used to set options defined in `vim.o`
-5. `theme` (this is simply placed before `pluginConfigs`, meaning that
- surrounding entries don't depend on it) - used to set up the theme, which has
- to be done before other plugins
-6. `pluginConfigs` - the result of the nested `vim.pluginRC` (internal option,
- see the [Custom Plugins](/index.xhtml#ch-custom-plugins) page for adding your
- own plugins) DAG, used to set up internal plugins
-7. `extraPluginConfigs` - the result of `vim.extraPlugins`, which is not a
+4. `theme` (this is simply placed before `pluginConfigs`, meaning that surrounding entries don't depend on it) - used to set up the theme, which has to be done before other plugins
+5. `pluginConfigs` - the result of the nested `vim.pluginRC` (internal option,
+ see the [Custom Plugins](/index.xhtml#ch-custom-plugins) page for adding your own
+ plugins) DAG, used to set up internal plugins
+6. `extraPluginConfigs` - the result of `vim.extraPlugins`, which is not a
direct DAG, but is converted to, and resolved as one internally
-8. `mappings` - the result of `vim.maps`
+7. `mappings` - the result of `vim.maps`
diff --git a/docs/manual/hacking/keybinds.md b/docs/manual/hacking/keybinds.md
index 63a05d64..f4a51499 100644
--- a/docs/manual/hacking/keybinds.md
+++ b/docs/manual/hacking/keybinds.md
@@ -7,26 +7,37 @@ section contains a general overview to how you may utilize said functions.
## Custom Key Mappings Support for a Plugin {#sec-custom-key-mappings}
-To set a mapping, you should define it in `vim.keymaps`.
+To set a mapping, you should define it in `vim.maps.<>`.
+The available modes are:
+
+- normal
+- insert
+- select
+- visual
+- terminal
+- normalVisualOp
+- visualOnly
+- operator
+- insertCommand
+- lang
+- command
An example, simple keybinding, can look like this:
```nix
{
- vim.keymaps = [
- {
- key = "wq";
- mode = ["n"];
+ vim.maps.normal = {
+ "wq" = {
action = ":wq";
silent = true;
desc = "Save file and quit";
- }
- ];
+ };
+ };
}
```
There are many settings available in the options. Please refer to the
-[documentation](https://notashelf.github.io/nvf/options.html#opt-vim.keymaps)
+[documentation](https://notashelf.github.io/nvf/options.html#opt-vim.maps.command._name_.action)
to see a list of them.
**nvf** provides a list of helper commands, so that you don't have to write the
diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md
index 7cbdbaae..7fd48768 100644
--- a/docs/release-notes/rl-0.7.md
+++ b/docs/release-notes/rl-0.7.md
@@ -26,32 +26,6 @@ making good use of its extensive Lua API. Additionally, Vimscript is slow and
brings unnecessary performance overhead while working with different
configuration formats.
-### `vim.maps` rewrite {#sec-vim-maps-rewrite}
-
-Instead of specifying map modes using submodules (eg.: `vim.maps.normal`), a new
-`vim.keymaps` submodule with support for a `mode` option has been introduced. It
-can be either a string, or a list of strings, where a string represents the
-short-name of the map mode(s), that the mapping should be set for. See
-`:help map-modes` for more information.
-
-For example:
-
-```nix
-vim.maps.normal."m" = { ... };
-```
-
-has to be replaced by
-
-```nix
-vim.keymaps = [
- {
- key = "m";
- mode = "n";
- }
- ...
-];
-```
-
### `vim.lsp.nvimCodeActionMenu` removed in favor of `vim.ui.fastaction` {#sec-nvim-code-action-menu-deprecation}
The nvim-code-action-menu plugin has been archived and broken for a long time,
@@ -93,9 +67,6 @@ everyone.
- Add dap-go for better dap configurations
- Make noice.nvim customizable
- Standardize border style options and add custom borders
-- Remove `vim.disableDefaultRuntimePaths` in wrapper options.
- - As nvf uses `$NVIM_APP_NAME` as of recent changes, we can safely assume any
- configuration in `$XDG_CONFIG_HOME/nvf` is intentional.
[rust-tools.nvim]: https://github.com/simrat39/rust-tools.nvim
[rustaceanvim]: https://github.com/mrcjkb/rustaceanvim
@@ -109,17 +80,13 @@ everyone.
[ocaml-lsp]: https://github.com/ocaml/ocaml-lsp
[new-file-template.nvim]: https://github.com/otavioschwanck/new-file-template.nvim
-[neo-tree.nvim]: https://github.com/nvim-neo-tree/neo-tree.nvim
- Add [ocaml-lsp] support
- Fix "Emac" typo
- Add [new-file-template.nvim] to automatically fill new file contents using
- templates
-
-- Make [neo-tree.nvim] display file icons properly by enabling
- `visuals.nvimWebDevicons`
+ templates.
[diniamo](https://github.com/diniamo):
@@ -153,29 +120,10 @@ everyone.
- Replace `vim.lsp.nvimCodeActionMenu` with `vim.ui.fastaction`, see the
breaking changes section above for more details
-- Add a `setupOpts` option to nvim-surround, which allows modifying options that
- aren't defined in nvf. Move the alternate nvim-surround keybinds to use
- `setupOpts`.
-
-- Remove `autopairs.type`, and rename `autopairs.enable` to
- `autopairs.nvim-autopairs.enable`. The new
- [](#opt-vim.autopairs.nvim-autopairs.enable) supports `setupOpts` format by
- default.
-
-- Refactor of `nvim-cmp` and completion related modules
- - Remove `autocomplete.type` in favor of per-plugin enable options such as
- [](#opt-vim.autocomplete.nvim-cmp.enable).
- - Deprecate legacy Vimsnip in favor of Luasnip, and integrate
- friendly-snippets for bundled snippets. [](#opt-vim.snippets.luasnip.enable)
- can be used to toggle Luasnip.
- - Add sorting function options for completion sources under
- [](#opt-vim.autocomplete.nvim-cmp.setupOpts.sorting.comparators)
-
[Neovim documentation on `vim.cmd`]: https://neovim.io/doc/user/lua.html#vim.cmd()
- Make Neovim's configuration file entirely Lua based. This comes with a few
breaking changes:
-
- `vim.configRC` has been removed. You will need to migrate your entries to
Neovim-compliant Lua code, and add them to `vim.luaConfigRC` instead.
Existing vimscript configurations may be preserved in `vim.cmd` functions.
@@ -184,8 +132,6 @@ everyone.
has been introduced for setting up internal plugins. See the "DAG entries in
nvf" manual page for more information.
-- Rewrite `vim.maps`, see the breaking changes section above.
-
[NotAShelf](https://github.com/notashelf):
[ts-error-translator.nvim]: https://github.com/dmmulroy/ts-error-translator.nvim
@@ -241,40 +187,12 @@ everyone.
- Add [python-lsp-server](https://github.com/python-lsp/python-lsp-server) as an
additional Python LSP server.
-- Add [](#opt-vim.options) to set `vim.o` values in in your nvf configuration
- without using additional Lua. See option documentation for more details.
-
-- Add [](#opt-vim.dashboard.dashboard-nvim.setupOpts) to allow user
- configuration for [dashboard.nvim](https://github.com/nvimdev/dashboard-nvim)
-
-- Update `lualine.nvim` input and add missing themes:
- - Adds `ayu`, `gruvbox_dark`, `iceberg`, `moonfly`, `onedark`,
- `powerline_dark` and `solarized_light` themes.
-
[ppenguin](https://github.com/ppenguin):
- Telescope:
- Fixed `project-nvim` command and keybinding
- Added default ikeybind/command for `Telescope resume` (`fr`)
-[Soliprem](https://github.com/Soliprem):
+[Soliprem](https://github.com/Soliprem)
- Add LSP and Treesitter support for R under `vim.languages.R`.
-- Add Otter support under `vim.lsp.otter` and an assert to prevent conflict with
- ccc
-- Add Neorg support under `vim.notes.neorg`
-- Add LSP, diagnostics, formatter and Treesitter support for Kotlin under
- `vim.languages.kotlin`
-- changed default keybinds for leap.nvim to avoid altering expected behavior
-
-[Bloxx12](https://github.com/Bloxx12)
-
-- Add support for [base16 theming](https://github.com/RRethy/base16-nvim) under
- `vim.theme`
-- Fix internal breakage in `elixir-tools` setup.
-
-[ksonj](https://github.com/ksonj):
-
-- Add LSP support for Scala via
- [nvim-metals](https://github.com/scalameta/nvim-metals)
-
diff --git a/flake.lock b/flake.lock
index c07fadc9..a67a79af 100644
--- a/flake.lock
+++ b/flake.lock
@@ -172,22 +172,6 @@
"type": "github"
}
},
- "plugin-base16": {
- "flake": false,
- "locked": {
- "lastModified": 1716483968,
- "narHash": "sha256-GRF/6AobXHamw8TZ3FjL7SI6ulcpwpcohsIuZeCSh2A=",
- "owner": "rrethy",
- "repo": "base16-nvim",
- "rev": "6ac181b5733518040a33017dde654059cd771b7c",
- "type": "github"
- },
- "original": {
- "owner": "rrethy",
- "repo": "base16-nvim",
- "type": "github"
- }
- },
"plugin-bufdelete-nvim": {
"flake": false,
"locked": {
@@ -207,11 +191,11 @@
"plugin-catppuccin": {
"flake": false,
"locked": {
- "lastModified": 1728131011,
- "narHash": "sha256-j6F078taxuGzr3jngrc+Pc5I1kDdxTLMETgq6Xn4w/4=",
+ "lastModified": 1716704960,
+ "narHash": "sha256-UDPS+1o8FQGkfqiG4GX4DNUI2pU5hIvagmfnWTKDb44=",
"owner": "catppuccin",
"repo": "nvim",
- "rev": "7be452ee067978cdc8b2c5f3411f0c71ffa612b9",
+ "rev": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe",
"type": "github"
},
"original": {
@@ -316,22 +300,6 @@
"type": "github"
}
},
- "plugin-cmp-luasnip": {
- "flake": false,
- "locked": {
- "lastModified": 1696878902,
- "narHash": "sha256-nUJJl2zyK/oSwz5RzI9j3gf9zpDfCImCYbPbVsyXgz8=",
- "owner": "saadparwaiz1",
- "repo": "cmp_luasnip",
- "rev": "05a9ab28b53f71d1aece421ef32fee2cb857a843",
- "type": "github"
- },
- "original": {
- "owner": "saadparwaiz1",
- "repo": "cmp_luasnip",
- "type": "github"
- }
- },
"plugin-cmp-nvim-lsp": {
"flake": false,
"locked": {
@@ -380,6 +348,22 @@
"type": "github"
}
},
+ "plugin-cmp-vsnip": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1669100283,
+ "narHash": "sha256-2mkN03noOr5vBvRbSb35xZKorSH+8savQNZtgM9+QcM=",
+ "owner": "hrsh7th",
+ "repo": "cmp-vsnip",
+ "rev": "989a8a73c44e926199bfd05fa7a516d51f2d2752",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hrsh7th",
+ "repo": "cmp-vsnip",
+ "type": "github"
+ }
+ },
"plugin-codewindow-nvim": {
"flake": false,
"locked": {
@@ -604,22 +588,6 @@
"type": "github"
}
},
- "plugin-friendly-snippets": {
- "flake": false,
- "locked": {
- "lastModified": 1727061933,
- "narHash": "sha256-yTsuV5unoujY0mhLINssYYBWCeefe+nJaxQHJKm7hlk=",
- "owner": "rafamadriz",
- "repo": "friendly-snippets",
- "rev": "00ba9dd3df89509f95437b8d595553707c46d5ea",
- "type": "github"
- },
- "original": {
- "owner": "rafamadriz",
- "repo": "friendly-snippets",
- "type": "github"
- }
- },
"plugin-gesture-nvim": {
"flake": false,
"locked": {
@@ -844,30 +812,14 @@
"type": "github"
}
},
- "plugin-lua-utils-nvim": {
- "flake": false,
- "locked": {
- "lastModified": 1708177208,
- "narHash": "sha256-9ildzQEMkXKZ3LHq+khGFgRQFxlIXQclQ7QU3fcU1C4=",
- "owner": "nvim-neorg",
- "repo": "lua-utils.nvim",
- "rev": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd",
- "type": "github"
- },
- "original": {
- "owner": "nvim-neorg",
- "repo": "lua-utils.nvim",
- "type": "github"
- }
- },
"plugin-lualine": {
"flake": false,
"locked": {
- "lastModified": 1723473562,
- "narHash": "sha256-gCm7m96PkZyrgjmt7Efc+NMZKStAq1zr7JRCYOgGDuE=",
+ "lastModified": 1712310396,
+ "narHash": "sha256-WcH2dWdRDgMkwBQhcgT+Z/ArMdm+VbRhmQftx4t2kNI=",
"owner": "hoob3rt",
"repo": "lualine.nvim",
- "rev": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056",
+ "rev": "0a5a66803c7407767b799067986b4dc3036e1983",
"type": "github"
},
"original": {
@@ -876,22 +828,6 @@
"type": "github"
}
},
- "plugin-luasnip": {
- "flake": false,
- "locked": {
- "lastModified": 1726165831,
- "narHash": "sha256-nkaa1NGOI28Et2QitQB+Spv+J42QVdHE1oywteLcJJw=",
- "owner": "L3MON4D3",
- "repo": "LuaSnip",
- "rev": "e808bee352d1a6fcf902ca1a71cee76e60e24071",
- "type": "github"
- },
- "original": {
- "owner": "L3MON4D3",
- "repo": "LuaSnip",
- "type": "github"
- }
- },
"plugin-mind-nvim": {
"flake": false,
"locked": {
@@ -988,38 +924,6 @@
"type": "github"
}
},
- "plugin-neorg": {
- "flake": false,
- "locked": {
- "lastModified": 1727821831,
- "narHash": "sha256-yfWQ6yKytu1jkWUtRZTVICslUWej6jVYv7frmSB7/6Q=",
- "owner": "nvim-neorg",
- "repo": "neorg",
- "rev": "afc9a37bf021acb0853e95714c4c6436e1588286",
- "type": "github"
- },
- "original": {
- "owner": "nvim-neorg",
- "repo": "neorg",
- "type": "github"
- }
- },
- "plugin-neorg-telescope": {
- "flake": false,
- "locked": {
- "lastModified": 1722358034,
- "narHash": "sha256-ei4uUqpIQjGKzu5ryu0Hlmis9TS9FJsYnjt4J4QdWlw=",
- "owner": "nvim-neorg",
- "repo": "neorg-telescope",
- "rev": "ddb2556644cae922699a239bbb0fe16e25b084b7",
- "type": "github"
- },
- "original": {
- "owner": "nvim-neorg",
- "repo": "neorg-telescope",
- "type": "github"
- }
- },
"plugin-new-file-template-nvim": {
"flake": false,
"locked": {
@@ -1277,22 +1181,6 @@
"type": "github"
}
},
- "plugin-nvim-metals": {
- "flake": false,
- "locked": {
- "lastModified": 1728295172,
- "narHash": "sha256-ja/+MNxZ3H9io9jDwm5rhE6iKNi86a22eCOY75g19O8=",
- "owner": "scalameta",
- "repo": "nvim-metals",
- "rev": "f861db9fda55939797ac1b05238c49b0dcdc3bdb",
- "type": "github"
- },
- "original": {
- "owner": "scalameta",
- "repo": "nvim-metals",
- "type": "github"
- }
- },
"plugin-nvim-navbuddy": {
"flake": false,
"locked": {
@@ -1517,22 +1405,6 @@
"type": "github"
}
},
- "plugin-otter-nvim": {
- "flake": false,
- "locked": {
- "lastModified": 1724585935,
- "narHash": "sha256-euHwoK2WHLF/hrjLY2P4yGrIbYyBN38FL3q4CKNZmLY=",
- "owner": "jmbuhr",
- "repo": "otter.nvim",
- "rev": "ca9ce67d0399380b659923381b58d174344c9ee7",
- "type": "github"
- },
- "original": {
- "owner": "jmbuhr",
- "repo": "otter.nvim",
- "type": "github"
- }
- },
"plugin-oxocarbon": {
"flake": false,
"locked": {
@@ -1549,22 +1421,6 @@
"type": "github"
}
},
- "plugin-pathlib-nvim": {
- "flake": false,
- "locked": {
- "lastModified": 1724943804,
- "narHash": "sha256-YhCJeNKlcjgg3q51UWFhuIEPzNueC8YTpeuPPJDndvw=",
- "owner": "pysan3",
- "repo": "pathlib.nvim",
- "rev": "57e5598af6fe253761c1b48e0b59b7cd6699e2c1",
- "type": "github"
- },
- "original": {
- "owner": "pysan3",
- "repo": "pathlib.nvim",
- "type": "github"
- }
- },
"plugin-plenary-nvim": {
"flake": false,
"locked": {
@@ -1901,6 +1757,22 @@
"type": "github"
}
},
+ "plugin-vim-vsnip": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1704937299,
+ "narHash": "sha256-gvm6z4pgSULBVPukewRyjwxZ0vZgreQWbG/0kOB1QBo=",
+ "owner": "hrsh7th",
+ "repo": "vim-vsnip",
+ "rev": "02a8e79295c9733434aab4e0e2b8c4b7cea9f3a9",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hrsh7th",
+ "repo": "vim-vsnip",
+ "type": "github"
+ }
+ },
"plugin-which-key": {
"flake": false,
"locked": {
@@ -1946,7 +1818,6 @@
"nixpkgs": "nixpkgs",
"nmd": "nmd",
"plugin-alpha-nvim": "plugin-alpha-nvim",
- "plugin-base16": "plugin-base16",
"plugin-bufdelete-nvim": "plugin-bufdelete-nvim",
"plugin-catppuccin": "plugin-catppuccin",
"plugin-ccc": "plugin-ccc",
@@ -1955,10 +1826,10 @@
"plugin-cheatsheet-nvim": "plugin-cheatsheet-nvim",
"plugin-cinnamon-nvim": "plugin-cinnamon-nvim",
"plugin-cmp-buffer": "plugin-cmp-buffer",
- "plugin-cmp-luasnip": "plugin-cmp-luasnip",
"plugin-cmp-nvim-lsp": "plugin-cmp-nvim-lsp",
"plugin-cmp-path": "plugin-cmp-path",
"plugin-cmp-treesitter": "plugin-cmp-treesitter",
+ "plugin-cmp-vsnip": "plugin-cmp-vsnip",
"plugin-codewindow-nvim": "plugin-codewindow-nvim",
"plugin-comment-nvim": "plugin-comment-nvim",
"plugin-conform-nvim": "plugin-conform-nvim",
@@ -1973,7 +1844,6 @@
"plugin-fastaction-nvim": "plugin-fastaction-nvim",
"plugin-fidget-nvim": "plugin-fidget-nvim",
"plugin-flutter-tools": "plugin-flutter-tools",
- "plugin-friendly-snippets": "plugin-friendly-snippets",
"plugin-gesture-nvim": "plugin-gesture-nvim",
"plugin-gitsigns-nvim": "plugin-gitsigns-nvim",
"plugin-glow-nvim": "plugin-glow-nvim",
@@ -1988,17 +1858,13 @@
"plugin-lsp-signature": "plugin-lsp-signature",
"plugin-lspkind": "plugin-lspkind",
"plugin-lspsaga": "plugin-lspsaga",
- "plugin-lua-utils-nvim": "plugin-lua-utils-nvim",
"plugin-lualine": "plugin-lualine",
- "plugin-luasnip": "plugin-luasnip",
"plugin-mind-nvim": "plugin-mind-nvim",
"plugin-minimap-vim": "plugin-minimap-vim",
"plugin-modes-nvim": "plugin-modes-nvim",
"plugin-neo-tree-nvim": "plugin-neo-tree-nvim",
"plugin-neocord": "plugin-neocord",
"plugin-neodev-nvim": "plugin-neodev-nvim",
- "plugin-neorg": "plugin-neorg",
- "plugin-neorg-telescope": "plugin-neorg-telescope",
"plugin-new-file-template-nvim": "plugin-new-file-template-nvim",
"plugin-noice-nvim": "plugin-noice-nvim",
"plugin-none-ls": "plugin-none-ls",
@@ -2015,7 +1881,6 @@
"plugin-nvim-lightbulb": "plugin-nvim-lightbulb",
"plugin-nvim-lint": "plugin-nvim-lint",
"plugin-nvim-lspconfig": "plugin-nvim-lspconfig",
- "plugin-nvim-metals": "plugin-nvim-metals",
"plugin-nvim-navbuddy": "plugin-nvim-navbuddy",
"plugin-nvim-navic": "plugin-nvim-navic",
"plugin-nvim-neoclip": "plugin-nvim-neoclip",
@@ -2030,9 +1895,7 @@
"plugin-obsidian-nvim": "plugin-obsidian-nvim",
"plugin-onedark": "plugin-onedark",
"plugin-orgmode-nvim": "plugin-orgmode-nvim",
- "plugin-otter-nvim": "plugin-otter-nvim",
"plugin-oxocarbon": "plugin-oxocarbon",
- "plugin-pathlib-nvim": "plugin-pathlib-nvim",
"plugin-plenary-nvim": "plugin-plenary-nvim",
"plugin-project-nvim": "plugin-project-nvim",
"plugin-registers": "plugin-registers",
@@ -2054,6 +1917,7 @@
"plugin-vim-markdown": "plugin-vim-markdown",
"plugin-vim-repeat": "plugin-vim-repeat",
"plugin-vim-startify": "plugin-vim-startify",
+ "plugin-vim-vsnip": "plugin-vim-vsnip",
"plugin-which-key": "plugin-which-key",
"rnix-lsp": "rnix-lsp",
"systems": "systems_2"
diff --git a/flake.nix b/flake.nix
index 172ea94e..a506cec8 100644
--- a/flake.nix
+++ b/flake.nix
@@ -13,8 +13,8 @@
inherit inputs;
specialArgs = {inherit lib;};
} {
- # Allow users to bring their own systems.
- # «https://github.com/nix-systems/nix-systems»
+ # provide overridable systems
+ # https://github.com/nix-systems/nix-systems
systems = import inputs.systems;
imports = [
./flake/apps.nix
@@ -62,6 +62,7 @@
pkgs,
...
}: {
+ formatter = pkgs.alejandra;
devShells = {
default = self'.devShells.lsp;
nvim-nix = pkgs.mkShell {packages = [config.packages.nix];};
@@ -69,21 +70,6 @@
packages = with pkgs; [nil statix deadnix alejandra];
};
};
-
- # Provide the default formatter. `nix fmt` in project root
- # will format available files with the correct formatter.
- # P.S: Please do not format with nixfmt! It messes with many
- # syntax elements and results in unreadable code.
- formatter = pkgs.alejandra;
-
- # Check if codebase is properly formatted.
- # This can be initiated with `nix build .#checks..nix-fmt`
- # or with `nix flake check`
- checks = {
- nix-fmt = pkgs.runCommand "nix-fmt-check" {nativeBuildInputs = [pkgs.alejandra];} ''
- alejandra --check ${self} < /dev/null | tee $out
- '';
- };
};
};
@@ -170,11 +156,6 @@
flake = false;
};
- plugin-otter-nvim = {
- url = "github:jmbuhr/otter.nvim";
- flake = false;
- };
-
# Language support
plugin-sqls-nvim = {
url = "github:nanotee/sqls.nvim";
@@ -206,11 +187,6 @@
flake = false;
};
- plugin-nvim-metals = {
- url = "github:scalameta/nvim-metals";
- flake = false;
- };
-
# Formatters
plugin-conform-nvim = {
url = "github:stevearc/conform.nvim";
@@ -294,6 +270,11 @@
flake = false;
};
+ plugin-cmp-vsnip = {
+ url = "github:hrsh7th/cmp-vsnip";
+ flake = false;
+ };
+
plugin-cmp-path = {
url = "github:hrsh7th/cmp-path";
flake = false;
@@ -304,19 +285,9 @@
flake = false;
};
- plugin-cmp-luasnip = {
- url = "github:saadparwaiz1/cmp_luasnip";
- flake = false;
- };
-
# snippets
- plugin-luasnip = {
- url = "github:L3MON4D3/LuaSnip";
- flake = false;
- };
-
- plugin-friendly-snippets = {
- url = "github:rafamadriz/friendly-snippets";
+ plugin-vim-vsnip = {
+ url = "github:hrsh7th/vim-vsnip";
flake = false;
};
@@ -371,11 +342,6 @@
};
# Themes
- plugin-base16 = {
- url = "github:rrethy/base16-nvim";
- flake = false;
- };
-
plugin-tokyonight = {
url = "github:folke/tokyonight.nvim";
flake = false;
@@ -658,26 +624,6 @@
flake = false;
};
- plugin-lua-utils-nvim = {
- url = "github:nvim-neorg/lua-utils.nvim";
- flake = false;
- };
-
- plugin-pathlib-nvim = {
- url = "github:pysan3/pathlib.nvim";
- flake = false;
- };
-
- plugin-neorg = {
- url = "github:nvim-neorg/neorg";
- flake = false;
- };
-
- plugin-neorg-telescope = {
- url = "github:nvim-neorg/neorg-telescope";
- flake = false;
- };
-
plugin-nui-nvim = {
# (required by noice.nvim)
url = "github:MunifTanjim/nui.nvim";
diff --git a/lib/attrsets.nix b/lib/attrsets.nix
deleted file mode 100644
index 59275af9..00000000
--- a/lib/attrsets.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-{lib}: let
- inherit (builtins) listToAttrs;
-in {
- mapListToAttrs = f: list: listToAttrs (map f list);
-}
diff --git a/lib/default.nix b/lib/default.nix
index e6ccd2a7..a418cff8 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -10,7 +10,6 @@
dag = import ./dag.nix {inherit lib;};
languages = import ./languages.nix {inherit lib;};
lists = import ./lists.nix {inherit lib;};
- attrsets = import ./attrsets.nix {inherit lib;};
lua = import ./lua.nix {inherit lib;};
neovimConfiguration = import ../modules {inherit inputs lib;};
}
diff --git a/lib/languages.nix b/lib/languages.nix
index bf9bb88b..9b72d4d4 100644
--- a/lib/languages.nix
+++ b/lib/languages.nix
@@ -2,8 +2,8 @@
{lib}: let
inherit (builtins) isString getAttr;
inherit (lib.options) mkOption;
+ inherit (lib.attrsets) listToAttrs;
inherit (lib.types) bool;
- inherit (lib.nvim.attrsets) mapListToAttrs;
in {
# A wrapper around `mkOption` to create a boolean option that is
# used for Language Server modules.
@@ -21,19 +21,19 @@ in {
config,
diagnosticsProviders,
}:
- mapListToAttrs
- (v: let
- type =
- if isString v
- then v
- else getAttr v.type;
- package =
- if isString v
- then diagnosticsProviders.${type}.package
- else v.package;
- in {
- name = "${lang}-diagnostics-${type}";
- value = diagnosticsProviders.${type}.nullConfig package;
- })
- config;
+ listToAttrs
+ (map (v: let
+ type =
+ if isString v
+ then v
+ else getAttr v.type;
+ package =
+ if isString v
+ then diagnosticsProviders.${type}.package
+ else v.package;
+ in {
+ name = "${lang}-diagnostics-${type}";
+ value = diagnosticsProviders.${type}.nullConfig package;
+ })
+ config);
}
diff --git a/lib/types/custom.nix b/lib/types/custom.nix
index 3d4a2bcb..a94735c5 100644
--- a/lib/types/custom.nix
+++ b/lib/types/custom.nix
@@ -1,9 +1,8 @@
{lib}: let
- inherit (lib.options) showOption showFiles getFiles mergeOneOption mergeEqualOption;
- inherit (lib.strings) isString isStringLike;
- inherit (lib.types) anything attrsOf listOf mkOptionType;
+ inherit (lib) isStringLike showOption showFiles getFiles mergeOneOption mergeEqualOption mkOptionType;
+ inherit (lib.types) anything attrsOf;
inherit (lib.nvim.types) anythingConcatLists;
- inherit (builtins) typeOf isAttrs any head concatLists stringLength match;
+ inherit (builtins) typeOf isAttrs any head concatLists stringLength;
in {
# HACK: Does this break anything in our case?
# A modified version of the nixpkgs anything type that concatenates lists
@@ -52,16 +51,6 @@ in {
(mergeFunctions.${commonType} or mergeEqualOption) loc defs;
};
- mergelessListOf = elemType: let
- super = listOf elemType;
- in
- super
- // {
- name = "mergelessListOf";
- description = "mergeless ${super.description}";
- merge = mergeEqualOption;
- };
-
char = mkOptionType {
name = "char";
description = "character";
@@ -69,11 +58,4 @@ in {
check = value: stringLength value < 2;
merge = mergeEqualOption;
};
-
- hexColor = mkOptionType {
- name = "hex-color";
- descriptionClass = "noun";
- description = "RGB color in hex format";
- check = v: isString v && (match "#?[0-9a-fA-F]{6}" v) != null;
- };
}
diff --git a/lib/types/default.nix b/lib/types/default.nix
index 73b35956..6751229c 100644
--- a/lib/types/default.nix
+++ b/lib/types/default.nix
@@ -6,10 +6,10 @@
typesDag = import ./dag.nix {inherit lib;};
typesPlugin = import ./plugins.nix {inherit inputs lib;};
typesLanguage = import ./languages.nix {inherit lib;};
- customTypes = import ./custom.nix {inherit lib;};
+ typesCustom = import ./custom.nix {inherit lib;};
in {
inherit (typesDag) dagOf;
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType;
inherit (typesLanguage) diagnostics mkGrammarOption;
- inherit (customTypes) anythingConcatLists char hexColor mergelessListOf;
+ inherit (typesCustom) anythingConcatLists char;
}
diff --git a/lib/types/plugins.nix b/lib/types/plugins.nix
index 656b7ab8..7d24163e 100644
--- a/lib/types/plugins.nix
+++ b/lib/types/plugins.nix
@@ -97,7 +97,7 @@ in {
default = {};
type = submodule {
- freeformType = anything;
+ freeformType = attrsOf anything;
options = opts;
};
};
diff --git a/modules/extra/deprecations.nix b/modules/extra/deprecations.nix
index 779a7527..388913a7 100644
--- a/modules/extra/deprecations.nix
+++ b/modules/extra/deprecations.nix
@@ -1,5 +1,5 @@
{lib, ...}: let
- inherit (lib.modules) mkRemovedOptionModule mkRenamedOptionModule;
+ inherit (lib.modules) mkRemovedOptionModule;
in {
imports = [
# 2024-06-06
@@ -14,40 +14,5 @@ in {
available under `vim.ui.fastaction` as a replacement. Simply remove everything under
`vim.lsp.nvimCodeActionMenu`, and set `vim.ui.fastaction.enable` to `true`.
'')
-
- (mkRemovedOptionModule ["vim" "autopairs" "enable"] ''
- vim.autopairs.enable has been removed in favor of per-plugin modules.
- You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
- '')
- (mkRemovedOptionModule ["vim" "autopairs" "type"] ''
- vim.autopairs.type has been removed in favor of per-plugin modules.
- You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
- '')
- (mkRemovedOptionModule ["vim" "autocomplete" "enable"] ''
- vim.autocomplete.enable has been removed in favor of per-plugin modules.
- You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
- '')
- (mkRemovedOptionModule ["vim" "autocomplete" "type"] ''
- vim.autocomplete.type has been removed in favor of per-plugin modules.
- You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
- '')
- (mkRemovedOptionModule ["vim" "snippets" "vsnip" "enable"] ''
- vim.snippets.vsnip.enable has been removed in favor of the more modern luasnip.
- '')
- (mkRenamedOptionModule ["vim" "lsp" "lspkind" "mode"] ["vim" "lsp" "lspkind" "setupOpts" "mode"])
-
- # 2024-10-14
- (mkRemovedOptionModule ["vim" "configRC"] ''
- Please migrate your configRC sections to Neovim's Lua format, and
- add them to `vim.luaConfigRC`.
-
- See the v0.7 release notes for more information on why and how to
- migrate your existing configurations to the new format.
- '')
-
- (mkRemovedOptionModule ["vim" "disableDefaultRuntimePaths"] ''
- Nvf now uses $NVIM_APP_NAME so there is no longer the problem of
- (accidental) leaking of user configuration.
- '')
];
}
diff --git a/modules/neovim/mappings/config.nix b/modules/neovim/mappings/config.nix
index 4d7f2417..28ebf081 100644
--- a/modules/neovim/mappings/config.nix
+++ b/modules/neovim/mappings/config.nix
@@ -3,75 +3,51 @@
lib,
...
}: let
- inherit (lib.modules) mkIf mkMerge;
- inherit (lib.trivial) pipe;
- inherit (lib.attrsets) mapAttrsToList;
- inherit (lib.lists) flatten;
-
- legacyMapModes = {
- normal = ["n"];
- insert = ["i"];
- select = ["s"];
- visual = ["v"];
- terminal = ["t"];
- normalVisualOp = ["n" "v" "o"];
- visualOnly = ["n" "x"];
- operator = ["o"];
- insertCommand = ["i" "c"];
- lang = ["l"];
- command = ["c"];
- };
+ inherit (lib.modules) mkIf;
cfg = config.vim;
in {
config = {
- vim.keymaps = mkMerge [
- (
- mkIf cfg.disableArrows [
- {
- key = "";
- mode = ["n" "i"];
- action = "";
- noremap = false;
- }
- {
- key = "";
- mode = ["n" "i"];
- action = "";
- noremap = false;
- }
- {
- key = "";
- mode = ["n" "i"];
- action = "";
- noremap = false;
- }
- {
- key = "";
- mode = ["n" "i"];
- action = "";
- noremap = false;
- }
- ]
- )
- (
- pipe cfg.maps
- [
- (mapAttrsToList (
- oldMode: keybinds:
- mapAttrsToList (
- key: bind:
- bind
- // {
- inherit key;
- mode = legacyMapModes.${oldMode};
- }
- )
- keybinds
- ))
- flatten
- ]
- )
- ];
+ vim.maps = {
+ normal = mkIf cfg.disableArrows {
+ "" = {
+ action = "";
+
+ noremap = false;
+ };
+ "" = {
+ action = "";
+
+ noremap = false;
+ };
+ "" = {
+ action = "";
+ noremap = false;
+ };
+ "" = {
+ action = "";
+ noremap = false;
+ };
+ };
+
+ insert = mkIf cfg.disableArrows {
+ "" = {
+ action = "";
+ noremap = false;
+ };
+ "" = {
+ action = "";
+ noremap = false;
+ };
+ "" = {
+ action = "";
+ noremap = false;
+ };
+ "" = {
+ action = "";
+ noremap = false;
+ };
+ };
+ };
};
}
diff --git a/modules/neovim/mappings/options.nix b/modules/neovim/mappings/options.nix
index 8f0e8ebf..3b1f2634 100644
--- a/modules/neovim/mappings/options.nix
+++ b/modules/neovim/mappings/options.nix
@@ -1,97 +1,101 @@
{lib, ...}: let
- inherit (lib.options) mkOption literalMD;
- inherit (lib.types) either str listOf attrsOf nullOr submodule;
+ inherit (lib.options) mkOption;
+ inherit (lib.types) bool str attrsOf nullOr submodule;
inherit (lib.nvim.config) mkBool;
-
+ # Most of the keybindings code is highly inspired by pta2002/nixvim.
+ # Thank you!
mapConfigOptions = {
+ silent =
+ mkBool false
+ "Whether this mapping should be silent. Equivalent to adding to a map.";
+
+ nowait =
+ mkBool false
+ "Whether to wait for extra input on ambiguous mappings. Equivalent to adding to a map.";
+
+ script =
+ mkBool false
+ "Equivalent to adding