211 lines
6.2 KiB
Lua
211 lines
6.2 KiB
Lua
vim.opt.shell = "zsh"
|
|
|
|
vim.opt.history = 1000
|
|
vim.opt.termguicolors = true
|
|
vim.opt.background = "dark"
|
|
|
|
vim.opt.mouse = "" -- disable
|
|
-- vim.opt.ruler = true -- Position at the bottom of the screen
|
|
vim.opt.joinspaces = false
|
|
vim.opt.hidden = true
|
|
vim.opt.previewheight = 5
|
|
--
|
|
vim.opt.shortmess = vim.o.shortmess .. "atI"
|
|
vim.opt.lazyredraw = true
|
|
vim.opt.splitbelow = true
|
|
vim.opt.splitright = true
|
|
|
|
vim.opt.cursorline = true
|
|
vim.opt.cursorcolumn = true
|
|
|
|
-- Global settings
|
|
vim.opt.autochdir = false -- Keep vim's directory context same as the current buffer
|
|
vim.opt.listchars = "tab:> ,trail:.,extends:$,nbsp:_"
|
|
vim.opt.fillchars = "fold:-"
|
|
|
|
-- Search
|
|
vim.opt.hlsearch = true
|
|
vim.opt.incsearch = true
|
|
vim.opt.ignorecase = true
|
|
vim.opt.wildmode = "list:longest" -- Autocomplete
|
|
|
|
-- Buffer settings
|
|
vim.opt.autoindent = true
|
|
vim.opt.expandtab = true
|
|
vim.opt.shiftwidth = 2
|
|
vim.opt.softtabstop = 4
|
|
vim.opt.tabstop = 2
|
|
vim.opt.undofile = true
|
|
|
|
vim.opt.number = true
|
|
vim.opt.relativenumber = true
|
|
|
|
vim.cmd 'colorscheme bamboo'
|
|
vim.g.floaterm_keymap_toggle = '<F9>'
|
|
vim.g.floaterm_width = 0.9
|
|
vim.g.floaterm_height = 0.9
|
|
vim.g.floaterm_shell = "/bin/bash"
|
|
|
|
vim.g.rustfmt_autosave = 1
|
|
vim.g.rust_use_custom_ctags_defs = 1
|
|
|
|
|
|
vim.g.tagbar_autofocus=1
|
|
-- vim.g.UltiSnipsExpandTrigger="<C-Tab>"
|
|
-- vim.g.UltiSnipsJumpForwardTrigger="<C-b>"
|
|
-- vim.g.UltiSnipsJumpBackwardTrigger="<C-z>"
|
|
|
|
|
|
-- Highlight yank
|
|
vim.api.nvim_command([[
|
|
au TextYankPost * lua vim.highlight.on_yank {higroup="IncSearch", timeout=150, on_visual=true}
|
|
]])
|
|
|
|
-- TODO: ... the rest of plugin/legacy.vim
|
|
|
|
local map = vim.api.nvim_set_keymap
|
|
local function t(str) -- Convert termcodes for mapping
|
|
return vim.api.nvim_replace_termcodes(str, true, true, true)
|
|
end
|
|
|
|
local check_back_space = function()
|
|
local col = vim.fn.col(".") - 1
|
|
if col == 0 or vim.fn.getline("."):sub(col, col):match("%s") then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
_G.tab_complete = function()
|
|
if vim.fn.pumvisible() == 1 then
|
|
return t("<C-n>")
|
|
elseif vim.fn.call("vsnip#available", { 1 }) == 1 then
|
|
return t("<Plug>(vsnip-expand-or-jump)")
|
|
elseif check_back_space() then
|
|
return t("<Tab>")
|
|
else
|
|
return vim.fn["compe#complete"]()
|
|
end
|
|
end
|
|
_G.s_tab_complete = function()
|
|
if vim.fn.pumvisible() == 1 then
|
|
return t("<C-p>")
|
|
elseif vim.fn.call("vsnip#jumpable", { -1 }) == 1 then
|
|
return t("<Plug>(vsnip-jump-prev)")
|
|
else
|
|
-- If <S-Tab> is not working in your terminal, change it to <C-h>
|
|
return t("<S-Tab>")
|
|
end
|
|
end
|
|
|
|
-- vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", { expr = true })
|
|
-- vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", { expr = true })
|
|
-- vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", { expr = true })
|
|
-- vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", { expr = true })
|
|
|
|
map("v", ">", ">gv", {}) -- Retain visual select when indenting
|
|
map("v", "<", "<gv", {}) -- Retain visual select when indenting
|
|
|
|
|
|
vim.api.nvim_set_keymap("n", "<Leader>bq",":bp <BAR> bd #<CR>", {silent=true})
|
|
|
|
vim.api.nvim_set_keymap("n", "<Leader>ff", ":Telescope find_files<cr>", {silent=true})
|
|
vim.api.nvim_set_keymap("n", "<Leader>fg", ":Telescope live_grep<cr>", {silent=true})
|
|
vim.api.nvim_set_keymap("n", "<Leader>fb", ":Telescope buffers<cr>", {silent=true})
|
|
vim.api.nvim_set_keymap("n", "<Leader>fa", ":Ag<cr>", {silent=true})
|
|
|
|
-- vim.api.nvim_set_keymap("n", "<Leader>fp", ":Telescope projects<cr>", {silent=true})
|
|
-- vim.api.nvim_set_keymap("n", "<leader>gb",":.GBrowse<CR>", {silent=true})
|
|
-- vim.api.nvim_set_keymap("n", "<F2>",":SearchSession<CR>", {silent = true })
|
|
|
|
vim.api.nvim_set_keymap("n", "<C-J>", ":bprev<CR>", {silent = true})
|
|
vim.api.nvim_set_keymap("n", "<C-K>", ":bnext<CR>", {silent = true})
|
|
vim.api.nvim_set_keymap("n", "<C-o>", ":NERDTreeToggle<CR>", {silent = true})
|
|
|
|
vim.api.nvim_set_keymap("n", "<F1>", ":set invrnu<CR>", {silent = true })
|
|
vim.api.nvim_set_keymap("i", "<F1>", "<Esc>", {silent = true })
|
|
vim.api.nvim_set_keymap("n", "<F8>", ":Tagbar<CR>", {silent = true })
|
|
vim.api.nvim_set_keymap("n", "<F9>", ":FloatermToggle<CR>", {silent = true })
|
|
|
|
|
|
-- LSP Diagnostics Options Setup
|
|
local sign = function(opts)
|
|
vim.fn.sign_define(opts.name, {
|
|
texthl = opts.name,
|
|
text = opts.text,
|
|
numhl = ''
|
|
})
|
|
end
|
|
|
|
sign({name = 'DiagnosticSignError', text = ''})
|
|
sign({name = 'DiagnosticSignWarn', text = ''})
|
|
sign({name = 'DiagnosticSignHint', text = ''})
|
|
sign({name = 'DiagnosticSignInfo', text = ''})
|
|
|
|
vim.diagnostic.config({
|
|
virtual_text = false,
|
|
signs = true,
|
|
update_in_insert = true,
|
|
underline = true,
|
|
severity_sort = false,
|
|
float = {
|
|
border = 'rounded',
|
|
source = 'always',
|
|
header = '',
|
|
prefix = '',
|
|
},
|
|
})
|
|
|
|
vim.cmd([[
|
|
set signcolumn=yes
|
|
autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false })
|
|
]])
|
|
|
|
|
|
|
|
|
|
-- Vimspector
|
|
-- KEYS
|
|
vim.cmd([[
|
|
nmap <Leader><F6> <cmd>call vimspector#Launch()<cr>
|
|
nmap <Leader><F7> <cmd>call vimspector#StepOver()<cr>
|
|
nmap <Leader><F4> <cmd>call vimspector#Reset()<cr>
|
|
nmap <Leader><F11> <cmd>call vimspector#StepOver()<cr>
|
|
nmap <Leader><F12> <cmd>call vimspector#StepOut()<cr>
|
|
nmap <Leader><F10> <cmd>call vimspector#StepInto()<cr>
|
|
nmap <Leader>Db <cmd>:call vimspector#ToggleBreakpoint()<cr>
|
|
nmap <Leader>Dw <cmd>:call vimspector#AddWatch()<cr>
|
|
nmap <Leader>De <cmd>:call vimspector#Evaluate()<cr>
|
|
]])
|
|
-- OPTS
|
|
vim.opt.completeopt = {'menuone', 'noselect', 'noinsert'}
|
|
vim.opt.shortmess = vim.opt.shortmess + { c = true}
|
|
vim.api.nvim_set_option('updatetime', 300)
|
|
-- Fixed column for diagnostics to appear
|
|
-- Show autodiagnostic popup on cursor hover_range
|
|
-- Goto previous / next diagnostic warning / error
|
|
-- Show inlay_hints more frequently
|
|
vim.cmd([[
|
|
set signcolumn=yes
|
|
autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false })
|
|
]])
|
|
vim.cmd([[
|
|
let g:vimspector_sidebar_width = 85
|
|
let g:vimspector_bottombar_height = 15
|
|
let g:vimspector_terminal_maxwidth = 70
|
|
]])
|
|
|
|
|
|
local cwd = vim.fn.getcwd()
|
|
|
|
-- Generate a server address based on the current directory
|
|
local server_address = "/tmp/nvim_" .. cwd:gsub("/", "_"):gsub("\\", "_")
|
|
local success = pcall(vim.fn.serverstart, server_address)
|
|
|
|
if not success then
|
|
-- print("Error: Unable to start Neovim server. The address '" .. server_address .. "' is already in use.")
|
|
else
|
|
print("Neovim is listening on: " .. server_address)
|
|
end
|