diff --git a/index.html b/index.html index 74c2bdf..a4e74fd 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,5 @@ -neovim-flake Manual

neovim-flake Manual


Preface
1. Try it out
1.1. Using Prebuilt Configs
1.2. Available Configs
1.2.1. Nix
1.2.2. Tidal
1.2.3. Maximal
2. Default Configs
2.1. Tidal Cycles
2.2. Nix
2.3. Maximal
3. Custom Configuration
4. Custom Neovim Package
5. Custom Plugins
5.1. New Method
5.2. Old Method
6. Home Manager
7. Language Support
7.1. LSP Custom Packages/Command
8. Hacking neovim-flake
8.1. Getting started
8.2. Guidelines
8.2.1. Add adequate documentation
8.2.2. Format your code
8.2.3. Format your commit messages
8.2.4. Commits
8.2.5. Code Style
8.3. Testing Your Changes
8.4. Keybinds
8.4.1. Custom Key Mappings Support for a Plugin
8.5. Adding Plugins
A. Configuration Options

Preface

+neovim-flake Manual

neovim-flake Manual


Preface

If you believe your problem is caused by a bug in neovim-flake then please consider reporting it over the neovim-flake issue tracker. Bugfixes, feature additions and upstream changes are welcome over diff --git a/options.html b/options.html index b3bff86..46f5c45 100644 --- a/options.html +++ b/options.html @@ -1,5 +1,5 @@ -Appendix A. Configuration Options

Appendix A. Configuration Options

_module.args

Additional arguments passed to each module in addition to ones +Appendix A. Configuration Options

Appendix A. Configuration Options

_module.args

Additional arguments passed to each module in addition to ones like lib, config, and pkgs, modulesPath.

This option is also available to all submodules. Submodules do not inherit args from their parent module, nor do they provide args to @@ -1542,7 +1542,7 @@ boolean

Default: <neovim-flake/modules/languages/go.nix>

vim.languages.go.lsp.package

Go LSP server package, or the command to run as a list of strings

Type: package or list of string

Default: -<derivation gopls-0.14.0>

Example: +<derivation gopls-0.14.2>

Example: "[lib.getExe pkgs.jdt-language-server \" - data \" \" ~/.cache/jdtls/workspace \"]"

Declared by:

<neovim-flake/modules/languages/go.nix>
vim.languages.go.lsp.server

Go LSP server to use

Type: @@ -1611,7 +1611,7 @@ boolean

Default: <neovim-flake/modules/languages/lua.nix>

vim.languages.lua.lsp.package

LuaLS package, or the command to run as a list of strings

Type: package or list of string

Default: -<derivation lua-language-server-3.7.0>

Declared by:

+<derivation lua-language-server-3.7.3>

Declared by:

<neovim-flake/modules/languages/lua.nix>
vim.languages.lua.lsp.neodev.enable

Whether to enable neodev.nvim integration, useful for neovim plugin developers.

Type: boolean

Default: @@ -1739,7 +1739,7 @@ boolean

Default:

vim.languages.python.dap.package

Python debugger package. This is a python package with debugpy installed, see https://nixos.wiki/wiki/Python#Install_Python_Packages.

Type: package

Default: -<derivation python3-3.11.5-env>

Example: +<derivation python3-3.11.6-env>

Example: with pkgs; python39.withPackages (ps: with ps; [debugpy])

Declared by:

<neovim-flake/modules/languages/python.nix>
vim.languages.python.dap.debugger

Python debugger to use

Type: @@ -1766,7 +1766,7 @@ boolean

Default: <neovim-flake/modules/languages/python.nix>

vim.languages.python.lsp.package

python LSP server package, or the command to run as a list of strings

Type: package or list of string

Default: -<derivation pyright-1.1.334>

Example: +<derivation pyright-1.1.336>

Example: "[lib.getExe pkgs.jdt-language-server \"-data\" \"~/.cache/jdtls/workspace\"]"

Declared by:

<neovim-flake/modules/languages/python.nix>
vim.languages.python.lsp.server

Python LSP server to use

Type: @@ -1780,7 +1780,7 @@ boolean

Default: <neovim-flake/modules/languages/python.nix>

vim.languages.python.treesitter.package

Python treesitter grammar to use

Type: package

Default: -<derivation python-grammar-0.0.0+rev=82f5c99>

Declared by:

+<derivation python-grammar-0.0.0+rev=4bfdd90>

Declared by:

<neovim-flake/modules/languages/python.nix>
vim.languages.rust.enable

Whether to enable Rust language support.

Type: boolean

