diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index e18c95fe..eb54c6b1 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -359,8 +359,13 @@ [rrvsh](https://github.com/rrvsh): +[uv.nvim]: https://github.com/benomahony/uv.nvim + - Add custom snippet support to `vim.snippets.luasnip` - Fix namespace of python-lsp-server by changing it to python3Packages +- Add [uv.nvim] for integration with the uv Python package manager, + allowing automatic activation of virtual environments and + running code directly from Neovim. Available at `vim.languages.python.uv`. [Noah765](https://github.com/Noah765): diff --git a/modules/plugins/languages/python.nix b/modules/plugins/languages/python.nix index bec7ec8b..1d0190d5 100644 --- a/modules/plugins/languages/python.nix +++ b/modules/plugins/languages/python.nix @@ -11,6 +11,7 @@ inherit (lib.lists) isList; inherit (lib.types) enum either listOf package str bool; inherit (lib.nvim.lua) expToLua; + inherit (lib.nvim.types) mkPluginSetupOption; cfg = config.vim.languages.python; @@ -225,6 +226,11 @@ in { ''; }; }; + + uv = { + enable = mkEnableOption "the uv.nvim plugin"; + setupOpts = mkPluginSetupOption "uv.nvim." {}; + }; }; config = mkIf cfg.enable (mkMerge [ @@ -261,5 +267,16 @@ in { vim.debugger.nvim-dap.enable = true; vim.debugger.nvim-dap.sources.python-debugger = debuggers.${cfg.dap.debugger}.dapConfig; }) + + (mkIf cfg.uv.enable { + vim.lazy.plugins."uv.nvim" = { + package = "uv.nvim"; + setupModule = "uv"; + inherit (cfg.uv) setupOpts; + # Plugin should be loaded whenever we enter a buffer + # so it can load the uv virtual environment. + event = ["BufEnter"]; + }; + }) ]); } diff --git a/npins/sources.json b/npins/sources.json index 00dcea83..e0870cca 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -2497,6 +2497,19 @@ "url": "https://github.com/chomosuke/typst-preview.nvim/archive/dea4525d5420b7c32eebda7de15a6beb9d6574fa.tar.gz", "hash": "0y658l2ibq0x4cwa4rl3lab7aw4ba68xcrdnxp81p2rsk0d60qq4" }, + "uv.nvim": { + "type": "Git", + "repository": { + "type": "GitHub", + "owner": "benomahony", + "repo": "uv.nvim" + }, + "branch": "main", + "submodules": false, + "revision": "642e45d392a65fe15dbebd63444e45e21a38f883", + "url": "https://github.com/benomahony/uv.nvim/archive/642e45d392a65fe15dbebd63444e45e21a38f883.tar.gz", + "hash": "1l681q5d3c8hqr1vvb4rxs6y5a1fs3m3cx3v0n6lvmlcdbdn4mjb" + }, "vim-dirtytalk": { "type": "Git", "repository": {