Commit graph

300 commits

Author SHA1 Message Date
Folke Lemaitre
0352f944c3
perf(ui): never show folds on dashboards 2024-11-18 21:27:36 +01:00
Folke Lemaitre
1db2af267e
fix(terminal): set shellcmdflags for powershell to recommended values. Closes #4805 2024-11-16 07:39:48 +01:00
Zhou Fang
e50b43544f
fix(lualine): dynamically fetch the color used in lualine (#4788)
## Description

The color used in lualine was previously static and did not update
dynamically when a new colorscheme was applied. This resulted in
inconsistencies between the theme and the lualine colors, as the 'local'
color table returned the highlight color defined during initialization.

This pull request resolves the issue by ensuring that the lualine colors
are always in sync with the current colorscheme. It achieves this by
using `LazyVim.ui.fg(HIGHLIGHT)` to dynamically fetch the appropriate
highlight colors, making the lualine colors responsive to colorscheme
changes.

## Related Issue(s)

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

## Screenshots

**Before**


![image](https://github.com/user-attachments/assets/6b78483b-4a64-4ec3-a902-a0d1ed10a992)

**After**


![image](https://github.com/user-attachments/assets/3f73ec26-cbf1-4ff7-873f-6c7b2c13c481)

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-11-14 15:53:27 +01:00
Folke Lemaitre
3ac62a4364
refactor(ui): cleanup fg/color 2024-11-13 21:14:29 +01:00
Folke Lemaitre
1d7b9a1a61
perf(treesitter): better foldtext and foldexpr 2024-11-13 21:11:32 +01:00
Folke Lemaitre
5df382765b
refactor(lualine): status component 2024-11-13 17:20:50 +01:00
Folke Lemaitre
ea266e7326
fix(lualine): normalize paths before calculating pretty path. Fixes #4763 2024-11-11 15:44:08 +01:00
Folke Lemaitre
fbf881f80b
feat(ai): better completion/suggestions of AI engines (#4752)
## Description

The whole completion / snippets / AI is very tricky:
- multiple snippet engines
- native snippets on > 0.11 set their own keymaps, but not on 0.10
- multiple completion engines, like `nvim-cmp` and `blink.cmp`
- multiple ai completion engines that have a different API
- user's preference of showing ai suggestions as completion or not
- none of the ai completion engines currently set undo points, which is
bad

Solution:
- [x] added `LazyVim.cmp.actions`, where snippet engines and ai engines
can register their action.
- [x] an action returns `true` if it succeeded, or `false|nil` otherwise
- [x] in a completion engine, we then try running multiple actions and
use the fallback if needed
- [x] so `<tab>` runs `{"snippet_forward", "ai_accept", "fallback"}`
- [x] added `vim.g.ai_cmp`. When `true` we try to integrate the AI
source in the completion engine.
- [x] when `false`, `<tab>` should be used to insert the AI suggestion
- [x] when `false`, the completion engine's ghost text is disabled
- [x] luasnip support for blink (only works with blink `main`)
- [x] create undo points when accepting AI suggestions 

## Test Matrix

| completion   | snippets     | ai          | ai_cmp | tested? |
|--------------|--------------|-------------|--------|---------|
| nvim-cmp     | native       | copilot     | true   |       |
| nvim-cmp     | native       | copilot     | false  |       |
| nvim-cmp     | native       | codeium     | true   |       |
| nvim-cmp     | native       | codeium     | false  |       |
| nvim-cmp     | luasnip      | copilot     | true   |       |
| nvim-cmp     | luasnip      | copilot     | false  |       |
| nvim-cmp     | luasnip      | codeium     | true   |       |
| nvim-cmp     | luasnip      | codeium     | false  |       |
| blink.cmp    | native       | copilot     | true   |       |
| blink.cmp    | native       | copilot     | false  |       |
| blink.cmp    | native       | codeium     | true   |       |
| blink.cmp    | native       | codeium     | false  |       |
| blink.cmp    | luasnip      | copilot     | true   |       |
| blink.cmp    | luasnip      | copilot     | false  |       |
| blink.cmp    | luasnip      | codeium     | true   |       |
| blink.cmp    | luasnip      | codeium     | false  |       |


## Related Issue(s)

- [ ] Closes #4702

## Screenshots

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

## Checklist

- [ ] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-11-11 10:50:57 +01:00
Folke Lemaitre
86904d2fb1
feat(ai): move ai related extras from coding to ai (#4751)
## Description

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

## 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

- [ ] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-11-10 11:27:21 +01:00
Folke Lemaitre
b9dae57961
perf(ui): only enable treesitter folds if the buffer has treesitter highlighting 2024-11-09 23:33:05 +01:00
Folke Lemaitre
67b216c973
fix(lualine): make sure path is in root before substituting 2024-11-07 17:01:08 +01:00
Jamie Davies
1d4157e681
fix(lualine): apply highlight groups correctly to truncated pretty_paths (#4379)
## Description

This is a small fix to the path truncating in
`LazyVim.lualine.pretty_path()` to make the filename highlighting
actually apply to only the filename, rather than the filename and all
path elements after the inserted ellipsis (`…`).

This keeps it consistent with the behaviour exhibited when the path
isn't truncated, and is what I think most users would expect the
behaviour to be.

## Screenshots

Before this fix:

<img width="320" alt="image"
src="https://github.com/user-attachments/assets/d708a140-2b23-457a-a296-dd411d29d268">

```
   nvim/…/nvim/lua/plugins/lazyvim/ui.lua
   └──┬──┘└──────────────┬──────────────┘
directory_hl        filename_hl
```

After this fix:

<img width="319" alt="image"
src="https://github.com/user-attachments/assets/e9d13fdd-79a8-4e3d-942a-58d0e2bb8bca">

```
nvim/…/nvim/lua/plugins/lazyvim/ui.lua
└──────────────┬───────────────┘└─┬──┘
         directory_hl        filename_hl
```

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-11-07 16:26:17 +01:00
Folke Lemaitre
2f4697443c
feat(core)!: move a bunch of LazyVim features to snacks.nvim (#4706)
## Description

LazyVim comes with a bunch of smaller QoL plugin like features, but it's
not easy for non LazyVim users to use them.

That's why I started working on
[snacks.nvim](https://github.com/folke/snacks.nvim), a collection of
small QoL plugins for Neovim.

Snacks also includes a bunch of new improvements to these features.

This PR fully integrates with snacks.

## Todo

- [ ] add proper deprecations where needed
- [ ] create snacks docs
- [ ] document all the new improvements relevant to LazyVim users

## Closes

- [ ] #4492 
- [ ] #4333
- [ ] #4687

## Screenshots

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

## Checklist

- [ ] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-11-07 15:54:47 +01:00
Folke Lemaitre
ad52bf91bc
feat(extras): blink (#4680)
## Description

Extra to use [blink.cmp](https://github.com/Saghen/blink.cmp) instead of
**nvim-cmp**.

## Todo

- [x] tokyonight suport
- [x] basic integration
- [ ] check / update all cmp sources
- [ ] copilot and others integration 
- [x] native lazydev source

## Limitations

There's no copilot source, so instead when enabling both blink and
copilot:
- blink ghost text is disabled
- copilot suggestions are enabled
- use `<tab>` to navigate snippets and accept copilot completions 

## Related Issue(s)

- https://github.com/LazyVim/LazyVim/discussions/4679
2024-11-02 09:54:55 +01:00
Folke Lemaitre
fe7003de50
fix(folds): enable folds when treesitter available. Fixes #4563 2024-10-23 11:32:21 +02:00
Iordanis Petkakis
90a92312ae
feat(root): provide vim.g.root_lsp_ignore to ignore LSP servers (#4332)
## Description
This provides `vim.g.root_lsp_ignore` for users to customize which LSP
servers should be taken into account when evaluating the LSP `root_dir`.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Closes #4330
<!--
  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.
2024-10-03 15:55:25 +02:00
Iordanis Petkakis
57c0c0bc9f
feat(toggle): add more M.wk fields for better user customization (#4521)
## Description
Add to `M.wk` fields for `icon`, `color_enabled` and `color_disabled`
for more granual user customization.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
No, rather a discussion #4512
<!--
  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.
2024-10-02 10:22:08 +02:00
Folke Lemaitre
6e4025229d
fix(lsp): backward compat with lspconfig refactor. Fixes #4525. See #4518 2024-10-02 10:18:21 +02:00
Folke Lemaitre
3dbace941e
fix(toggle): diagnostics enable/disable. See #4205 2024-08-31 12:34:45 +02:00
Iordanis Petkakis
c012f85959
fix(toggle): make diagnostics compatible with nvim-0.9.5 (#4205)
## Description
This makes `toggle.diagnostics` compatible with Neovim 0.9.5 (though not
sure about the metatable callables, since `set` there accepts a boolean
from `get` state).

Please make whatever changes you deem necessary or disregard as a whole
for a better approach I haven't been able to think of.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #4203
<!--
  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.
2024-08-31 09:44:52 +02:00
Iordanis Petkakis
41a8f3a5fb
feat(lazygit): allow user to override LazyVim config with custom file (#4367)
## Description
This takes into consideration an additional file, if it exists, to
extend `LG_CONFIG_FILE` environment variable, so that users can
overwrite easier default LazyVim options set for lazygit in
`lazygit-theme.yml`. It's not desirable to directly change
`lazygit-theme.yml` as the values are hardcoded and regenerated upon
colorscheme change.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #4364. Ideally, the problem about `nvim-remote` on Windows should
be fixed on lazygit's side, so this is just kind of a hotfix in the
meantime. Feel free to disregard this if not desirable.
<!--
  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.
2024-08-31 09:18:20 +02:00
George Guimarães
1d2c0a5cf4
chore(markdown): markdown.nvim was renamed to render-markdown.nvim (#4259)
As described in
aeb5cec617
2024-08-31 09:16:45 +02:00
Folke Lemaitre
94bf4f9324
fix(news): pcall diag when showing news for older Neovim versions 2024-07-25 10:55:08 +02:00
Folke Lemaitre
f6cd4a38c6
fix(news): deprecated API 2024-07-23 07:17:18 +02:00
Folke Lemaitre
c8ab5d7554
fix(toggle): safe toggle get 2024-07-20 22:06:16 +02:00
dotfrag
b5290fd929
feat(terminal): clear search highlight when opening a terminal (#4090)
## Description

Often times when opening a terminal or lazygit when a search is active,
words in the terminal are highlighted. In my opinion this is rarely, if
not never intended. This attempts to fixes this behavior. The code of
`terminal.lua` is a bit beyond me, but I believe I have added it to the
right place.

## Related Issue(s)

N/A.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-07-18 07:10:22 +02:00
Folke Lemaitre
c1b76ee235
feat(toggle): move toggle notifs to toggle function 2024-07-17 15:07:04 +02:00
Folke Lemaitre
60b10deeb0
style(toggle): types 2024-07-16 23:54:23 +02:00
Folke Lemaitre
150523b77b
feat(toggle): make toggles callable. Fixes #4081 2024-07-16 23:34:27 +02:00
Folke Lemaitre
a1335e59e1
style: fix toggle desc 2024-07-15 23:56:07 +02:00
Folke Lemaitre
78cf0320bf
feat(keymaps): dynamic which-key icons/descriptions for toggles (#4050)
## Description

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

## Related Issue(s)

- [ ] Closes #4025

## Screenshots


![image](https://github.com/user-attachments/assets/8453c23c-d560-490c-9f96-a22ea88f45fd)

## Checklist

- [ ] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-07-15 15:47:44 +02:00
Johnson Hu
8506cb5a98
feat(util.mini): follow the user's mappings instead of hardcoded values (#4043)
Because I use the Colemak-DH keyboard layout, I have mapped 'i' to 'h'.
Therefore, the current mini.ai which_key prompts are inconsistent with
my keymap.


## Description

The names and prefixes used in mini.ai_whichkey() are hardcoded and
should follow the user's mappings.

## Related Issue(s)

No

## Screenshots

No

## 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>
2024-07-15 09:06:34 +02:00
Folke Lemaitre
337e9ddc00
fix(pick): get rid of "auto" picker and set better defaults for telescope find_files (#4024)
## Description

Changes telescope's `find_files` options to match `fzf-lua` that matches
what `git_files` does including untracked files.

## Related Issue(s)

Fixes #3974

## 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.
2024-07-14 07:52:00 +02:00
Folke Lemaitre
75ff1496bd
feat: shorter keymap descriptions for mini.ai / yanky 2024-07-14 07:08:17 +02:00
Folke Lemaitre
702471e454
feat: new mappings format for which-key v3. Forgot to push :) 2024-07-12 22:54:35 +02:00
med8bra
28805d1a4c
fix(lazygit): improve git browse (#3941)
## Description
Improves git browse command by handling different types of remotes, and
allows user to extend to other git hosts.

## Related Issue(s)
Fixes #3886

## 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>
2024-07-07 21:25:45 +02:00
Folke Lemaitre
131187c092
feat: allow a custom path for lazyvim.json. Fixes #3856 2024-06-29 21:19:15 +02:00
Folke Lemaitre
b43ace1ecf
fix(git): use current dir when git not found to get a meaningful error message 2024-06-29 15:37:51 +02:00
Roman Nesytov
b292a721bf
fix(lazygit): fix browsing private git hostings (#3833)
## What is this PR for?

Current implementation of `Git Browse` doesn't work with onprem gitlab
(and any other git hosting except gitlab, github and bitbucket).
With this little fix, it should work with any git hosting.

## Does this PR fix an existing issue?

No

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-06-29 10:42:46 +02:00
Folke Lemaitre
d6429a5c8a
fix(pick): set recurse_submodules to false when using auto picker. Fixes #3831, Closes #3835 2024-06-29 10:33:29 +02:00
Folke Lemaitre
3764735fb2
fix(extras): don't load pkgs when parsing specs for LazyExtras 2024-06-29 10:19:01 +02:00
Iordanis Petkakis
87fe403df6
fix(bufremove): fix Cancel (#3834)
## What is this PR for?
When you hit `Cancel` and a buffer is modified, it should not delete the
buffer.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Does this PR fix an existing issue?
Fixes #3832
<!--
  If this PR fixes any issues, please link to the issue here.
  Fixes #<issue_number>
-->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-06-27 23:51:57 +02:00
dbger
a33eabddd9
fix(util.terminal): fix the shellredir and shellpipe options for powershell (#3803)
## What is this PR for?
fix(util.terminal) recorrect the shellredir and shellpip options for
powershell.
                                                          
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Does this PR fix an existing issue?

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

## Checklist

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

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2024-06-25 06:38:11 +02:00
Iordanis Petkakis
8ea3f690e6
fix(lazygit): use lazy.util.open on Neovim <= 0.10 (#3778)
## What is this PR for?
Use `lazy.util.open` on Neovim <=0.10
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Does this PR fix an existing issue?
Closes #3776
<!--
  If this PR fixes any issues, please link to the issue here.
  Fixes #<issue_number>
-->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-06-23 15:38:27 +02:00
Iordanis Petkakis
b47c65f408
fix(statuscolumn): fix folds_open = true (#3756)
After some recent changes in https://github.com/neovim/neovim/pull/28709
I was getting an error when the user had `folds_open = true` in his
personal configuration whenever he pressed `o/O`. This is an attempt to
fix that.

## What is this PR for?

I was getting an error with `folds_open = true` in the user
configuration whenever pressing `o/O` or pressing `Enter` for a new
line.
The error was `Error executing lua:
...e/jrn23/projects/plugins/LazyVim/lua/lazyvim/util/ui.lua:127: attempt
to index a number value`.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Does this PR fix an existing issue?
No
<!--
  If this PR fixes any issues, please link to the issue here.
  Fixes #<issue_number>
-->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-06-21 21:15:32 +02:00
Folke Lemaitre
d4991d5aac
fix(root): also check root_dir. Fixes #3732 2024-06-19 18:25:58 +02:00
Iordanis Petkakis
1a295c5ef8
fix(statuscolumn): %r deprecated in nightly and %l handles everything (#3719)
## What is this PR for?

Fix correctly showing relative numbers in `statuscolumn` after recent
breaking changes on
[nightly](https://github.com/neovim/neovim/pull/29357).

Please feel free to disregard this PR if a better solution is possible.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Does this PR fix an existing issue?
Fixes #3721 
<!--
  If this PR fixes any issues, please link to the issue here.
  Fixes #<issue_number>
-->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-06-18 18:42:34 +02:00
Folke Lemaitre
d9caee6100
fix(git): removed debug info 2024-06-17 19:53:30 +02:00
morland
1f034e1600
fix(lazygit): support monorepo structure and other git providers (#3701)
## What is this PR for?
- The current implementation doesn't support multi-module/monorepo
project where `<repo>/.git` can be `gitdir` alias to the main `.git`
folder. This PR uses the Git CLI to resolve remote URLs to better
support flexible project structure.
- This PR also adds the support to Bitbucket and GitLab

What's the problem of reading `.git/config`?
- Not all information available there. For instance, some large projects
will split a monorepo into smaller submodules, where `.git` is a file
that contains the `gitdir` alias.
- There's no promise that `.git/config` has to be existed. Git supports
multiple ways to store the git info outside of the default git directory
like using `GIT_DIR` env variable.
- Have to do lot of reading and parsing logic.

Why `git remote -v`?
- Only contains remote info with explicit format. 
- Don't have to filter out other config info. 
- Don't have to deal with lots of weird edge cases.



## Does this PR fix an existing issue?
No.

## Checklist
- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-06-17 19:52:40 +02:00
Folke Lemaitre
05e45e0d35
refactor: LazyVim.config 2024-06-16 15:35:38 +02:00