Default: @@ -1811,7 +1811,7 @@ boolean

Default: <neovim-flake/modules/languages/rust.nix>

vim.languages.rust.lsp.package

rust-analyzer package, or the command to run as a list of strings

Type: package or list of string

Default: -<derivation rust-analyzer-2023-10-16>

Example: +<derivation rust-analyzer-2023-11-13>

Example: "[lib.getExe pkgs.jdt-language-server \"-data\" \"~/.cache/jdtls/workspace\"]"

Declared by:

<neovim-flake/modules/languages/rust.nix>
vim.languages.rust.lsp.opts

Options to pass to rust analyzer

Type: @@ -1881,7 +1881,7 @@ boolean

Default: <neovim-flake/modules/languages/sql.nix>

vim.languages.sql.treesitter.package

SQL treesitter grammar to use

Type: package

Default: -<derivation sql-grammar-0.0.0+rev=caf2938>

Declared by:

+<derivation sql-grammar-0.0.0+rev=d8fffdf>

Declared by:

<neovim-flake/modules/languages/sql.nix>
vim.languages.svelte.enable

Whether to enable Svelte language support.

Type: boolean

Default: @@ -1906,7 +1906,7 @@ boolean

Default: <neovim-flake/modules/languages/svelte.nix>

vim.languages.svelte.format.package

Svelte formatter package

Type: package

Default: -<derivation prettier-3.0.3>

Declared by:

+<derivation prettier-3.1.0>

Declared by:

<neovim-flake/modules/languages/svelte.nix>
vim.languages.svelte.format.type

Svelte formatter to use

Type: value “prettier” (singular enum)

Default: @@ -1919,7 +1919,7 @@ boolean

Default: <neovim-flake/modules/languages/svelte.nix>

vim.languages.svelte.lsp.package

Svelte LSP server package, or the command to run as a list of strings

Type: package or list of string

Default: -<derivation svelte-language-server-0.15.20>

Example: +<derivation svelte-language-server-0.15.22>

Example: "[lib.getExe pkgs.jdt-language-server \"-data\" \"~/.cache/jdtls/workspace\"]"

Declared by:

<neovim-flake/modules/languages/svelte.nix>
vim.languages.svelte.lsp.server

Svelte LSP server to use

Type: @@ -1935,6 +1935,29 @@ boolean

Default: package

Default: pkgs.vimPlugins.nvim-treesitter.builtGrammars.svelte

Declared by:

<neovim-flake/modules/languages/svelte.nix> +
vim.languages.terraform.enable

Whether to enable Terraform/HCL support.

Type: +boolean

Default: +false

Example: +true

Declared by:

+<neovim-flake/modules/languages/terraform.nix> +
vim.languages.terraform.lsp.enable

Whether to enable Terraform LSP support (terraform-ls).

Type: +boolean

Default: +false

Example: +true

Declared by:

+<neovim-flake/modules/languages/terraform.nix> +
vim.languages.terraform.lsp.package

terraform-ls package

Type: +package

Default: +<derivation terraform-ls-0.32.3>

Declared by:

+<neovim-flake/modules/languages/terraform.nix> +
vim.languages.terraform.treesitter.enable

Whether to enable Terraform treesitter.

Type: +boolean

Default: +false

Example: +true

Declared by:

+<neovim-flake/modules/languages/terraform.nix> +
vim.languages.terraform.treesitter.package

The terraform treesitter package to use.

Type: +package

Default: +pkgs.vimPlugins.nvim-treesitter.builtGrammars.terraform

Declared by:

+<neovim-flake/modules/languages/terraform.nix>
vim.languages.ts.enable

Whether to enable Typescript/Javascript language support.

Type: boolean

Default: false

Example: @@ -1958,7 +1981,7 @@ boolean

Default: <neovim-flake/modules/languages/ts.nix>

vim.languages.ts.format.package

Typescript/Javascript formatter package

Type: package

Default: -<derivation prettier-3.0.3>

Declared by:

+<derivation prettier-3.1.0>

Declared by:

<neovim-flake/modules/languages/ts.nix>
vim.languages.ts.format.type

Typescript/Javascript formatter to use

Type: one of “prettier”, “prettierd”

Default: @@ -1971,7 +1994,7 @@ boolean

Default: <neovim-flake/modules/languages/ts.nix>

vim.languages.ts.lsp.package

Typescript/Javascript LSP server package, or the command to run as a list of strings

Type: package or list of string

Default: -<derivation typescript-language-server-4.0.0>

Example: +<derivation typescript-language-server-4.1.2>

