Commit graph

3037 commits

Author SHA1 Message Date
Jarryd Tilbrook
9b077c7a8e
feat(lang): add neotest config for PHP tests (#5958)
## Description

Similar to some other languages (this closely follows the Go lang
extra), this adds neotest runners for the major PHP test runners:
PHPUnit and Pest.

Both work together, trying to use Pest if available and falling back to
PHPUnit which is a decent approach for the PHP ecosystem.

I read CONTRIBUTING.md which differs from the way the Go lang extra has
implemented a neotest adapters and opted to follow that instead. Ie.
adapters
have been added as dependencies instead of a separate spec with
`lazy=true`. Let me know if you want that changed.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 11:40:56 +02:00
Stanislav Zeman
90f84e7e75
feat(extras): add Dart language (#4749)
## Description

This PR add Dart language support to **extras** section.

## Testing

I checked that:
- the LSP correctly loads on Dart files and provides suggestions and
highlights errors
- `treesitter` parses the Dart language tree and highlights the code
- `conform` correctly formats Dart files using the built-in formatter
- `neotest` is capable of running Dart tests

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 11:27:52 +02:00
Folke Lemaitre
f4b08bb604
refactor(solidity): no need for opts to be a function 2025-10-20 11:24:28 +02:00
pugud
2cd46d42ba
feat(lang): add solidity language support (#4742)
## Description

### Summary

This PR adds comprehensive support for Solidity development in Neovim
using LazyVim. The following updates were made to streamline Solidity
development:
### Changes

1. **Solidity File Type Detection**
- Configured LazyVim to recognize Solidity projects by detecting
`foundry.toml`, `hardhat.config.js`, and `hardhat.config.ts` files.
2. **Treesitter Support for Solidity**
- Added `solidity` to the list of languages ensured by
`nvim-treesitter`, providing syntax highlighting and better code
structure understanding.
3. **Language Server Protocol (LSP) Setup**
- Configured `nvim-lspconfig` to support `solidity_ls` as the LSP for
Solidity files.
- Set up `root_dir` detection based on project files or a `.git`
directory to enable proper LSP functioning in Solidity projects.
4. **Solidity Formatter**
- Integrated `forge_fmt` as a formatter for Solidity files using
`conform.nvim`, which utilizes `forge fmt` to format code.
    
### Why use `forge fmt` instead of Prettier?

- **Prettier's Solidity support requires extra plugins**: Prettier does
not have native Solidity support and depends on
`prettier-plugin-solidity`. Even with
`vim.g.lazyvim_prettier_needs_config = false`, formatting won't work
unless a `.prettierrc` file is configured, creating unnecessary
complexity.
- **`forge fmt` is the native tool for Solidity development**: `Forge`
is a widely used tool within the Solidity ecosystem, especially when
working with Foundry. It provides built-in formatting with no extra
dependencies, making it simpler and more efficient to integrate.
- **Hardhat uses `prettier-plugin-solidity`**: For users of Hardhat,
`prettier-plugin-solidity` is required for code formatting. However, the
integration with Prettier might add complexity, while `forge fmt`
simplifies the process.
- **Future customization**: We may allow users to choose between
`prettier-plugin-solidity` and `forge fmt` for formatting in the future,
depending on their preferred tools.
    
  
### Testing

- Confirmed that Solidity files are detected and syntax-highlighted by
Treesitter.
- Verified LSP functionality for Solidity, including code navigation and
error detection.
- Tested `forge_fmt` for automatic code formatting on Solidity files.
### Motivation

These changes provide a smoother and more robust Solidity development
experience in Lazyvim, including syntax highlighting, code navigation,
and automatic formatting.

## Related Issue(s)
https://github.com/LazyVim/LazyVim/issues/1901

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2025-10-20 11:20:05 +02:00
Bahaa Mohamed
248876adb6
feat(go): add linting with golangci-lint (#6311)
## Description

<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

Add Go linting support using
[golangci-lint](https://github.com/golangci/golangci-lint) and
nvim-lint.

- Installs golangci-lint via Mason.
- Configures nvim-lint to run it on Go files.

This improves the Go development experience by running a fast, popular
linter automatically

## Related Issue(s)

<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

None

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 02:12:20 -07:00
snailed
4d0d87f626
fix(helm): broken helm highlighting (#5335)
## Description

This PR replaces the towolf/vim-helm plugin with a newer, lua
implementation of the plugin. This fixes syntax highlighting and makes
the workaround for the ftdetect/lsp load order superfluous.

## Related Issue(s)

  - Fixes #5334 

## Checklist

- [X] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 11:09:29 +02:00
Torbjørn Vatn
d2f9885d6b
fix(tailwind): additional settings (#5266)
Make it possible to define your own tailwind settings in opts, and merge
them with the default, additional Phoenix settings in tailwind.lua

## Description

Add the possibility to add your own tailwind settings in opts and have
them deep merged into the default `opts.settings`

I needed this for configuring support for tailwind when coding on a
[htmgo](https://htmgo.dev/docs/misc/tailwind-intellisense) project in
Neovim.

E.g.
```lua
return {
  "neovim/nvim-lspconfig",
  opts = {
    servers = {
      tailwindcss = {
        filetypes_include = { "go" },
        settings = {
          tailwindCSS = {
            includeLanguages = {
              go = "html",
            },
            experimental = {
              classRegex = {
                { "Class\\(([^)]*)\\)", '["`]([^"`]*)["`]' },
                { "ClassX\\(([^)]*)\\)", '["`]([^"`]*)["`]' },
                { "ClassIf\\(([^)]*)\\)", '["`]([^"`]*)["`]' },
                { "Classes\\(([^)]*)\\)", '["`]([^"`]*)["`]' },
              },
            },
          },
        },
      },
    },
  },
}
```

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 11:07:12 +02:00
Folke Lemaitre
9d345dec44
fix(twig): correct mason url 2025-10-20 10:55:37 +02:00
Folke Lemaitre
64377ba4de
test: detect old refs to plugins in extras 2025-10-20 10:55:05 +02:00
George Guimarães
2682ce0ab9
feat(ai): add avante.nvim for a better AI experience (#4440)
I switched over to https://github.com/yetone/avante.nvim and I think
this is the best experience in terms of UI and easiness to add patches
to your code.

I'm recommending it to everyone.

~~However, I couldn't make render-markdown to work on Avante. It seems
that my spec here is running before the one defined in
extras/lang/markdown.lua and getting overwritten even though I added
`optional = true`. I'll try to dig in deeper, but if someone has any
pointers, I'd appreciate it.~~

  - Fixes #4394

---------

Co-authored-by: PatMulligan <43773168+PatMulligan@users.noreply.github.com>
Co-authored-by: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com>
Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-20 01:47:17 -07:00
Jose Storopoli
5d186c009a
feat(lang): julia support (#6231)
## Description

- Another take on #4436.
- Adds LSP
- Adds cmp and blink.cmp for LaTeX symbols

## Related Issue(s)

#5455 

## Screenshots

![CleanShot 2025-07-05 at 08 05
01@2x](https://github.com/user-attachments/assets/36a6e5ac-2632-4a33-af9e-674b7f1b750d)

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 10:24:12 +02:00
Vo Quang Chien
645846be5c
feat(lang): add Typst language support (#4042)
## Description

This pull request introduces robust support for the
[Typst](https://github.com/typst/typst) language in LazyVim, enhancing
the Typst editing experience with several integrated tools:

1. **LSP Support**: Integrate with
[tinymist](https://github.com/Myriad-Dreamin/tinymist) provides
comprehensive LSP support.
2. **Code Formatting**: Integrate with
[typstyle](https://github.com/Enter-tainer/typstyle) for code
formatting.
3. **Preview Support**: Added
[typst-preview.nvim](https://github.com/chomosuke/typst-preview.nvim)
for live preview of Typst documents.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

---------

Co-authored-by: Jose Storopoli <jose@storopoli.io>
Co-authored-by: Stefan Boca <45266795+stefanboca@users.noreply.github.com>
Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2025-10-20 10:23:30 +02:00
Halibut Git Wiz
a6eb51e5b5
feat(extras): added twig language (#5464)
## Description

Adds Twig templates language support as en extra.

Explanation for the tools choices:
- Linter/formatter: Twigcs and Twig-cs-fixer both follow the [coding
standards](https://twig.symfony.com/doc/3.x/coding_standards.html)
recommended by the Symfony Project, maintainers of Twig.
- LSP: I don't know it Twiggy is considered a standard in the community.
I picked it because it's the only server specific to Twig. The other
options are HTML servers that also include support for several templates
languages. I've been using it for a while and it works fine. It adds
much needed snippets (Twig syntax involves tags that are difficult to
type on most keyboards) and does not conflict with Twigcs diagnostics.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

---------

Co-authored-by: tw <tw@pretexx.fr>
2025-10-20 10:19:38 +02:00
Jose Storopoli
82382f455a
feat(haskell): update haskell-tools version and add formatters + linters (#6230)
## Description

- Updates `haskell-tools` to use the recommended version in the plugin's
README
- Adds `ormolu` as a formatter
- Adds keybindings for `haskell-tools` that does not conflict with
LazyVim's defaults.

## Related Issue(s)

-
https://github.com/LazyVim/LazyVim/discussions/3325#discussioncomment-9562683:
adds `ormolu` formatter.
- https://github.com/LazyVim/LazyVim/pull/2052#issuecomment-2881764491:
@mrcjkb keeps getting bug reports because the version is still in `3`
and should be updated to `6`.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-20 01:17:31 -07:00
Jose Storopoli
8db9c75e8d
feat(extras): utils: add gh.nvim (#6250)
## Description

Adds [`gh.nvim`](https://github.com/ldelossa/gh.nvim) to the extras.

`gh.nvim` brings a way richer reviewer interface to NeoVim by supporting
LSP and treesitter natively in review diff buffers.
I've been using successfully for a couple weeks instead of `Octo.nvim`.

## Related Issue(s)

None

## Screenshots

<img width="580" height="760" alt="CleanShot 2025-07-13 at 08 02 10@2x"
src="https://github.com/user-attachments/assets/ebee1a54-1c3e-4248-8a09-eba65c838351"
/>


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2025-10-20 00:47:54 -07:00
Yiqian Liu
83468be350
fix(keymap): remove select mode remaps of printable characters (#6296)
## Description

Most of the "visual mode" mappings use "v" instead of "x", and therefore
also affect select mode.
If the key is a printable character, it is now unusable in select mode.
This is most prominent with `<leader>`, which is space by default, a
printable character.

The most common use of select mode is when it is automatically triggered
by snippets. Currently, trying to type space, g, <, >, etc. as the first
character of a snippet field will trigger their bind instead of actually
inserting the character.

I cannot currently think of any good reason why anyone would rely on
using select mode to execute any of these mapped actions.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 00:10:08 -07:00
Watson Dinh
f118dca334
fix(extras.lang): fix Scala extra by using nvimMetals only (#5726)
## Description
Scala lang Extra should NOT be configured via `neovim/nvim-lspconfig`.
This PR removes `neovim/nvim-lspconfig` config and replace it by
`nvim-metals` only. From [nvim-metals
README.md](https://github.com/scalameta/nvim-metals): _"NOTE: This
plugin works without needing to install neovim/nvim-lspconfig. If you
have it installed for other languages, that's not a problem, but make
sure you do not have Metals configured through nvim-lspconfig while
using this plugin"_

## Related Issue(s)

No specific issue, this is attempt to follow users guide of Scala nvim
plugin : https://github.com/scalameta/nvim-metals

## Screenshots

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 09:04:35 +02:00
Thomas Ung
8c5cc77107
docs(fr): add readme in french (#5300)
## Description

Contribution for https://github.com/LazyVim/LazyVim/discussions/506


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 00:01:17 -07:00
Grzegorz Aleksander Klementowski
d27e7adb53
Added Polish translation of README (README-PL.md) (#5816)
Added Polish translation of README (README-PL.md):

<div align="center">
<img
src="https://user-images.githubusercontent.com/292349/213446185-2db63fd5-8c84-459c-9f04-e286382d6e80.png">
</div>

<hr>

<h4 align="center">
  <a href="https://lazyvim.github.io/installation">Install</a>
  ·
  <a href="https://lazyvim.github.io/configuration">Configure</a>
  ·
  <a href="https://lazyvim.github.io">Docs</a>
</h4>

<div align="center"><p>
    <a href="https://github.com/LazyVim/LazyVim/releases/latest">
<img alt="Latest release"
src="https://img.shields.io/github/v/release/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41&include_prerelease&sort=semver"
/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim/pulse">
<img alt="Last commit"
src="https://img.shields.io/github/last-commit/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=8bd5ca&logoColor=D9E0EE&labelColor=302D41"/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim/blob/main/LICENSE">
<img alt="License"
src="https://img.shields.io/github/license/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=ee999f&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim/stargazers">
<img alt="Stars"
src="https://img.shields.io/github/stars/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=c69ff5&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim/issues">
<img alt="Issues"
src="https://img.shields.io/github/issues/LazyVim/LazyVim?style=for-the-badge&logo=bilibili&color=F5E0DC&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim">
<img alt="Repo Size"
src="https://img.shields.io/github/repo-size/LazyVim/LazyVim?color=%23DDB6F2&label=SIZE&logo=codesandbox&style=for-the-badge&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
    <a href="https://twitter.com/intent/follow?screen_name=folke">
<img alt="follow on Twitter"
src="https://img.shields.io/twitter/follow/folke?style=for-the-badge&logo=twitter&color=8aadf3&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
</div>

LazyVim to konfiguracja Neovim oparta na [💤
lazy.nvim](https://github.com/folke/lazy.nvim)
która ułatwia dostosowywanie i rozszerzanie konfiguracji.
Zamiast wybierać między rozpoczynaniem od zera a używaniem gotowej
dystrybucji, LazyVim oferuje najlepsze z obu światów – elastyczność
pozwalającą na dostosowanie konfiguracji do własnych potrzeb oraz wygodę
wstępnie skonfigurowanego środowiska.


![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)

##  Funkcje

- 🔥 Przekształć Neovim w pełnoprawne IDE
- 💤 Łatwo dostosowuj i rozszerzaj swoją konfigurację dzięki
[lazy.nvim](https://github.com/folke/lazy.nvim)
- 🚀 Niezwykle szybkie działanie
- 🧹 Przemyślane domyślne ustawienia opcji, autocmd i skrótów
klawiszowych
- 📦 Zawiera bogaty zestaw wstępnie skonfigurowanych wtyczek gotowych do
użycia

## ️ Wymagania

- Neovim >= **0.9.0** (musi być skompilowany z **LuaJIT**)
- Git >= **2.19.0** (dla obsługi częściowego klonowania repozytoriów)
- [Nerd Font](https://www.nerdfonts.com/) **_(opcjonalnie)_**
- Kompilator **C** wymagany dla `nvim-treesitter`. Szczegóły
[tutaj](https://github.com/nvim-treesitter/nvim-treesitter#requirements)

## 🚀 Pierwsze kroki

Szablon startowy dla **LazyVim** znajdziesz
[tutaj](https://github.com/LazyVim/starter)

<details><summary>Wypróbuj z Dockerem</summary>

```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
'
```

</details>

<details><summary>Zainstaluj <a
href="https://github.com/LazyVim/starter">Starter LazyVim</a></summary>

- Wykonaj kopię zapasową swoich obecnych plików Neovim:

  ```sh
  mv ~/.config/nvim ~/.config/nvim.bak
  mv ~/.local/share/nvim ~/.local/share/nvim.bak
  ```

- Sklonuj repozytorium startowe:

  ```sh
  git clone https://github.com/LazyVim/starter ~/.config/nvim
  ```

- Usuń folder `.git`, aby później móc dodać własne repozytorium:

  ```sh
  rm -rf ~/.config/nvim/.git
  ```

- Uruchom Neovim!

  ```sh
  nvim
  ```

W plikach znajdziesz komentarze, które pomogą Ci dostosować **LazyVim**.

</details>

---

[@elijahmanor](https://github.com/elijahmanor) stworzył świetne wideo z
przewodnikiem, jak zacząć.

[![Obejrzyj
wideo](https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg)](https://www.youtube.com/watch?v=N93cTbtLCIM)

[@dusty-phillips](https://github.com/dusty-phillips) napisał obszerną
książkę
[LazyVim for Ambitious
Developers](https://lazyvim-ambitious-devs.phillips.codes),
która jest dostępna za darmo online.

## 📂 Struktura plików

Pliki w katalogu `config` są automatycznie ładowane w odpowiednim
momencie,
więc nie musisz ich ręcznie dołączać.
**LazyVim** zawiera zestaw domyślnych plików konfiguracyjnych,
które zostaną załadowane **_przed_** Twoimi własnymi. Szczegóły
znajdziesz
[tutaj](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config).

Możesz dodać własne specyfikacje wtyczek w katalogu `lua/plugins/`.
Wszystkie pliki w tym folderze zostaną automatycznie załadowane przez
[lazy.nvim](https://github.com/folke/lazy.nvim).

<pre>
~/.config/nvim
├── lua
│   ├── config
│   │   ├── autocmds.lua
│   │   ├── keymaps.lua
│   │   ├── lazy.lua
│   │   └── options.lua
│   └── plugins
│       ├── spec1.lua
│       ├── **
│       └── spec2.lua
└── init.lua
</pre>

## ⚙️ Konfiguracja

Zapoznaj się z [dokumentacją](https://lazyvim.github.io).
2025-10-19 23:59:40 -07:00
Iordanis Petkakis
e38944799e
fix(util.project): different mapping on dashboard than snacks.projects (#5737)
## Description
Different mapping and description to not be confused with
`snacks.projects`.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #5736 
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 08:52:12 +02:00
Folke Lemaitre
1b2e6e8986
feat(extras): renamed extra omnisharp -> dotnet + added fautocomplete to lspconfig 2025-10-20 08:47:38 +02:00
Folke Lemaitre
37ecd06fad
feat(extras): automatically update lazyvim.json for renamed or deprecated extras 2025-10-20 08:46:45 +02:00
Folke Lemaitre
d44f8bf317
test: fix mason in extra tests 2025-10-20 08:36:01 +02:00
Christoph Schmidpeter
80a980ab00
feat(lang/fsharp): add F# support to omnisharp extra (#6538)
## Description
Extend the existing C#/VB setup to support F# development with
formatting, LSP, and debugging integration.

- Extend recommended filetypes and roots to include F#
- Ensure Treesitter installs the `fsharp` parser
- Add Fantomas formatter in none-ls and Conform
- Ensure Mason installs fsautocomplete and fantomas
- Extend DAP configurations to include `fsharp`

⚠️ For debugging/neotest to work, this PR should be merged together with
[#6540](https://github.com/LazyVim/LazyVim/pull/6540),
which switches Omnisharp extras from `neotest-dotnet` to
`neotest-vstest`.

## Related Issue(s)

N/A

## Screenshots

### Without PR

Sample code:
<img width="1485" height="934" alt="2025-09-27-224704_hyprshot"
src="https://github.com/user-attachments/assets/40993ae2-c7eb-458a-bca9-6e77a1fad323"
/>

### With PR

`:ConformInfo`
<img width="1280" height="573" alt="image"
src="https://github.com/user-attachments/assets/b417fce7-8eb5-4ccc-8bd4-c554060bf9a0"
/>

`:NullLsInfo`
<img width="732" height="544" alt="image"
src="https://github.com/user-attachments/assets/5275e16b-353f-4776-b130-09ec27fde90b"
/>

Sample code before formatting:
<img width="1953" height="1228" alt="2025-09-27-224729_hyprshot"
src="https://github.com/user-attachments/assets/870b17c7-2473-4151-9ccc-23b70d9fbc42"
/>

Sample code after formatting (using Fantomas formatter):
<img width="1930" height="1216" alt="2025-09-27-224752_hyprshot"
src="https://github.com/user-attachments/assets/3b589c2e-b7b2-4fbf-bef7-0aabda586536"
/>

DAP/Neotest debugging the sample code: 
<img width="2548" height="1461" alt="image"
src="https://github.com/user-attachments/assets/b70a9498-041e-48c8-8e7c-78a828d0e17d"
/>



## Attachments
[Sample Project ZIP
Archive](https://github.com/user-attachments/files/22576868/FsSample.zip)

```
sudo pacman -S --needed curl unzip dotnet-sdk # or whatever package manger is on system
curl -O -L "https://github.com/user-attachments/files/22576868/FsSample.zip"
unzip FsSample.zip
cd FsSample
dotnet build  # restoring/building fixes LSP errors 
```     

## Checklist

- [X] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

Co-authored-by: Christoph Schmidpeter <christoph.schmidpeter@gmail.com>
2025-10-20 08:02:50 +02:00
Folke Lemaitre
38df28f28c
style: formatting 2025-10-20 07:53:39 +02:00
XTY
0dc41dfe9a
refactor(vscode): reimplement terminal integration and unify calls to extension API (#6076)
## Description

This PR proposes the following changes to the VS Code extra:
- Re-implement the VS Code terminal integration (broken since
[`2f46974`](2f4697443c (diff-f878104b5415a79ed4bb9036974722cad911327fdd46994e04f5065ff90e9a55)),
see comment referenced below)
- Unify calls to the [extension
API](https://github.com/vscode-neovim/vscode-neovim/tree/v1.18.21?tab=readme-ov-file#%EF%B8%8F-api)
- Fully adopt the Lua API in favour of the deprecated Vim script
functions (see [deprecation
notice](https://github.com/vscode-neovim/vscode-neovim/tree/v1.18.21?tab=readme-ov-file#vimscript))
  - Centralise `require("vscode")` calls

## Related Issue(s)

- Fixes
https://github.com/LazyVim/LazyVim/pull/4392#issuecomment-2881395017

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2025-10-20 07:36:15 +02:00
Jose Storopoli
2a866f6c8c
feat(lang): nix add statix linter (#6244)
## Description

Adds [`statix`](https://github.com/oppiliappan/statix) linter to
`lang/nix.lua` using `nvim-lint`

## Related Issue(s)

None

## Screenshots


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 07:20:47 +02:00
Folke Lemaitre
e4d34328f2
fix(typescript): better default pwa-node DAP config. Closes #6386 2025-10-20 07:19:18 +02:00
Folke Lemaitre
1a08e9f50f
fix(telescope): sync keymaps with snacks picker + added some that were missing 2025-10-20 07:04:55 +02:00
folke
c3c2ff465b chore(build): auto-generate docs 2025-10-20 05:02:32 +00:00
Folke Lemaitre
69a5744803
fix(fzf-lua): added some missing keymaps similar to snacks picker. Closes #6036. Closes #5830 2025-10-20 07:01:27 +02:00
Folke Lemaitre
16917db94a
feat(sidekick): added sidekick cli status to lualine 2025-10-19 22:53:32 +02:00
github-actions[bot]
42840b2ffb
chore(main): release 15.9.0 (#6643)
🤖 I have created a release *beep* *boop*
---


##
[15.9.0](https://github.com/LazyVim/LazyVim/compare/v15.8.1...v15.9.0)
(2025-10-19)


### Features

* **docker:** associate 'Containerfile' with 'dockerfile' filetype
([#5974](https://github.com/LazyVim/LazyVim/issues/5974))
([97af4a2](97af4a23bc))
* **extras.rest:** add keymap for changing environment
([#5678](https://github.com/LazyVim/LazyVim/issues/5678))
([1da659d](1da659db4a))
* **java:** enable `blink.cmp` capabilities to show signature
documentation ([#5218](https://github.com/LazyVim/LazyVim/issues/5218))
([9618e32](9618e327ed))
* **lang/omnisharp:** switch neotest adapter to vstest
([#6540](https://github.com/LazyVim/LazyVim/issues/6540))
([4086d44](4086d44a0b))
* **neotest:** extra keymap to attach to a test
([#6198](https://github.com/LazyVim/LazyVim/issues/6198))
([66e927f](66e927fd9d))


### Bug Fixes

* **blink:** remove snippet expand override (no longer needed). Closes
[#6044](https://github.com/LazyVim/LazyVim/issues/6044)
([336e2c3](336e2c3ea6))
* **chezmoi:** add `hidden=false` to fzf picker
([#6095](https://github.com/LazyVim/LazyVim/issues/6095))
([1aa1b59](1aa1b59a7e))
* **copilot-chat:** use up to date config for chat headers
([#6543](https://github.com/LazyVim/LazyVim/issues/6543))
([2c5eef7](2c5eef7df7))
* **extras/rust:** fix config key for files.exclude
([#5664](https://github.com/LazyVim/LazyVim/issues/5664))
([762a34d](762a34d5ad))
* **extras:** adjust switch source/header shortcut
([#6567](https://github.com/LazyVim/LazyVim/issues/6567))
([b36b858](b36b8589b6))
* **extras:** remove procMacro ignored
([#6117](https://github.com/LazyVim/LazyVim/issues/6117))
([4a3702e](4a3702e050))
* **lang.omnisharp:** update CSharpier command and arguments for Mason
compatibility ([#6156](https://github.com/LazyVim/LazyVim/issues/6156))
([dfebe70](dfebe70b8d))
* **lang.rust:** rust-analyzer hanging on root scanned
([#6178](https://github.com/LazyVim/LazyVim/issues/6178))
([7bf8c22](7bf8c22c56))
* **latex:** ensure tex extra installs latex tree-sitter parser
([#6357](https://github.com/LazyVim/LazyVim/issues/6357))
([ae74622](ae74622e66))
* **mini.animate:** schedule the toggle mapping to correctly take effect
([#6483](https://github.com/LazyVim/LazyVim/issues/6483))
([bd23357](bd233579a6))
* **sql:** fix autocomplete when `omni` is used as a `blink.cmp` source
([#5652](https://github.com/LazyVim/LazyVim/issues/5652))
([f6f72b9](f6f72b90d4))
* **treesitter:** attach textobject keymaps to existing buffers on load.
Closes [#6642](https://github.com/LazyVim/LazyVim/issues/6642). Closes
[#6639](https://github.com/LazyVim/LazyVim/issues/6639)
([92a7728](92a7728732))
* **typescript:** make_position_params with offset encoding.
([#6277](https://github.com/LazyVim/LazyVim/issues/6277))
([22152e9](22152e958f))
* **ui:** ignore sidekick_terminal in mini-indentscope
([#6619](https://github.com/LazyVim/LazyVim/issues/6619))
([f0b32b5](f0b32b5955))
* **util:** add some kulala keymaps back to global
([#5960](https://github.com/LazyVim/LazyVim/issues/5960))
([a16739e](a16739e332))
* **vscode:** don't sync undo/redo with vscode
([#5957](https://github.com/LazyVim/LazyVim/issues/5957))
([706ec44](706ec4443a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-19 13:00:52 +02:00
Folke Lemaitre
c460e97d2b
style: format 2025-10-19 12:57:09 +02:00
Lawrence Ho
9618e327ed
feat(java): enable blink.cmp capabilities to show signature documentation (#5218)
## Description

Enable `blink.cmp` capabilities to show Java signature documentation
during completion.
See also: https://github.com/Saghen/blink.cmp/issues/151

## Related Issue(s)

<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:55:38 +02:00
Igor Guerrero
f6f72b90d4
fix(sql): fix autocomplete when omni is used as a blink.cmp source (#5652)
## Description

I was trying the `omni` source with `blink.cmp` and I had an error which
you can read more about in this `nvim-compe` issue:
https://github.com/hrsh7th/nvim-compe/issues/286 but the message keeps
showing up after setting that to `syntax` so I mark the default plugin
as loaded, and it works as expected, I think there are more items
returned but I cannot confirm that :).

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:54:41 +02:00
Jarryd Tilbrook
a16739e332
fix(util): add some kulala keymaps back to global (#5960)
## Description

Some kulala keymaps are useful to access globally, such as the
scratchpad. However, #4467 #4574 added all of them to http filetypes
only

This adds the scratchpad and replay last to global keymaps

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:53:46 +02:00
Michael Nikitochkin
97af4a23bc
feat(docker): associate 'Containerfile' with 'dockerfile' filetype (#5974)
## Description

'Containerfile' [1] is a supported alternative name for container build
definitions. It is recognized by Docker and other container tools, and
can help clarify intent in multi-container repositories or
non-Docker-specific setups.

[1]:
https://github.com/containers/common/blob/main/docs/Containerfile.5.md

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:47:59 +02:00
Kian Kasad
7038687b20
chore(python): use debugpy-adapter executable for nvim-dap-python (#6080)
## Description

Uses a less hacky and now officially-supported way of getting the
debugpy DAP adapter path for nvim-dap-python.

Since https://github.com/mfussenegger/nvim-dap-python/pull/184,
nvim-dap-python can start the debugpy adapter using the
`debugpy-adapter` executable. Since
[Mason](f7c1c2fde2/packages/debugpy/package.yaml (L17))
and [now debugpy itself](https://github.com/microsoft/debugpy/pull/1870)
provide this executable, there's no need to get the `python` executable
from debugpy's venv.

I've gone with just `"debugpy-adapter"` rather than
`LazyVim.get_pkg_path("debugpy", "debugpy-adapter")` so that a
system-wide installation of debugpy can also be used.

## Related Issue(s)

<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:47:17 +02:00
CaueDosAnjos
dfebe70b8d
fix(lang.omnisharp): update CSharpier command and arguments for Mason compatibility (#6156)
## Description
This PR updates the CSharpier integration in LazyVim to reflect changes
in how Mason installs the formatter.

Previously, Mason installed CSharpier as the `dotnet-csharpier` binary,
which allowed running it without additional arguments. Now, Mason
installs it simply as `csharpier`, requiring the explicit format
argument for it to work correctly.

This change updates the formatter command and arguments accordingly to
ensure compatibility with the latest Mason installation and CSharpier
CLI behavior.

## Changes
Replaced `dotnet-csharpier` with `csharpier` as the executable command.

Added the required `format` argument to the command invocation.

## Related Issue(s)
Fixes #6155

## Checklist
I have read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:46:46 +02:00
Folke Lemaitre
336e2c3ea6
fix(blink): remove snippet expand override (no longer needed). Closes #6044 2025-10-19 12:45:07 +02:00
Felix Rath
762a34d5ad
fix(extras/rust): fix config key for files.exclude (#5664)
## Description

It seems like the key changed its name from `files.excludeDirs` to
`files.exclude` at some point. At least that is the (only) name that can
be found in the docs now:
https://rust-analyzer.github.io/book/configuration.html (ctrl+f for
"files.exclude")

Also add `".jj"` as an excluded directory, which is like `".git"` but
for jujutsu
(https://jj-vcs.github.io/jj/latest/cli-reference/#jj-git-init).

---

As an aside, `cargo.loadOutDirsFromCheck` also does not seem to exist
(anymore). But I don't know more about that option, so I haven't touched
it in this PR.

## Related Issue(s)

Not sure if any.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:37:57 +02:00
Ethan
4a3702e050
fix(extras): remove procMacro ignored (#6117)
## Description
I think we should remove rust-analyzer procMacro.ignore because it will
cause some diagnostics which are not expected.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
https://github.com/LazyVim/LazyVim/issues/6111

<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:36:04 +02:00
Theo Lemay
706ec4443a
fix(vscode): don't sync undo/redo with vscode (#5957)
## Description

Vscode-neovim maintainer here,
https://github.com/LazyVim/LazyVim/pull/4983 should not have been
merged, it creates more problems than it
solves. For the longest time I was trying to figure out why undo is
broken on my machine, didn't notice this slipped in.

The fundamental issue is that vscode's undo points are based on a
time-based heuristic, wheras neovim's undo points are based on atomic
actions (delete, insert, etc). Vscode doesn't understand the context of
what the user is doing, it just receives a stream of edits from neovim.

Ultimately this results in multiple unrelated edits being undone with a
single press of the u key, resulting in very confusing behavior.

## Related Issue(s)

https://github.com/LazyVim/LazyVim/pull/4983

## Screenshots

Current


https://github.com/user-attachments/assets/5ca33b0d-fe2e-49f9-aa17-66f3c42c0966

Expected


https://github.com/user-attachments/assets/d577a1f3-efb2-4725-be50-bd0cf691252d



## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

Co-authored-by: Theo Lemay <tlemay@tesla.com>
2025-10-19 12:31:48 +02:00
Nguyen Hoai Nam
22152e958f
fix(typescript): make_position_params with offset encoding. (#6277)
Fixed for issue https://github.com/LazyVim/LazyVim/issues/6276
2025-10-19 12:30:58 +02:00
Christoph Schmidpeter
4086d44a0b
feat(lang/omnisharp): switch neotest adapter to vstest (#6540)
## Description
Replace `neotest-dotnet` with `neotest-vstest` in the Omnisharp extras.

The maintainer of `neotest-dotnet` has announced possible archiving and
recommended moving toward a vstest-based approach
(see Issafalcon/neotest-dotnet#142).

In addition, `neotest-dotnet` often fails to reliably discover tests
(currently reproducible), while `neotest-vstest` works consistently in
those same scenarios.

`neotest-vstest` delegates to Microsoft’s VSTest engine, which provides:

- Framework-agnostic discovery and execution (xUnit, NUnit, MSTest,
etc.)
- Support for both C# and F#
- Parameterized test support
- Compatibility with Microsoft.Testing.Platform going forward

According to the `neotest-dotnet` maintainer, this vstest-based approach
is more reliable and maintainable than parser-based discovery and is the
recommended path going forward.
## Related Issue(s)
- Ref: Issafalcon/neotest-dotnet#142
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

Co-authored-by: Christoph Schmidpeter <christoph.schmidpeter@gmail.com>
2025-10-19 12:29:00 +02:00
Tomas Slusny
2c5eef7df7
fix(copilot-chat): use up to date config for chat headers (#6543)
The config format changed a while ago due to function calling support

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
2025-10-19 12:28:25 +02:00
Roland Kaminski
b36b8589b6
fix(extras): adjust switch source/header shortcut (#6567)
The command to switch header and source is now called
`:LspClangdSwitchSourceHeader` and no longer
`:ClangdSwitchSourceHeader`.

## Description

This is just a small fix due to a command that has been renamed.

I did not find the documentation but the relevant line in the code where
the command is defined is here:
-
e688b486fe/lsp/clangd.lua (L92)

## Related Issue(s)

I did not find any related issues.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:27:42 +02:00
Lorenzo Bettini
d14b7733e7
docs(mini-snippets): fix typo in the documentation (#5953)
typo `snippits`

## Description

Just a fix for the typo `snippits`

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:26:42 +02:00
xusd320
7bf8c22c56
fix(lang.rust): rust-analyzer hanging on root scanned (#6178)
## Description

I encounter the RA hanging problem when coding on next.js project, and
found the solution to fix this at here .
https://github.com/rust-lang/rust-analyzer/issues/12613#issuecomment-2096386344
2025-10-19 12:26:20 +02:00