-
Notifications
You must be signed in to change notification settings - Fork 135
Expand file tree
/
Copy pathrecipes.lua
More file actions
148 lines (139 loc) · 4.09 KB
/
recipes.lua
File metadata and controls
148 lines (139 loc) · 4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
return {
-- ## Add a `nvim-cmp` source
--
-- 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,
},
-- ## Supertab for nvim-cmp
--
-- 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,
},
-- ## Supertab for blink.cmp
--
-- Use `<tab>` for completion and snippets (supertab).
{
"Saghen/blink.cmp",
opts = {
keymap = {
preset = "enter",
["<Tab>"] = { "select_next", "fallback" },
["<S-Tab>"] = { "select_prev", "fallback" },
},
},
},
-- ## Change surround mappings
{
"echasnovski/mini.surround",
opts = {
mappings = {
add = "gsa",
delete = "gsd",
find = "gsf",
find_left = "gsF",
highlight = "gsh",
replace = "gsr",
update_n_lines = "gsn",
},
},
},
-- ## Make TokyoNight Transparent
{
"folke/tokyonight.nvim",
opts = {
transparent = true,
styles = {
sidebars = "transparent",
floats = "transparent",
},
},
},
-- ## Fix clangd offset encoding
{
"neovim/nvim-lspconfig",
opts = {
setup = {
clangd = function(_, opts)
opts.capabilities.offsetEncoding = { "utf-16" }
end,
},
},
},
-- ## Use Eslint for fix on save and prettier for formatting
--
-- The [recommended](https://prettier.io/docs/en/integrating-with-linters.html) 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" },
},
-- ## Add Eslint and use it for formatting
--
-- If your project is using eslint with [eslint-plugin-prettier](https://github.com/prettier/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,
},
},
},
}