Example: "[lib.getExe pkgs.jdt-language-server \"-data\" \"~/.cache/jdtls/workspace\"]"

Declared by:

<neovim-flake/modules/languages/ts.nix>
vim.languages.ts.lsp.server

Typescript/Javascript LSP server to use

Type: @@ -4382,4 +4405,4 @@ boolean

Default: boolean

Default: true

Declared by:

<neovim-flake/modules/basic/module.nix> -
\ No newline at end of file +
\ No newline at end of file diff --git a/release-notes.html b/release-notes.html new file mode 100644 index 0000000..62f554a --- /dev/null +++ b/release-notes.html @@ -0,0 +1,258 @@ + +Appendix B. Release Notes

Appendix B. Release Notes

This section lists the release notes for tagged version of neovim-flake and current main.

B.1. Release 0.1

This is the current master branch and information here is not final. These are changes from the v0.01 tag.

Special thanks to home-manager for this release. Docs/manual generation, the new module evaluation system, and DAG implementation are from them.

B.1.1. Changelog

jordanisaacs:

  • +Removed hare language support (lsp/tree-sitter/etc). vim.lsp.hare is no longer defined. If you use hare and would like it added back, please file an issue. +
  • +vim.startPlugins & vim.optPlugins are now an enum of string for options sourced from the flake inputs. Users can still provide vim plugin packages. +

    If you are contributing and adding a new plugin, add the plugin name to availablePlugins in types-plugin.nix.

  • +neovimBuilder has been removed for configuration. Using an overlay is no longer required. See the manual for the new way to configuration. +
  • +Treesitter grammars are now configurable with vim.treesitter.grammars. Utilizes the nixpkgs nvim-treesitter plugin rather than a custom input in order to take advantage of build support of pinned versions. See discourse for more information. Packages can be found under the vimPlugins.nvim-treesitter.builtGrammars namespace. +
  • +vim.configRC and vim.luaConfigRC are now of type DAG lines. This allows for ordering of the config. Usage is the same is in home-manager’s home.activation option. +

    vim.luaConfigRC = lib.nvim.dag.entryAnywhere "config here"

MoritzBoehme:

B.2. Release 0.2

Release notes for release 0.2

B.2.1. Changelog

