|
|
|
@ -12,49 +12,7 @@ require "lazy-bootstrap"
|
|
|
|
|
-- Declare and setup plugins
|
|
|
|
|
require "plugins"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- [[ Setting options ]]
|
|
|
|
|
-- See `:help vim.o`
|
|
|
|
|
-- NOTE: You can change these options as you wish!
|
|
|
|
|
|
|
|
|
|
-- Disale Swap Files
|
|
|
|
|
vim.opt.swapfile = false
|
|
|
|
|
|
|
|
|
|
-- Set highlight on search
|
|
|
|
|
vim.o.hlsearch = true
|
|
|
|
|
|
|
|
|
|
-- Make line numbers default
|
|
|
|
|
vim.wo.number = true
|
|
|
|
|
|
|
|
|
|
-- Enable mouse mode
|
|
|
|
|
vim.o.mouse = 'a'
|
|
|
|
|
|
|
|
|
|
-- Sync clipboard between OS and Neovim.
|
|
|
|
|
vim.o.clipboard = 'unnamedplus'
|
|
|
|
|
|
|
|
|
|
-- Enable break indent
|
|
|
|
|
vim.o.breakindent = true
|
|
|
|
|
|
|
|
|
|
-- Save undo history
|
|
|
|
|
vim.o.undofile = true
|
|
|
|
|
|
|
|
|
|
-- Case-insensitive searching UNLESS \C or capital in search
|
|
|
|
|
vim.o.ignorecase = true
|
|
|
|
|
vim.o.smartcase = true
|
|
|
|
|
|
|
|
|
|
-- Keep signcolumn on by default
|
|
|
|
|
vim.wo.signcolumn = 'yes'
|
|
|
|
|
|
|
|
|
|
-- Decrease update time
|
|
|
|
|
vim.o.updatetime = 250
|
|
|
|
|
vim.o.timeout = true
|
|
|
|
|
vim.o.timeoutlen = 300
|
|
|
|
|
|
|
|
|
|
-- Set completeopt to have a better completion experience
|
|
|
|
|
vim.o.completeopt = 'menuone,noselect'
|
|
|
|
|
|
|
|
|
|
-- NOTE: You should make sure your terminal supports this
|
|
|
|
|
vim.o.termguicolors = true
|
|
|
|
|
require "editor-settings"
|
|
|
|
|
|
|
|
|
|
-- [[ Basic Keymaps ]]
|
|
|
|
|
|
|
|
|
@ -66,6 +24,9 @@ vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
|
|
|
|
|
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
|
|
|
|
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
|
|
|
|
|
|
|
|
|
-- Stop yanking on paste
|
|
|
|
|
vim.keymap.set('x', 'p', 'P')
|
|
|
|
|
|
|
|
|
|
-- [[ Highlight on yank ]]
|
|
|
|
|
-- See `:help vim.highlight.on_yank()`
|
|
|
|
|
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
|
|
|
|
@ -77,6 +38,20 @@ vim.api.nvim_create_autocmd('TextYankPost', {
|
|
|
|
|
pattern = '*',
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- Remove highlight search
|
|
|
|
|
vim.keymap.set('n', '<leader>l', ':nohls<cr>', { silent = true })
|
|
|
|
|
|
|
|
|
|
-- Split resize
|
|
|
|
|
vim.keymap.set('n', '<C-j>', ':res +1<cr>', { desc = 'Resize split' })
|
|
|
|
|
vim.keymap.set('n', '<C-k>', ':res -1<cr>', { desc = 'Resize split' })
|
|
|
|
|
vim.keymap.set('n', '<C-h>', ':vertical res -1<cr>', { desc = 'Resize split vertically' })
|
|
|
|
|
vim.keymap.set('n', '<C-l>', ':vertical res +1<cr>', { desc = 'Resize split vertically' })
|
|
|
|
|
|
|
|
|
|
-- Neotree mappings
|
|
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader><space>', ':Neotree toggle<cr>', { desc = 'File tree' })
|
|
|
|
|
vim.keymap.set('n', '<leader>nf', ':Neotree filesystem reveal<cr>', { desc = 'Reveal in file tree' })
|
|
|
|
|
|
|
|
|
|
-- [[ Configure Telescope ]]
|
|
|
|
|
-- See `:help telescope` and `:help telescope.setup()`
|
|
|
|
|
require('telescope').setup {
|
|
|
|
@ -94,20 +69,24 @@ require('telescope').setup {
|
|
|
|
|
pcall(require('telescope').load_extension, 'fzf')
|
|
|
|
|
|
|
|
|
|
-- See `:help telescope.builtin`
|
|
|
|
|
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
|
|
|
|
|
vim.keymap.set('n', '<leader>/', function()
|
|
|
|
|
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
|
|
|
|
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
|
|
|
|
|
winblend = 10,
|
|
|
|
|
previewer = false,
|
|
|
|
|
})
|
|
|
|
|
end, { desc = '[/] Fuzzily search in current buffer' })
|
|
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
|
|
|
|
|
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
|
|
|
|
|
|
|
|
|
|
-- vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
|
|
|
|
|
|
|
|
|
|
--[[
|
|
|
|
|
vim.keymap.set('n', '<leader>/', function()
|
|
|
|
|
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
|
|
|
|
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
|
|
|
|
|
winblend = 10,
|
|
|
|
|
previewer = false,
|
|
|
|
|
})
|
|
|
|
|
end, { desc = '[/] Fuzzily search in current buffer' })
|
|
|
|
|
--]]
|
|
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<C-p>', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
|
|
|
|
|
vim.keymap.set('n', 'K', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
|
|
|
|
|
vim.keymap.set('n', '<C-a>', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
|
|
|
|
|
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
|
|
|
|
|
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
|
|
|
|
|
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
|
|
|
|
|
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
|
|
|
|
|
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
|
|
|
|
|
|
|
|
|
|
-- Neotree
|
|
|
|
@ -188,6 +167,16 @@ vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnos
|
|
|
|
|
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
|
|
|
|
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
|
|
|
|
|
|
|
|
|
|
-- Tsserver run organize imports command
|
|
|
|
|
local function organize_imports()
|
|
|
|
|
local params = {
|
|
|
|
|
command = "_typescript.organizeImports",
|
|
|
|
|
arguments = { vim.api.nvim_buf_get_name(0) },
|
|
|
|
|
title = ""
|
|
|
|
|
}
|
|
|
|
|
vim.lsp.buf.execute_command(params)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- [[ Configure LSP ]]
|
|
|
|
|
-- This function gets run when an LSP connects to a particular buffer.
|
|
|
|
|
local on_attach = function(_, bufnr)
|
|
|
|
@ -216,8 +205,8 @@ local on_attach = function(_, bufnr)
|
|
|
|
|
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
|
|
|
|
|
|
|
|
|
|
-- See `:help K` for why this keymap
|
|
|
|
|
nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
|
|
|
|
|
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
|
|
|
|
|
nmap('M', vim.lsp.buf.hover, 'Hover Documentation')
|
|
|
|
|
nmap('<C-m>', vim.lsp.buf.signature_help, 'Signature Documentation')
|
|
|
|
|
|
|
|
|
|
-- Lesser used LSP functionality
|
|
|
|
|
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
|
|
|
@ -227,6 +216,10 @@ local on_attach = function(_, bufnr)
|
|
|
|
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
|
|
|
|
end, '[W]orkspace [L]ist Folders')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- tsserver organize imports
|
|
|
|
|
nmap('<leader>oi', organize_imports, 'OrganizeImports')
|
|
|
|
|
|
|
|
|
|
-- Create a command `:Format` local to the LSP buffer
|
|
|
|
|
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
|
|
|
|
vim.lsp.buf.format()
|
|
|
|
@ -243,7 +236,7 @@ local servers = {
|
|
|
|
|
-- gopls = {},
|
|
|
|
|
-- pyright = {},
|
|
|
|
|
-- rust_analyzer = {},
|
|
|
|
|
-- tsserver = {},
|
|
|
|
|
tsserver = {},
|
|
|
|
|
|
|
|
|
|
lua_ls = {
|
|
|
|
|
Lua = {
|
|
|
|
@ -277,6 +270,17 @@ mason_lspconfig.setup_handlers {
|
|
|
|
|
end,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
require('lspconfig').tsserver.setup {
|
|
|
|
|
on_attach = on_attach,
|
|
|
|
|
capabilities = capabilities,
|
|
|
|
|
commands = {
|
|
|
|
|
OrganizeImports = {
|
|
|
|
|
organize_imports,
|
|
|
|
|
description = "Organize Imports"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-- [[ Configure nvim-cmp ]]
|
|
|
|
|
-- See `:help cmp`
|
|
|
|
|
local cmp = require 'cmp'
|
|
|
|
|