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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
|
--[[
This is the first neovim configuration file.
It in fact load lazy vim first.
--]]
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
"https://github.com/vim-airline/vim-airline",
"https://github.com/ggandor/leap.nvim",
"https://github.com/junegunn/fzf",
"https://github.com/junegunn/fzf.vim",
"https://github.com/dpelle/vim-Grammalecte",
"https://github.com/dense-analysis/ale.git",
"https://github.com/nvim-treesitter/nvim-treesitter", -- Syntax LSP
"https://github.com/neoclide/coc.nvim.git",
"https://github.com/kyazdani42/nvim-tree.lua", -- File explorer
"https://github.com/fidian/hexmode.git",
"https://github.com/tpope/vim-surround",
"https://github.com/godlygeek/tabular",
"https://github.com/AndrewRadev/tagalong.vim",
"https://github.com/MunifTanjim/nui.nvim",
"https://github.com/jparise/vim-graphql",
"https://github.com/rust-lang/rust.vim",
"https://github.com/hail2u/vim-css3-syntax",
"https://github.com/tmhedberg/SimpylFold",
"https://github.com/pangloss/vim-javascript",
"https://github.com/khaveesh/vim-fish-syntax",
"https://github.com/moll/vim-node",
"https://github.com/evanleck/vim-svelte",
"https://github.com/ray-x/go.nvim",
"https://github.com/kyazdani42/nvim-tree.lua",
"https://github.com/junegunn/rainbow_parentheses.vim",
"https://github.com/nanotech/jellybeans.vim",
"https://github.com/honza/vim-snippets",
"https://gitlab.com/HiPhish/rainbow-delimiters.nvim",
"https://github.com/ray-x/starry.nvim",
"https://github.com/nvim-tree/nvim-web-devicons",
"https://github.com/nvim-lua/plenary.nvim",
"https://github.com/andymass/vim-matchup",
"KostkaBrukowa/definition-or-references.nvim",
"ray-x/go.nvim",
"FabijanZulj/blame.nvim",
{
"tversteeg/registers.nvim",
cmd = "Registers",
config = true,
keys = {
{ "\"", mode = { "n", "v" } },
{ "<C-R>", mode = "i" }
},
name = "registers",
},
dependencies = { -- optional packages
"ray-x/guihua.lua",
"neovim/nvim-lspconfig",
"nvim-treesitter/nvim-treesitter",
},
config = function()
require("go").setup()
end,
event = {"CmdlineEnter"},
ft = {"go", 'gomod'},
build = ':lua require("go.install").update_all_sync()' -- if you need to install/update all binaries
})
require('leap').set_default_keymaps()
-- Nvim-tree keymap function
local function my_on_attach(bufnr)
local api = require('nvim-tree.api')
local function opts(desc)
return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
end
api.config.mappings.default_on_attach(bufnr)
vim.keymap.set('n', 'A', api.tree.expand_all, opts('Expand All'))
vim.keymap.set('n', '?', api.tree.toggle_help, opts('Help'))
vim.keymap.set('n', 'P', function()
local node = api.tree.get_node_under_cursor()
print(node.absolute_path)
end, opts('Print Node Path'))
vim.keymap.set('n', 'Z', api.node.run.system, opts('Run System'))
vim.keymap.set('n', 'u', api.tree.change_root_to_parent, opts('Up'))
end
-- disable netrw at the very start of your init.lua (strongly advised)
vim.g.loaded = 1
vim.g.loaded_netrwPlugin = 1
-- Setup with some options
require("nvim-tree").setup({
sort_by = "case_sensitive",
on_attach = my_on_attach,
view = {
adaptive_size = true,
},
renderer = {
group_empty = true,
},
filters = {
dotfiles = true,
},
tab = {
sync = {
open = true,
close = true,
ignore = {}
}
},
update_focused_file = {
enable = true,
update_cwd = true,
},
})
vim.g.nvim_tree_respect_buf_cwd = 1
vim.g.tabby_node_binary = '/usr/bin/node'
--[[
require('go').setup({
disable_defaults = false, -- true|false when true set false to all boolean settings and replace all table
-- settings with {}
go='go', -- go command, can be go[default] or go1.18beta1
goimport='gofumpt', -- goimport command, can be gopls[default] or either goimport or golines if need to split long lines
fillstruct = 'fillstruct', -- default, can also use fillstruct
gofmt = 'gofumpt', --gofmt cmd,
max_line_len = 128, -- max line length in golines format, Target maximum line length for golines
tag_transform = false, -- can be transform option("snakecase", "camelcase", etc) check gomodifytags for details and more options
tag_options = 'json=omitempty', -- sets options sent to gomodifytags, i.e., json=omitempty
gotests_template = "", -- sets gotests -template parameter (check gotests for details)
gotests_template_dir = "", -- sets gotests -template_dir parameter (check gotests for details)
comment_placeholder = '' , -- comment_placeholder your cool placeholder e.g.
icons = {breakpoint = '🧘', currentpos = '🏃'}, -- setup to `false` to disable icons setup
verbose = false, -- output loginf in messages
lsp_cfg = false, -- true: use non-default gopls setup specified in go/lsp.lua
-- false: do nothing
-- if lsp_cfg is a table, merge table with with non-default gopls setup in go/lsp.lua, e.g.
-- lsp_cfg = {settings={gopls={matcher='CaseInsensitive', ['local'] = 'your_local_module_path', gofumpt = true }}}
lsp_gofumpt = true, -- true: set default gofmt in gopls format to gofumpt
lsp_on_attach = nil, -- nil: use on_attach function defined in go/lsp.lua,
-- when lsp_cfg is true
-- if lsp_on_attach is a function: use this function as on_attach function for gopls
lsp_keymaps = true, -- set to false to disable gopls/lsp keymap
lsp_codelens = true, -- set to false to disable codelens, true by default, you can use a function
-- function(bufnr)
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<space>F", "<cmd>lua vim.lsp.buf.formatting()<CR>", {noremap=true, silent=true})
-- end
-- to setup a table of codelens
diagnostic = { -- set diagnostic to false to disable vim.diagnostic setup
hdlr = false, -- hook lsp diag handler and send diag to quickfix
underline = true,
-- virtual text setup
virtual_text = { spacing = 0, prefix = '■' },
signs = true,
update_in_insert = false,
},
lsp_document_formatting = false,
-- set to true: use gopls to format
-- false if you want to use other formatter tool(e.g. efm, nulls)
lsp_inlay_hints = {
enable = true,
-- hint style, set to 'eol' for end-of-line hints, 'inlay' for inline hints
-- inlay only avalible for 0.10.x
style = 'inlay',
-- Note: following setup only works for style = 'eol', you do not need to set it for 'inlay'
-- Only show inlay hints for the current line
only_current_line = false,
-- Event which triggers a refersh of the inlay hints.
-- You can make this "CursorMoved" or "CursorMoved,CursorMovedI" but
-- not that this may cause higher CPU usage.
-- This option is only respected when only_current_line and
-- autoSetHints both are true.
only_current_line_autocmd = "CursorHold",
-- whether to show variable name before type hints with the inlay hints or not
-- default: false
show_variable_name = true,
-- prefix for parameter hints
parameter_hints_prefix = " ",
show_parameter_hints = true,
-- prefix for all the other hints (type, chaining)
other_hints_prefix = "=> ",
-- whether to align to the lenght of the longest line in the file
max_len_align = false,
-- padding from the left if max_len_align is true
max_len_align_padding = 1,
-- whether to align to the extreme right or not
right_align = false,
-- padding from the right if right_align is true
right_align_padding = 6,
-- The color of the hints
highlight = "Comment",
},
gopls_cmd = "gofumpt", -- if you need to specify gopls path and cmd, e.g {"/home/user/lsp/gopls", "-logfile","/var/log/gopls.log" }
gopls_remote_auto = true, -- add -remote=auto to gopls
gocoverage_sign = "█",
sign_priority = 5, -- change to a higher number to override other signs
dap_debug = true, -- set to false to disable dap
dap_debug_keymap = true, -- true: use keymap for debugger defined in go/dap.lua
-- false: do not use keymap in go/dap.lua. you must define your own.
-- Windows: Use Visual Studio keymap
dap_debug_gui = {}, -- bool|table put your dap-ui setup here set to false to disable
dap_debug_vt = { enabled_commands = true, all_frames = true }, -- bool|table put your dap-virtual-text setup here set to false to disable
dap_port = 38697, -- can be set to a number, if set to -1 go.nvim will pick up a random port
dap_timeout = 15, -- see dap option initialize_timeout_sec = 15,
dap_retries = 20, -- see dap option max_retries
build_tags = "tag1,tag2", -- set default build tags
textobjects = true, -- enable default text jobects through treesittter-text-objects
test_runner = 'go', -- one of {`go`, `richgo`, `dlv`, `ginkgo`, `gotestsum`}
verbose_tests = true, -- set to add verbose flag to tests deprecated, see '-v' option
run_in_floaterm = false, -- set to true to run in a float window. :GoTermClose closes the floatterm
-- float term recommend if you use richgo/ginkgo with terminal color
floaterm = { -- position
posititon = 'auto', -- one of {`top`, `bottom`, `left`, `right`, `center`, `auto`}
width = 0.45, -- width of float window if not auto
height = 0.98, -- height of float window if not auto
title_colors = 'nord', -- default to nord, one of {'nord', 'tokyo', 'dracula', 'rainbow', 'solarized ', 'monokai'}
-- can also set to a list of colors to define colors to choose from
-- e.g {'#D8DEE9', '#5E81AC', '#88C0D0', '#EBCB8B', '#A3BE8C', '#B48EAD'}
},
trouble = false, -- true: use trouble to open quickfix
test_efm = false, -- errorfomat for quickfix, default mix mode, set to true will be efm only
luasnip = false, -- enable included luasnip snippets. you can also disable while add lua/snips folder to luasnip load
-- Do not enable this if you already added the path, that will duplicate the entries
on_jobstart = function(cmd) _=cmd end, -- callback for stdout
on_stdout = function(err, data) _, _ = err, data end, -- callback when job started
on_stderr = function(err, data) _, _ = err, data end, -- callback for stderr
on_exit = function(code, signal, output) _, _, _ = code, signal, output end, -- callback for jobexit, output : string
iferr_vertical_shift = 4 -- defines where the cursor will end up vertically from the begining of if err statement
})
local format_sync_grp = vim.api.nvim_create_augroup("GoFormat", {})
vim.api.nvim_create_autocmd("BufWritePre", {
pattern = "*.go",
callback = function()
require('go.format')
end,
group = format_sync_grp,
})
--]]
-- Init starry colorsheme
local config = {
border = false, -- Split window borders
italics = {
comments = false, -- Italic comments
strings = false, -- Italic strings
keywords = false, -- Italic keywords
functions = false, -- Italic functions
variables = false -- Italic variables
},
contrast = { -- Select which windows get the contrast background
enable = true, -- Enable contrast
terminal = true, -- Darker terminal
filetypes = {}, -- Which filetypes get darker? e.g. *.vim, *.cpp, etc.
},
text_contrast = {
lighter = false, -- Higher contrast text for lighter style
darker = false -- Higher contrast text for darker style
},
disable = {
background = false, -- true: transparent background
term_colors = false, -- Disable setting the terminal colors
eob_lines = false -- Make end-of-buffer lines invisible
},
style = {
name = 'moonlight', -- Theme style name (moonlight, earliestsummer, etc.)
-- " other themes: dracula, oceanic, dracula_blood, 'deep ocean', darker, palenight, monokai, mariana, emerald, middlenight_blue
disable = {}, -- a list of styles to disable, e.g. {'bold', 'underline'}
fix = true,
darker_contrast = false, -- More contrast for darker style
daylight_swith = false, -- Enable day and night style switching
deep_black = false, -- Enable a deeper black background
},
custom_colors = {
variable = '#f797d7',
},
custom_highlights = {
LineNr = { fg = '#777777' },
Idnetifier = { fg = '#ff4797' },
}
}
require('starry').setup(config)
require('starry.functions').change_style("dracula")
|