notashelf:

  • +Added two minimap plugins under vim.minimap. codewindow.nvim is enabled by default, while minimap.vim is available with its code-minimap dependency. +
  • +A complementary plugin, ‘obsidian.nvim` and the Neovim alternative for Emacs’ orgmode with orgmode.nvim have been added. Both will be disabled by default. +
  • +Smooth scrolling for ANY movement command is now available with cinnamon.nvim +
  • +You will now notice a dashboard on startup. This is provided by the alpha.nvim plugin. You can use any of the three available dashboard plugins, or disable them entirely. +
  • +There is now a scrollbar on active buffers, which can highlight errors by hooking to your LSPs. This is on by default, but can be toggled off under vim.visuals if seen necessary. +
  • +Discord Rich Presence has been added through presence.nvim for those who want to flex that they are using the superior text editor. +
  • +An icon picker is now available with telescope integration. You can use :IconPickerInsert or :IconPickerYank to add icons to your code. +
  • +A general purpose cheatsheet has been added through cheatsheet.nvim. Forget no longer! +
  • +ccc.nvim has been added to the default plugins to allow picking colors with ease. +
  • +Most UI components of Neovim have been replaced through the help of noice.nvim. There are also notifications and custom UI elements available for Neovim messages and prompts. +
  • +A (floating by default) terminal has been added through toggleterm.nvim. +
  • +Harness the power of ethical (tabnine.nvim) and not-so-ethical (copilot.lua) AI by those new assistant plugins. Both are off by default, TabNine needs to be wrapped before it’s working. +
  • +Experimental mouse gestures have been addede through gesture.nvim. See plugin page and the relevant module for more details on how to use. +
  • +Re-open last visited buffers via nvim-session-manager. Disabled by default as deleting buffers seems to be problematic at the moment. +
  • +Most of NvimTree’s configuration options have been changed with some options being toggled to off by default. +
  • +Lualine had its configuration simplified and style toned down. Less color, more info. +
  • +Modules where multiple plugin configurations were in the same directory have been simplified. Each plugin inside a single module gets its own directory to be imported. +
  • +Separate config options with the same parent attribute have been merged into one for simplicity. +

B.3. Release 0.3

Release 0.3 had to come out beore I wanted it to due to Neovim 0.9 dropping into nixpkgs-unstable. The treesitter changes +have prompted a treesitter rework, which was followed by reworking the languages system. Most of the changes to those are downstreamed +from the original repository. The feature requests that was originally planned for 0.3 have been moved to 0.4, which +should come out soon.

B.3.1. Changelog

  • +We have transitioned to flake-parts, from flake-utils to extend the flexibility of this flake. This means the flake structure +is different than usual, but the functionality remains the same. +
  • +We now provide a home-manager module. Do note that it is still far from perfect, but it works. +
  • +nodejs_16 is now bundled with Copilot.lua if the user has enabled Copilot assistant. +
  • +which-key section titles have been fixed. This is to be changed once again in a possible keybind rewrite, but now it should +display the correct titles instad of +prefix +
  • +Most of presence.nvim's options have been made fully configurable through your configuration file. +
  • +Most of the modules have been refactored to separate config and options attributes. +
  • +Darwin has been deprecated as the zig package is marked as broken. We will attempt to use the zig overlay to return Darwin +support. +
  • +Fidget.nvim has been added as a neat visual addition for LSP installations. +
  • +diffview.nvim has been added to provide a convenient diff utility. +
  • +Treesitter grammars are now configurable with vim.treesitter.grammars. Utilizes the nixpkgs nvim-treesitter plugin rather than a custom input in order to take advantage of build support of pinned versions. See discourse for more information. Packages can be found under the pkgs.vimPlugins.nvim-treesitter.builtGrammars attribute. Treesitter grammars for supported languages should be enabled within the module. By default no grammars are installed, thus the following grammars which do not have a language section are not included anymore: comment, toml, make, html, css, graphql, json. +
  • +A new section has been added for language support: vim.languages.<language>. The options vim.languages.enableLSP, vim.languages.enableTreesitter, etc. will enable the respective section for all languages that have been enabled. +

    • +All LSP languages have been moved here +
    • +plantuml and markdown have been moved here +
    • +A new section has been added for html. The old vim.treesitter.autotagHtml can be found at vim.languages.html.treesitter.autotagHtml. +
  • +vim.git.gitsigns.codeActions has been added allowing you to turn on gitsigns codeactions. +
  • +Removed the plugins document in the docs. Was too unwieldy to keep updated. +
  • +vim.visual.lspkind has been moved to vim.lsp.lspkind.enable +
  • +Improved handling of completion formatting. When setting vim.autocomplete.sources, can also include optional menu mapping. And can provide your own function with vim.autocomplete.formatting.format. +
  • +For vim.visuals.indentBlankline.fillChar and vim.visuals.indentBlankline.eolChar turning them off should use null rather than "" now. +
  • +Transparency has been made optional and has been disabled by default. vim.theme.transparent option can be used to enable or +disable transparency for your configuration. +
  • +Fixed deprecated configuration method for Tokyonight, and added new style "moon" +
  • +Dart language support as well as extended flutter support has been added. Thanks to @FlafyDev for his contributions towards Dart +language support. +
  • +Elixir language support has been added through elixir-tools.nvim. +
  • +hop.nvim and leap.nvim have been added for fast navigation. +
  • +modes.nvim has been added to the UI plugins as a minor error highlighter. +
  • +smartcollumn.nvim has been added to dynamically display a colorcolumn when the limit has been exceeded, providing +per-buftype column position and more. +
  • +project.nvim has been added for better project management inside Neovim. +
  • +More configuration options have been added to nvim-session-manager. +
  • +Editorconfig support has been added to the core functionality, with an enable option. +
  • +venn-nvim has been dropped due to broken keybinds. +

B.4. Release 0.4

Following the release of v0.3, I have decided to release v0.4 with a massive new change: customizable keybinds. As of the 0.4 release, keybinds will no longer be hardcoded and instead provided by each module’s own keybinds section. The old keybind system (vim.keybinds = {}) is now considered deprecated and the new lib functions are recommended to be used for adding keybinds for new plugins, or adding keybinds to existing plugins.

Alongside customizable keybinds, there are a few quality of life updates, such as lazygit integration and the new experimental Lua loader of Neovim 0.9 thanks to our awesome contributors who made this update possible during my absence.

B.4.1. Changelog

n3oney:

  • +Streamlined keybind adding process towards new functions in extended stdlib. +
  • +Moved default keybinds into keybinds section of each module +
  • +Simplified luaConfigRC and configRC setting - they can now just take strings +
  • +Refactored the resolveDag function - you can just provide a string now, which will default to dag.entryAnywhere +
  • +Fixed formatting sometimes removing parts of files +
  • +Made formatting synchronous +
  • +Gave null-ls priority over other formatters +

horriblename:

  • +Added clangd as alternative lsp for C/++. +
  • +Added toggleterm integration for lazygit. +
  • +Added new option enableluaLoader to enable neovim’s experimental module loader for faster startup time. +
  • +Fixed bug where flutter-tools can’t find dart LSP +
  • +Added Debug Adapter (DAP) support for clang, rust, go, python and dart. +

notashelf:

  • +Made Copilot’s Node package configurable. It is recommended to keep as default, but providing a different NodeJS version is now possible. +
  • +Added vim.cursorlineOpt for configuring Neovim’s cursorlineOpt. +
  • +Added filetree.nvimTreeLua.view.cursorline, default false, to enable cursorline in nvimtre. +
  • +Added Fidget.nvim support for the Catppuccin theme. +
  • +Updated bundled NodeJS version used by Copilot.lua. v16 is now marked as insecure on Nixpkgs, and we updated to v18 +
  • +Enabled Catppuccin modules for plugins available by default. +
  • +Added experimental Svelte support under vim.languages. +
  • +Removed unnecessary scrollbar element from notifications and codeaction warning UI. +
  • +vim.utility.colorizer has been renamed to vim.utility.ccc after the plugin it uses +
  • +Color preview via nvim-colorizer.lua +
  • +Updated Lualine statusline UI +
  • +Added vim-illuminate for smart highlighting +
  • +Added a module for enabling Neovim’s spellchecker +
  • +Added prettierd as an alternative formatter to prettier - currently defaults to prettier +
  • +Fixed presence.nvim inheriting the wrong client id +
  • +Cleaned up documentation +

B.5. Release 0.5

B.5.1. Changelog

vagahbond: +* Added phan language server for PHP

  • +Added phpactor language server for PHP +

horriblename:

  • +Added transparency support for tokyonight theme +
  • +Fixed a bug where cmp’s close and scrollDocs mappings wasn’t working +
  • +Streamlined and simplified extra plugin API with the addition of vim.extraPlugins +
  • +Allow using command names in place of LSP packages to avoid automatic installation +
  • +Add lua LSP and treesitter support, and neodev.nvim plugin support +
  • +Add vim.lsp.mappings.toggleFormatOnSave keybind +

amanse:

  • +Added daily notes options for obsidian plugin +
  • +Added jdt-language-server for Java +

yavko:

frothymarrow:

notashelf:

  • +Added GitHub Copilot to nvim-cmp completion sources. +
  • +Added vim.ui.borders.enable for global and individual plugin border configuration. +
  • +LSP integrated breadcrumbs with vim.ui.breadcrumbs.enable through nvim-navic +
  • +LSP navigation helper with nvim-navbuddy, depends on nvim-navic (automatically enabled) +
  • +Addeed nvim-navic integration for catppuccin theme +
  • +Fixed mismatching zig language description +
  • +Added support for statix and deadnix through vim.languages.nix.extraDiagnostics.types +
  • +Added lsp_lines plugin for showing diagnostic messages +
  • +Added a configuration option for choosing the leader key +
  • +The package used for neovim is now customizable by the user, using vim.package. For best results, always use an unwrapped package +
  • +Added highlight-undo plugin for highlighting undo/redo targets +
  • +Added bash LSP and formatter support +
  • +Disabled Lualine LSP status indicator for toggleterm buffer +
  • +Added nvim-docs-view, a plugin to display lsp hover documentation in a side panel +
  • +Switched to nixosOptionsDoc in option documentation. +To quote home-manager commit: "Output is mostly unchanged aside from some minor typographical and +formatting changes, along with better source links." +
  • +Updated indent-blankine.nvim to v3 - this comes with a few option changes, which will be migrated with renamedOptionModule +

jacekpoz:

  • +Fixed scrollOffset not being used +
  • +Updated clangd to 16 +
  • +Disabled useSystemClipboard by default +

ksonj:

  • +Add support to change mappings to utility/surround +
  • +Add black-and-isort python formatter +
  • +Removed redundant "Enable …" in mkEnableOption descriptions +
  • +Add options to modify LSP key bindings and add proper whichkey descriptions +
  • +Changed type of statusline.lualine.activeSection and statusline.lualine.inactiveSection from attrsOf str to attrsOf (listOf str) +
  • +Added statusline.lualine.extraActiveSection and statusline.lualine.extraInactiveSection +

B.6. Release 0.6

Release notes for release 0.6

B.6.1. Changelog

ksonj:

  • +Add Terraform language support +
\ No newline at end of file