Compare commits

...
15 Commits
Author SHA1 Message Date
Folke Lemaitre b35442dfe7 docs: added grug-far to news 2024-07-20 20:41:39 +02:00
Folke Lemaitre d58e4c4f89 perf: disable mini.anitmate in grug-far buffers 2024-07-20 17:41:59 +02:00
Folke Lemaitre 5adec47431 feat: use selection when in visual mode 2024-07-20 17:41:59 +02:00
Folke Lemaitre 68cf175176 feat: added grug-far to close with q 2024-07-20 17:41:59 +02:00
Folke Lemaitre 90a3afac38 feat(editor): replace nvim-spectre with grug-far.nvim 2024-07-20 17:41:58 +02:00
Folke Lemaitre eed91a3e4c fix(conform): changes for new conform.nvim config 2024-07-20 17:14:07 +02:00
Folke Lemaitre 3d1f961232 refactor: which-key mappings 2024-07-20 17:04:01 +02:00
folke 6f91b406dd chore(build): auto-generate docs 2024-07-20 09:49:07 +00:00
abeldekatandabeldekat 578f06e140 perf(core): defer clipboard because xsel and pbcopy can be slow (#4120)
## Description

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

See [this](https://github.com/LazyVim/LazyVim/discussions/4112)
discussion

TLDR: 
Startup time performance is affected quite significantly when the
clipboard provider is `xsel`(linux) or `pbcopy`(macos). I expect an
improvement in these cases, especially on older pc's.

This PR resets `vim.opt.clipboard` after the `options` are loaded. Then,
on `VeryLazy`, the setting is restored.

I also tested with `yanky`.

Relevant prints:

1. Before resetting `vim.opt.clipboard` in `init`,
`vim.print(vim.opt.clipboard)` yields a table which will be captured:

```lua
--- fields
_name = "clipboard",
_value = "unnamedplus",
--- more fields
```

2. Set `vim.opt.clipboard = ""` and `vim.print(vim.opt.clipboard)`, also
yields a table:

```lua
--- fields
_name = "clipboard",
_value = "",
--- more fields
```


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

Co-authored-by: abeldekat <abel@nomail.com>
2024-07-20 11:48:11 +02:00
github-actions[bot] 64afb5f007 chore(main): release 12.33.0 (#4102)
🤖 I have created a release *beep* *boop*
---


##
[12.33.0](https://github.com/LazyVim/LazyVim/compare/v12.32.0...v12.33.0)
(2024-07-19)


### Features

* **extras:** improve ruby extra by letting user chose
([#3652](https://github.com/LazyVim/LazyVim/issues/3652))
([7839498](https://github.com/LazyVim/LazyVim/commit/783949810855556dd12ed2685e62fb37a4c9504d))
* **lang:** add Lean 4 support
([#4080](https://github.com/LazyVim/LazyVim/issues/4080))
([3e29fdf](https://github.com/LazyVim/LazyVim/commit/3e29fdf478383034c48477dd04fd433a7c9327ee))
* **lang:** add OCaml
([#4079](https://github.com/LazyVim/LazyVim/issues/4079))
([a219e10](https://github.com/LazyVim/LazyVim/commit/a219e105b0e86316edfedb57f1fa267a764eab13))


### Bug Fixes

* **ui:** trouble lualine component
([f9fdb35](https://github.com/LazyVim/LazyVim/commit/f9fdb356f2362e5ae4ef490944b1957b49dc6680))

---
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>
2024-07-19 11:50:05 +02:00
Kevin Robayna 7839498108 feat(extras): improve ruby extra by letting user chose (#3652)
## What is this PR for?

Shopify started working on its own LSP
(https://github.com/Shopify/ruby-lsp) and it performs way better than
Solargraph which has a lot of limitations. This paired with sorbet gives
better IntelliSense when navigating the code.

This PR follows the same approach as Python and lets the user configure
through vim.g options the lsp and formatter for ruby, without overriding
any configuration.

## Does this PR fix an existing issue?

One caveat though is that RubyLsp does not work very well with NeoVim <
0.10 https://github.com/Shopify/ruby-lsp/blob/main/EDITORS.md#neovim

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-07-19 11:09:57 +02:00
Ben PuryearandFolke Lemaitre 3e29fdf478 feat(lang): add Lean 4 support (#4080)
## Description

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

Adds language support for lean, a popular proof assistant and theorem
prover.

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

Language Server

<img width="1510" alt="lsp"
src="https://github.com/user-attachments/assets/28c29cae-eca4-4dfa-a4a4-462551f5cfd8">

Lean Execution (infobox on the right)

<img width="1510" alt="goals"
src="https://github.com/user-attachments/assets/e195dbeb-70d6-4f09-90bf-dbe289423bec">

Keymaps

<img width="1510" alt="keymaps"
src="https://github.com/user-attachments/assets/2451c3d2-b855-4fb5-9d30-33305274c52c">

Many More Commands

<img width="1510" alt="lots of commands"
src="https://github.com/user-attachments/assets/e7b7eb1d-0f4e-4d3c-a58b-a87eb7e0319c">

## 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-19 09:38:55 +02:00
folke 5795be3c19 chore(build): auto-generate docs 2024-07-19 07:34:55 +00:00
Ben Puryear a219e105b0 feat(lang): add OCaml (#4079)
## Description

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

Adds an extra that adds language support for ocaml.

Adds LSP and completions. Fairly simple/small config.

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

<img width="1510" alt="lsp ocaml"
src="https://github.com/user-attachments/assets/0e44c539-332c-415d-9225-bcbb61f37666">


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-07-19 09:33:49 +02:00
Folke Lemaitre f9fdb356f2 fix(ui): trouble lualine component 2024-07-18 15:45:53 +02:00
14 changed files with 295 additions and 45 deletions

No files matched your search

+1 -1
View File
@@ -1,3 +1,3 @@
{
".": "12.32.0"
".": "12.33.0"
}
+14
View File
@@ -1,5 +1,19 @@
# Changelog
## [12.33.0](https://github.com/LazyVim/LazyVim/compare/v12.32.0...v12.33.0) (2024-07-19)
### Features
* **extras:** improve ruby extra by letting user chose ([#3652](https://github.com/LazyVim/LazyVim/issues/3652)) ([7839498](https://github.com/LazyVim/LazyVim/commit/783949810855556dd12ed2685e62fb37a4c9504d))
* **lang:** add Lean 4 support ([#4080](https://github.com/LazyVim/LazyVim/issues/4080)) ([3e29fdf](https://github.com/LazyVim/LazyVim/commit/3e29fdf478383034c48477dd04fd433a7c9327ee))
* **lang:** add OCaml ([#4079](https://github.com/LazyVim/LazyVim/issues/4079)) ([a219e10](https://github.com/LazyVim/LazyVim/commit/a219e105b0e86316edfedb57f1fa267a764eab13))
### Bug Fixes
* **ui:** trouble lualine component ([f9fdb35](https://github.com/LazyVim/LazyVim/commit/f9fdb356f2362e5ae4ef490944b1957b49dc6680))
## [12.32.0](https://github.com/LazyVim/LazyVim/compare/v12.31.0...v12.32.0) (2024-07-18)
+3
View File
@@ -2,6 +2,9 @@
## 12.x
- [nvim-spectre](https://github.com/nvim-pack/nvim-spectre) has been removed in favor of [grug-far.nvim](https://github.com/MagicDuck/grug-far.nvim).
**grug-far.nvim** has a great UI and feels more intuitive to use.
- This **news** is now also available on the website at [https://www.lazyvim.org/news](https://www.lazyvim.org/news)
- **prettier** extra now works for all prettier supported filetypes
+1 -1
View File
@@ -1,4 +1,4 @@
*LazyVim.txt* For Neovim Last change: 2024 July 18
*LazyVim.txt* For Neovim Last change: 2024 July 20
==============================================================================
Table of Contents *LazyVim-table-of-contents*
+1
View File
@@ -55,6 +55,7 @@ vim.api.nvim_create_autocmd("FileType", {
group = augroup("close_with_q"),
pattern = {
"PlenaryTestPopup",
"grug-far",
"help",
"lspinfo",
"notify",
+8 -1
View File
@@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util")
---@class LazyVimConfig: LazyVimOptions
local M = {}
M.version = "12.32.0" -- x-release-please-version
M.version = "12.33.0" -- x-release-please-version
LazyVim.config = M
---@class LazyVimOptions
@@ -161,6 +161,7 @@ end
---@type LazyVimOptions
local options
local lazy_clipboard
---@param opts? LazyVimOptions
function M.setup(opts)
@@ -181,6 +182,9 @@ function M.setup(opts)
M.load("autocmds")
end
M.load("keymaps")
if lazy_clipboard ~= nil then
vim.opt.clipboard = lazy_clipboard
end
LazyVim.format.setup()
LazyVim.news.setup()
@@ -285,6 +289,9 @@ function M.init()
-- this is needed to make sure options will be correctly applied
-- after installing missing plugins
M.load("options")
-- defer built-in clipboard handling: "xsel" and "pbcopy" can be slow
lazy_clipboard = vim.opt.clipboard
vim.opt.clipboard = ""
if vim.g.deprecation_warnings == false then
vim.deprecate = function() end
+1
View File
@@ -47,6 +47,7 @@ vim.g.deprecation_warnings = false
vim.g.bigfile_size = 1024 * 1024 * 1.5 -- 1.5 MB
-- Show the current document symbols location from Trouble in lualine
-- You can disable this for a buffer by setting `vim.b.trouble_lualine = false`
vim.g.trouble_lualine = true
local opt = vim.opt
+33 -19
View File
@@ -128,13 +128,25 @@ return {
-- search/replace in multiple files
{
"nvim-pack/nvim-spectre",
build = false,
cmd = "Spectre",
opts = { open_cmd = "noswapfile vnew" },
-- stylua: ignore
"MagicDuck/grug-far.nvim",
opts = { headerMaxWidth = 80 },
cmd = "GrugFar",
keys = {
{ "<leader>sr", function() require("spectre").open() end, desc = "Replace in Files (Spectre)" },
{
"<leader>sr",
function()
local is_visual = vim.fn.mode():lower():find("v")
if is_visual then -- needed to make visual selection work
vim.cmd([[normal! v]])
end
local grug = require("grug-far");
(is_visual and grug.with_visual_selection or grug.grug_far)({
prefills = { filesFilter = "*." .. vim.fn.expand("%:e") },
})
end,
mode = { "n", "v" },
desc = "Search and Replace",
},
},
},
@@ -169,13 +181,6 @@ return {
{
mode = { "n", "v" },
{ "<leader><tab>", group = "tabs" },
{
"<leader>b",
group = "buffer",
expand = function()
return require("which-key.extras").expand.buf()
end,
},
{ "<leader>c", group = "code" },
{ "<leader>f", group = "file/find" },
{ "<leader>g", group = "git" },
@@ -183,6 +188,19 @@ return {
{ "<leader>q", group = "quit/session" },
{ "<leader>s", group = "search" },
{ "<leader>u", group = "ui", icon = { icon = "󰙵 ", color = "cyan" } },
{ "<leader>x", group = "diagnostics/quickfix", icon = { icon = "󱖫 ", color = "green" } },
{ "[", group = "prev" },
{ "]", group = "next" },
{ "g", group = "goto" },
{ "gs", group = "surround" },
{ "z", group = "fold" },
{
"<leader>b",
group = "buffer",
expand = function()
return require("which-key.extras").expand.buf()
end,
},
{
"<leader>w",
group = "windows",
@@ -191,12 +209,8 @@ return {
return require("which-key.extras").expand.win()
end,
},
{ "<leader>x", group = "diagnostics/quickfix", icon = { icon = "󱖫 ", color = "green" } },
{ "[", group = "prev" },
{ "]", group = "next" },
{ "g", group = "goto" },
{ "gs", group = "surround" },
{ "z", group = "fold" },
-- better descriptions
{ "gx", desc = "Open with system app" },
},
},
},
+125
View File
@@ -0,0 +1,125 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = { "lean" },
root = { "lean-toolchain" },
})
end,
"Julian/lean.nvim",
event = { "BufReadPre *.lean", "BufNewFile *.lean" },
dependencies = {
"nvim-lua/plenary.nvim",
},
-- see details below for full configuration options
opts = {
-- Enable the Lean language server(s)?
--
-- false to disable, otherwise should be a table of options to pass to `leanls`
--
-- See https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#leanls for details.
-- In particular ensure you have followed instructions setting up a callback
-- for `LspAttach` which sets your key bindings!
lsp = {
init_options = {
-- See Lean.Lsp.InitializationOptions for details and further options.
-- Time (in milliseconds) which must pass since latest edit until elaboration begins.
-- Lower values may make editing feel faster at the cost of higher CPU usage.
-- Note that lean.nvim changes the Lean default for this value!
editDelay = 0,
-- Whether to signal that widgets are supported.
hasWidgets = true,
},
},
ft = {
-- A list of patterns which will be used to protect any matching
-- Lean file paths from being accidentally modified (by marking the
-- buffer as `nomodifiable`).
nomodifiable = {
-- by default, this list includes the Lean standard libraries,
-- as well as files within dependency directories (e.g. `_target`)
-- Set this to an empty table to disable.
},
},
-- Abbreviation support
abbreviations = {
-- Enable expanding of unicode abbreviations?
enable = true,
-- additional abbreviations:
extra = {
-- Add a \wknight abbreviation to insert ♘
--
-- Note that the backslash is implied, and that you of
-- course may also use a snippet engine directly to do
-- this if so desired.
wknight = "",
},
-- Change if you don't like the backslash
-- (comma is a popular choice on French keyboards)
leader = "\\",
},
-- Enable suggested mappings?
--
-- false by default, true to enable
mappings = true,
-- Infoview support
infoview = {
-- Automatically open an infoview on entering a Lean buffer?
-- Should be a function that will be called anytime a new Lean file
-- is opened. Return true to open an infoview, otherwise false.
-- Setting this to `true` is the same as `function() return true end`,
-- i.e. autoopen for any Lean file, or setting it to `false` is the
-- same as `function() return false end`, i.e. never autoopen.
autoopen = true,
-- Set infoview windows' starting dimensions.
-- Windows are opened horizontally or vertically depending on spacing.
width = 50,
height = 20,
-- Put the infoview on the top or bottom when horizontal?
-- top | bottom
horizontal_position = "bottom",
-- Always open the infoview window in a separate tabpage.
-- Might be useful if you are using a screen reader and don't want too
-- many dynamic updates in the terminal at the same time.
-- Note that `height` and `width` will be ignored in this case.
separate_tab = false,
-- Show indicators for pin locations when entering an infoview window?
-- always | never | auto (= only when there are multiple pins)
indicators = "auto",
},
-- Progress bar support
progress_bars = {
-- Enable the progress bars?
enable = true,
-- What character should be used for the bars?
character = "",
-- Use a different priority for the signs
priority = 10,
},
-- Redirect Lean's stderr messages somehwere (to a buffer by default)
stderr = {
enable = true,
-- height of the window
height = 5,
-- a callback which will be called with (multi-line) stderr output
-- e.g., use:
-- on_lines = function(lines) vim.notify(lines) end
-- if you want to redirect stderr to `vim.notify`.
-- The default implementation will redirect to a dedicated stderr
-- window.
on_lines = nil,
},
},
}
+39
View File
@@ -0,0 +1,39 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = { "ml", "mli", "cmi", "cmo", "cmx", "cma", "cmxa", "cmxs", "cmt", "cmti", "opam" },
root = { "merlin.opam", "dune-project" },
})
end,
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
if type(opts.ensure_installed) == "table" then
vim.list_extend(opts.ensure_installed, { "ocaml" })
end
end,
},
{
"neovim/nvim-lspconfig",
opts = {
servers = {
ocamllsp = {
get_language_id = function(_, ftype)
return language_id_of[ftype]
end,
root_dir = function(fname)
return require("lspconfig.util").root_pattern(
"*.opam",
"esy.json",
"package.json",
".git",
"dune-project",
"dune-workspace",
"*.ml"
)(fname)
end,
},
},
},
},
}
+42 -1
View File
@@ -1,3 +1,17 @@
if lazyvim_docs then
-- LSP Server to use for Ruby.
-- Set to "solargraph" to use solargraph instead of ruby_lsp.
vim.g.lazyvim_ruby_lsp = "ruby_lsp"
vim.g.lazyvim_ruby_formatter = "rubocop"
end
local lsp = vim.g.lazyvim_ruby_lsp or "ruby_lsp"
if vim.fn.has("nvim-0.10") == 0 then
-- ruby_lsp does not work well with Neovim < 0.10
lsp = vim.g.lazyvim_ruby_lsp or "solargraph"
end
local formatter = vim.g.lazyvim_ruby_formatter or "rubocop"
return {
recommended = function()
return LazyVim.extras.wants({
@@ -11,12 +25,29 @@ return {
},
{
"neovim/nvim-lspconfig",
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
solargraph = {},
ruby_lsp = {
enabled = lsp == "ruby_lsp",
},
solargraph = {
enabled = lsp == "solargraph",
},
rubocop = {
enabled = formatter == "rubocop",
},
standardrb = {
enabled = formatter == "standardrb",
},
},
},
},
{
"williamboman/mason.nvim",
opts = { ensure_installed = { "erb-formatter", "erb-lint" } },
},
{
"mfussenegger/nvim-dap",
optional = true,
@@ -27,6 +58,16 @@ return {
end,
},
},
{
"stevearc/conform.nvim",
optional = true,
opts = {
formatters_by_ft = {
ruby = { formatter },
eruby = { "erb-format" },
},
},
},
{
"nvim-neotest/neotest",
optional = true,
@@ -14,6 +14,13 @@ return {
end, { expr = true })
end
vim.api.nvim_create_autocmd("FileType", {
pattern = "grug-far",
callback = function()
vim.b.minianimate_disable = true
end,
})
LazyVim.toggle.map("<leader>ua", {
name = "Mini Animate",
get = function()
+8 -7
View File
@@ -1,6 +1,6 @@
local M = {}
---@param opts ConformOpts
---@param opts conform.setupOpts
function M.setup(_, opts)
for _, key in ipairs({ "format_on_save", "format_after_save" }) do
if opts[key] then
@@ -10,6 +10,10 @@ function M.setup(_, opts)
opts[key] = nil
end
end
---@diagnostic disable-next-line: undefined-field
if opts.format then
LazyVim.warn("**conform.nvim** `opts.format` is deprecated. Please use `opts.default_format_opts` instead.")
end
require("conform").setup(opts)
end
@@ -37,8 +41,7 @@ return {
priority = 100,
primary = true,
format = function(buf)
local opts = LazyVim.opts("conform.nvim")
require("conform").format(LazyVim.merge({}, opts.format, { bufnr = buf }))
require("conform").format({ bufnr = buf })
end,
sources = function(buf)
local ret = require("conform").list_formatters(buf)
@@ -59,16 +62,14 @@ return {
"Please refer to the docs at https://www.lazyvim.org/plugins/formatting",
}, { title = "LazyVim" })
end
---@class ConformOpts
---@type conform.setupOpts
local opts = {
-- LazyVim will use these options when formatting with the conform.nvim formatter
format = {
default_format_opts = {
timeout_ms = 3000,
async = false, -- not recommended to change
quiet = false, -- not recommended to change
lsp_format = "fallback", -- not recommended to change
},
---@type table<string, conform.FormatterUnit[]>
formatters_by_ft = {
lua = { "stylua" },
fish = { "fish_indent" },
+12 -15
View File
@@ -199,24 +199,21 @@ return {
-- do not add trouble symbols if aerial is enabled
-- And allow it to be overriden for some buffer types (see autocmds)
if
vim.g.trouble_lualine_enabled ~= false
and vim.b.trouble_lualine_enabled ~= false
and LazyVim.has("trouble.nvim")
then
if vim.g.trouble_lualine and LazyVim.has("trouble.nvim") then
local trouble = require("trouble")
local symbols = trouble.statusline
and trouble.statusline({
mode = "symbols",
groups = {},
title = false,
filter = { range = true },
format = "{kind_icon}{symbol.name:Normal}",
hl_group = "lualine_c_normal",
})
local symbols = trouble.statusline({
mode = "symbols",
groups = {},
title = false,
filter = { range = true },
format = "{kind_icon}{symbol.name:Normal}",
hl_group = "lualine_c_normal",
})
table.insert(opts.sections.lualine_c, {
symbols and symbols.get,
cond = symbols and symbols.has,
cond = function()
return vim.b.trouble_lualine ~= false and symbols.has()
end,
})
end