diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 538e599a..6509ffcb 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.14.0" + ".": "15.15.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f5e25695..9c2cdedb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,45 @@ # Changelog +## [15.15.0](https://github.com/LazyVim/LazyVim/compare/v15.14.0...v15.15.0) (2026-04-02) + + +### Features + +* **biome:** enable biome lsp for linting ([b2830cf](https://github.com/LazyVim/LazyVim/commit/b2830cfcc5c9c09ebbf9545beb3947a55ce89dbd)) +* **biome:** move biome extra from formatting.biome -> lang.typescript.biome ([242f098](https://github.com/LazyVim/LazyVim/commit/242f0983de9fdb70f0d82057a8039e32bc171764)) +* **lazydev:** make lspconfig types available on word `lspconfig.settings` ([36f5947](https://github.com/LazyVim/LazyVim/commit/36f594716bcb0bec84a05a6c55f702134d2e89c3)) +* **lsp:** auto add organizeImport keymaps for LSPs that support it ([e54689e](https://github.com/LazyVim/LazyVim/commit/e54689ebdc5458cb30f4a48b954c710bb381cd01)) +* **oxc:** added oxc extra for oxfmt and oxlint ([4e9eac5](https://github.com/LazyVim/LazyVim/commit/4e9eac57aba1ea575ef008a503cba8327257e4a4)) +* **sidekick:** ctrl+. focuses sidekick, but when already inside sidekick, hides it ([50159fe](https://github.com/LazyVim/LazyVim/commit/50159fe344d93329a569cee136c0323e48b0d3da)) +* **typescript:** set `vim.g.lazyvim_ts_lsp = "tsgo"` to use the much faster experimental lsp server ([e6f26f0](https://github.com/LazyVim/LazyVim/commit/e6f26f0f23e9cb4c6bcc351b06474f4863319aff)) +* **typescript:** split typescript extra in main, vtsls and tsgo ([9029d92](https://github.com/LazyVim/LazyVim/commit/9029d928d2f7b7f76f132b618d2931499c9b6eb9)) + + +### Bug Fixes + +* **biome:** added recommendation when root has biome config file ([ad25b31](https://github.com/LazyVim/LazyVim/commit/ad25b31e512892ca51a1fa3ffa96d1375c391039)) +* **biome:** biome mason install is no longer needed ([5450006](https://github.com/LazyVim/LazyVim/commit/5450006ccdd7df341f7f60dded58ea4a87aa9c15)) +* **biome:** use biome-check in conform that also fixes linting issues and sorts imports ([954d874](https://github.com/LazyVim/LazyVim/commit/954d8746e5cf1266d93cf4210c00c1506f20423b)) +* **lsp:** sort server names before setting keymaps ([6d0da34](https://github.com/LazyVim/LazyVim/commit/6d0da34de9c4a82170e3359d4e7853bf89a557b3)) +* **oxc:** added `fixKind = "all"` ([85afbbc](https://github.com/LazyVim/LazyVim/commit/85afbbc94bb45891799a4851b2edf753b51f18b0)) +* **r:** recommend for *.qmd instead of *qmd files ([3b3d649](https://github.com/LazyVim/LazyVim/commit/3b3d6493332798674fb7b82aea600bab18eaf311)) +* **terminal:** use Snacks.terminal.focus() for <C-/> mapping ([96f4f18](https://github.com/LazyVim/LazyVim/commit/96f4f18d7d81c786ac0df5723bc7aca058bf2165)), closes [#7048](https://github.com/LazyVim/LazyVim/issues/7048) +* **treesitter:** `nvim-treesitter` on longer support nvim-0.11, so pin when needed. Fixes [#7092](https://github.com/LazyVim/LazyVim/issues/7092) ([ef272ff](https://github.com/LazyVim/LazyVim/commit/ef272ff7cc9b53d48baf6544618b5923d65c0282)) +* **tsgo:** disable inlayHints.functionLikeReturnTypes by default. Too noisy ([8bcb620](https://github.com/LazyVim/LazyVim/commit/8bcb6208021bd4e4257de64c9598c6b78688be28)) +* **tsgo:** remove some noisy inlay hints ([d07070b](https://github.com/LazyVim/LazyVim/commit/d07070bf2ff83ae513097d02d71460920af85a91)) +* **typescript:** remove keymaps for non-existing code actions ([53f4eab](https://github.com/LazyVim/LazyVim/commit/53f4eabd7723faba2d7c14afe53226d8c18bf16c)) +* **util.plugin:** single imports for extras ([1b4be53](https://github.com/LazyVim/LazyVim/commit/1b4be534f1d8959480ba1f622a457654bd737ce5)) + + +### Performance Improvements + +* **extras:** never load nested extras ([8764dfb](https://github.com/LazyVim/LazyVim/commit/8764dfbc8fcb8923397153eb3a2cfcac7ea988f1)) + + +### Reverts + +* **lsp:** revert changes for [#6456](https://github.com/LazyVim/LazyVim/issues/6456). Closes [#6779](https://github.com/LazyVim/LazyVim/issues/6779) ([d0fe8c8](https://github.com/LazyVim/LazyVim/commit/d0fe8c896f4dca003e8d56e2091ee5ec7da7af75)) + ## [15.14.0](https://github.com/LazyVim/LazyVim/compare/v15.13.0...v15.14.0) (2026-03-01) diff --git a/README-FA.md b/README-FA.md new file mode 100644 index 00000000..95876d74 --- /dev/null +++ b/README-FA.md @@ -0,0 +1,203 @@ + +
+ +
+ +
+ +

