sidebar_position |
---|
6 |
override nvim-cmp and add cmp-emoji
{
"hrsh7th/nvim-cmp",
dependencies = { "hrsh7th/cmp-emoji" },
---@param opts cmp.ConfigSchema
opts = function(_, opts)
table.insert(opts.sources, { name = "emoji" })
end,
}
Use <tab>
for completion and snippets (supertab).
{
"hrsh7th/nvim-cmp",
---@param opts cmp.ConfigSchema
opts = function(_, opts)
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
local cmp = require("cmp")
opts.mapping = vim.tbl_extend("force", opts.mapping, {
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
-- You could replace select_next_item() with confirm({ select = true }) to get VS Code autocompletion behavior
cmp.select_next_item()
elseif vim.snippet.active({ direction = 1 }) then
vim.schedule(function()
vim.snippet.jump(1)
end)
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif vim.snippet.active({ direction = -1 }) then
vim.schedule(function()
vim.snippet.jump(-1)
end)
else
fallback()
end
end, { "i", "s" }),
})
end,
}
{
"echasnovski/mini.surround",
opts = {
mappings = {
add = "gsa",
delete = "gsd",
find = "gsf",
find_left = "gsF",
highlight = "gsh",
replace = "gsr",
update_n_lines = "gsn",
},
},
}
{
"folke/tokyonight.nvim",
opts = {
transparent = true,
styles = {
sidebars = "transparent",
floats = "transparent",
},
},
}
{
"neovim/nvim-lspconfig",
opts = {
setup = {
clangd = function(_, opts)
opts.capabilities.offsetEncoding = { "utf-16" }
end,
},
},
}
The recommended setup to integrate prettier with linters is to not integrate it with eslint. For this config, we have two extras, to enable eslint fix on save and enable the prettier formatter with null-ls.
Add the below to your lua/config/lazy.lua
file
{
{ import = "lazyvim.plugins.extras.linting.eslint" },
{ import = "lazyvim.plugins.extras.formatting.prettier" },
}
If your project is using eslint with eslint-plugin-prettier, then this will automatically fix eslint errors and format with prettier on save. Important: make sure not to add prettier to null-ls, otherwise this won't work!
{
"neovim/nvim-lspconfig",
opts = {
servers = { eslint = {} },
setup = {
eslint = function()
require("lazyvim.util").lsp.on_attach(function(client)
if client.name == "eslint" then
client.server_capabilities.documentFormattingProvider = true
elseif client.name == "tsserver" then
client.server_capabilities.documentFormattingProvider = false
end
end)
end,
},
},
}
Automatically returns to the dashboard when the buffer is empty.
Add the below to your lua/config/autocmds.lua
file
vim.api.nvim_create_autocmd("BufDelete", {
group = vim.api.nvim_create_augroup("dashboard_on_empty", { clear = true }),
callback = function(args)
local deleted_name = vim.api.nvim_buf_get_name(args.buf)
local deleted_ft = vim.api.nvim_get_option_value("filetype", { buf = args.buf })
local dashboard_on_empty = (deleted_name == "" and deleted_ft == "")
or (vim.api.nvim_buf_get_name(0) == "" and vim.api.nvim_get_option_value("filetype", { buf = 0 }) == "")
if dashboard_on_empty then
vim.cmd("Dashboard")
end
end,
})