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 @@
- nvf is a highly modular, configurable, extensible and easy to use Neovim configuration - in Nix. Designed for flexibility and ease of use, nvf allows you to easily configure - your fully featured Neovim instance with a few lines of Nix. + A highly modular, configurable, extensible and easy to use Neovim configuration + framework in Nix. Designed for flexibility and ease of use, this flake + allows you to easily configure your Neovim instance with a few lines of + Nix code.
@@ -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