+ نصب + · + پیکربندی + · + اسناد +

+ +

+ + Latest release + + + Last commit + + + License + + + Stars + + + Issues + + + Repo Size + + + follow on Twitter + +

+ +<<<<<<< HEAD + +این پیکربندی با نام LazyVim، که قدرت گرفته شده از Neovim هست [💤 lazy.nvim](https://github.com/folke/lazy.nvim)، تا سفارشی سازی و توسعه پیکربندی را برای شما آسان تر کند. +به جای اینکه بخواهید بین شروع از صفر یا استفاده از یک توزیع از قبل ساخته شده انتخاب کنید، LazyVim بهترین هر دو جهان را به شما پیشنهاد میدهد - انعطاف اینکه پیکربندی را طبق نیازتان تغییر بدین، همراه با سادگی تنظیمات از قبل پیکربندی شده. +======= +LazyVim is a Neovim setup powered by [💤 lazy.nvim](https://github.com/folke/lazy.nvim) +to make it easy to customize and extend your config. +Rather than having to choose between starting from scratch or using a +pre-made distro, LazyVim offers the best of both worlds - the flexibility +to tweak your config as needed, along with the convenience of a pre-configured setup. +>>>>>>> d1cdedb5 (making the some changes in Farsi) + +![image](https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png) + +![image](https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png) + +## ✨ ویژگی ها + +<<<<<<< HEAD +- 🔥 تبدیل Neovim به یک IDE کامل +- 💤 اختصاصی کردن و گسترش پیکربندی به سادگی با [lazy.nvim](https://github.com/folke/lazy.nvim) +- 🚀 بسیار سریع +- 🧹 تنظیمات پیش فرض منطقی برای (خودکارسازی ها) options, autocmds (گزینه ها) و keymaps (کلیدهای میانبر) +- 📦 همراه با تعداد زیادی از پلاگین های از پیش پیکربندی شده و آماده استفاده. + +## ⚡️ الزامات + +- Neovim >= **0.11.2** ( باشد **LuaJIT** باید ساخته شده با ) +- Git >= **2.19.0** ( های جزئی clone برای پشتیبانی از) +- فونت [Nerd Font](https://www.nerdfonts.com/) **_(اختیاری)_** +- یک کامپایلر C: برای اطلاعات بیشتر راجب nvim-treesittere، [اینجا](https://github.com/nvim-treesitter/nvim-treesitter#requirements)را ببیند. + +## 🚀 شروع به کار + +شما می توانید یک قالب اولیه برای شروع LazyVim [اینجا](https://github.com/LazyVim/starter) پیدا کنید. +======= +- 🔥 Transform your Neovim into a full-fledged IDE +- 💤 Easily customize and extend your config with [lazy.nvim](https://github.com/folke/lazy.nvim) +- 🚀 بسیار سریع +- 🧹 Sane default settings for options, autocmds, and keymaps +- 📦 Comes with a wealth of plugins pre-configured and ready to use + +## ⚡️ Requirements + +- Neovim >= **0.11.2** (needs to be built with **LuaJIT**) +- Git >= **2.19.0** (for partial clones support) +- a [Nerd Font](https://www.nerdfonts.com/) **_(optional)_** +- a **C** compiler for `nvim-treesitter`. See [here](https://github.com/nvim-treesitter/nvim-treesitter#requirements) + +## 🚀 شروع به کار + +You can find a starter template for **LazyVim** [here](https://github.com/LazyVim/starter) +>>>>>>> d1cdedb5 (making the some changes in Farsi) + +
با داکر امتحان کنید. + +```sh +docker run -w /root -it --rm alpine:edge sh -uelic ' + apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update + git clone https://github.com/LazyVim/starter ~/.config/nvim + cd ~/.config/nvim + nvim +' +``` + +
+ +<<<<<<< HEAD +
نصب LazyVim Starter +======= +
Install the LazyVim Starter +>>>>>>> d1cdedb5 (making the some changes in Farsi) + +- یک بک آپ از فایل های neovim خود بگیرید. + + ```sh + mv ~/.config/nvim ~/.config/nvim.bak + mv ~/.local/share/nvim ~/.local/share/nvim.bak + ``` + +<<<<<<< HEAD +- کلون کردن starter +======= +- Clone the starter +>>>>>>> d1cdedb5 (making the some changes in Farsi) + + ```sh + git clone https://github.com/LazyVim/starter ~/.config/nvim + ``` + +- پوشه .git را حذف کنید، تا بتوانید repo خودتان را بعدا اضافه کنید. + + ```sh + rm -rf ~/.config/nvim/.git + ``` + +- Neovim را شروع کنید + + ```sh + nvim + ``` +<<<<<<< HEAD +برای نحوه‌ی سفارشی‌سازی **LazyVim** به توضیحات موجود در فایل‌ها مراجعه کنید. + +
+ + +--- + + +یک کتاب بسیار پرمحتوا که توسط [@dusty-phillips](https://github.com/dusty-phillips) نوشته شده است به نام [LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes) که به صورت آنلاین در دسترس است. + + +## 📂 ساختار فایل + +فایل های داخل پیکربندی به صورت خودکار در زمان مناسب بارگذاری می شوند، شما نیاز نیست که به صورت دستی بارگذاری کنید. +در LazyVim یک مجوعه ای از فایل های پیکربندی پیش فرض وجود دارد، که قبل از فایل های شما بارگذاری می شوند. [اینجا](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config) را ببینید. + + +شما می توانید پلاگین های اختصاصی خودتان در `lua/plugins/` اضافه کنید. تمام فایل ها در آنجا به صورت خودکار توسط [lazy.nvim](https://github.com/folke/lazy.nvim) بارگذاری می شوند. +======= +به + Refer to the comments in the files on how to customize **LazyVim**. + +
+ +--- + +[@dusty-phillips](https://github.com/dusty-phillips) یک کتاب بسیار پرمحتوا که توسط +[LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes) +نوشته شده که به صورت آنلاین در دسترس است. + +## 📂 ساختار فایل + +The files under config will be automatically loaded at the appropriate time, +so you don't need to require those files manually. +**LazyVim** comes with a set of default config files that will be loaded +**_before_** your own. See [here](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config) + +You can add your custom plugin specs under `lua/plugins/`. All files there +will be automatically loaded by [lazy.nvim](https://github.com/folke/lazy.nvim) +>>>>>>> d1cdedb5 (making the some changes in Farsi) + +
+~/.config/nvim
+├── lua
+│   ├── config
+│   │   ├── autocmds.lua
+│   │   ├── keymaps.lua
+│   │   ├── lazy.lua
+│   │   └── options.lua
+│   └── plugins
+│       ├── spec1.lua
+│       ├── **
+│       └── spec2.lua
+└── init.lua
+
+ +## ⚙️ پیکربندی +<<<<<<< HEAD +رجوع کنید به [اسناد](https://lazyvim.github.io) +======= +رجوع کنید به [docs](https://lazyvim.github.io) +>>>>>>> d1cdedb5 (making the some changes in Farsi) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 1288f75d..7802ea89 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,5 @@ *LazyVim.txt* LazyVim docs + For Neovim Last change: 2026 April 22 ============================================================================== Table of Contents *LazyVim-table-of-contents* @@ -78,22 +79,26 @@ Try it with Docker ~ Install the LazyVim Starter ~ - Make a backup of your current Neovim files: - >sh + +>sh mv ~/.config/nvim ~/.config/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak - < +< - Clone the starter - >sh + +>sh git clone https://github.com/LazyVim/starter ~/.config/nvim - < +< - Remove the `.git` folder, so you can add it to your own repo later - >sh + +>sh rm -rf ~/.config/nvim/.git - < +< - Start Neovim! - >sh + +>sh nvim - < +< Refer to the comments in the files on how to customize **LazyVim**. ------------------------------------------------------------------------------ diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 5a4020b6..62d0b8a5 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.14.0" -- x-release-please-version +M.version = "15.15.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 05d07a21..9651e4e6 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -189,8 +189,8 @@ map("n", "L", function() LazyVim.news.changelog() end, { desc = "LazyVim -- floating terminal map("n", "fT", function() Snacks.terminal() end, { desc = "Terminal (cwd)" }) map("n", "ft", function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" }) -map({"n","t"}, "",function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" }) -map({"n","t"}, "",function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "which_key_ignore" }) +map({"n","t"}, "",function() Snacks.terminal.focus(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" }) +map({"n","t"}, "",function() Snacks.terminal.focus(nil, { cwd = LazyVim.root() }) end, { desc = "which_key_ignore" }) -- windows map("n", "-", "s", { desc = "Split Window Below", remap = true }) diff --git a/lua/lazyvim/plugins/extras/editor/refactoring.lua b/lua/lazyvim/plugins/extras/editor/refactoring.lua index 11ab3786..d1105d3b 100644 --- a/lua/lazyvim/plugins/extras/editor/refactoring.lua +++ b/lua/lazyvim/plugins/extras/editor/refactoring.lua @@ -1,95 +1,64 @@ -local pick = function() - local refactoring = require("refactoring") - if LazyVim.pick.picker.name == "telescope" then - return require("telescope").extensions.refactoring.refactors() - elseif LazyVim.pick.picker.name == "fzf" then - local fzf_lua = require("fzf-lua") - local results = refactoring.get_refactors() - - local opts = { - fzf_opts = {}, - fzf_colors = true, - actions = { - ["default"] = function(selected) - refactoring.refactor(selected[1]) - end, - }, - } - fzf_lua.fzf_exec(results, opts) - else - refactoring.select_refactor() +if LazyVim.has_extra("editor.refactoring") then + if vim.fn.has("nvim-0.12") == 0 then + LazyVim.error("refactoring.nvim requires Neovim 0.12 or higher", { title = "refactoring.nvim" }) + return {} end end return { + { "lewis6991/async.nvim", lazy = true }, + { "ThePrimeagen/refactoring.nvim", event = { "BufReadPre", "BufNewFile" }, - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-treesitter/nvim-treesitter", - }, keys = { { "r", "", desc = "+refactor", mode = { "n", "x" } }, { "rs", - pick, + function() + return require("refactoring").select_refactor() + end, mode = { "n", "x" }, - desc = "Refactor", + desc = "Select Refactor", }, { "ri", function() - return require("refactoring").refactor("Inline Variable") + return require("refactoring").inline_var() end, mode = { "n", "x" }, desc = "Inline Variable", expr = true, }, - { - "rb", - function() - return require("refactoring").refactor("Extract Block") - end, - mode = { "n", "x" }, - desc = "Extract Block", - expr = true, - }, - { - "rf", - function() - return require("refactoring").refactor("Extract Block To File") - end, - mode = { "n", "x" }, - desc = "Extract Block To File", - expr = true, - }, { "rP", function() - require("refactoring").debug.printf({ below = false }) + return require("refactoring.debug").print_loc({ output_location = "below" }) end, - desc = "Debug Print", + desc = "Debug Print Location", + expr = true, }, { "rp", function() - require("refactoring").debug.print_var({ normal = true }) + return require("refactoring.debug").print_var({ output_location = "below" }) .. "iw" end, mode = { "n", "x" }, desc = "Debug Print Variable", + expr = true, }, { "rc", function() - require("refactoring").debug.cleanup({}) + return require("refactoring.debug").cleanup({ restore_view = true }) .. "ag" end, desc = "Debug Cleanup", + expr = true, }, { "rf", function() - return require("refactoring").refactor("Extract Function") + return require("refactoring").extract_func() end, mode = { "n", "x" }, desc = "Extract Function", @@ -98,7 +67,7 @@ return { { "rF", function() - return require("refactoring").refactor("Extract Function To File") + return require("refactoring").extract_func_to_file() end, mode = { "n", "x" }, desc = "Extract Function To File", @@ -107,52 +76,13 @@ return { { "rx", function() - return require("refactoring").refactor("Extract Variable") + return require("refactoring").extract_var() end, mode = { "n", "x" }, desc = "Extract Variable", expr = true, }, - { - "rp", - function() - require("refactoring").debug.print_var() - end, - mode = { "n", "x" }, - desc = "Debug Print Variable", - }, }, - opts = { - prompt_func_return_type = { - go = false, - java = false, - cpp = false, - c = false, - h = false, - hpp = false, - cxx = false, - }, - prompt_func_param_type = { - go = false, - java = false, - cpp = false, - c = false, - h = false, - hpp = false, - cxx = false, - }, - printf_statements = {}, - print_var_statements = {}, - show_success_message = true, -- shows a message with information about the refactor on success - -- i.e. [Refactor] Inlined 3 variable occurrences - }, - config = function(_, opts) - require("refactoring").setup(opts) - if LazyVim.has("telescope.nvim") then - LazyVim.on_load("telescope.nvim", function() - require("telescope").load_extension("refactoring") - end) - end - end, + opts = {}, }, } diff --git a/lua/lazyvim/plugins/extras/lang/typescript/oxc.lua b/lua/lazyvim/plugins/extras/lang/typescript/oxc.lua index a516fc89..d4efb30c 100644 --- a/lua/lazyvim/plugins/extras/lang/typescript/oxc.lua +++ b/lua/lazyvim/plugins/extras/lang/typescript/oxc.lua @@ -29,7 +29,11 @@ return { opts = { servers = { ---@type lspconfig.settings.oxlint - oxlint = {}, + oxlint = { + settings = { + fixKind = "all", + }, + }, --- disable the oxfmt lsp server since we use conform for formatting oxfmt = { enabled = false }, }, diff --git a/lua/lazyvim/plugins/extras/lang/typescript/tsgo.lua b/lua/lazyvim/plugins/extras/lang/typescript/tsgo.lua index ef075416..b526cef5 100644 --- a/lua/lazyvim/plugins/extras/lang/typescript/tsgo.lua +++ b/lua/lazyvim/plugins/extras/lang/typescript/tsgo.lua @@ -34,15 +34,15 @@ return { settings = { typescript = { inlayHints = { + enumMemberValues = { enabled = true }, + functionLikeReturnTypes = { enabled = false }, parameterNames = { enabled = "literals", suppressWhenArgumentMatchesName = true, }, parameterTypes = { enabled = true }, - variableTypes = { enabled = true }, propertyDeclarationTypes = { enabled = true }, - functionLikeReturnTypes = { enabled = false }, - enumMemberValues = { enabled = true }, + variableTypes = { enabled = false }, }, }, }, diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 6de91b30..4ef68c8f 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -6,6 +6,7 @@ return { { "nvim-treesitter/nvim-treesitter", branch = "main", + commit = vim.fn.has("nvim-0.12") == 0 and "7caec274fd19c12b55902a5b795100d21531391f" or nil, version = false, -- last release is way too old and doesn't work on Windows build = function() local TS = require("nvim-treesitter") diff --git a/lua/lazyvim/plugins/util.lua b/lua/lazyvim/plugins/util.lua index 8d8aa220..9d0d231c 100644 --- a/lua/lazyvim/plugins/util.lua +++ b/lua/lazyvim/plugins/util.lua @@ -23,6 +23,8 @@ return { nav_j = { "", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" }, nav_k = { "", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" }, nav_l = { "", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" }, + hide_slash = { "", "hide", desc = "Hide Terminal", mode = "t" }, + hide_underscore = { "", "hide", desc = "which_key_ignore", mode = "t" }, }, }, },