101 lines
3 KiB
Lua
101 lines
3 KiB
Lua
-- Install packer
|
|
local install_path = vim.fn.stdpath 'data' .. '/site/pack/packer/start/packer.nvim'
|
|
local is_bootstrap = false
|
|
if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
|
|
is_bootstrap = true
|
|
vim.fn.system { 'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path }
|
|
vim.cmd [[packadd packer.nvim]]
|
|
end
|
|
|
|
-- When we are bootstrapping a configuration, it doesn't
|
|
-- make sense to execute the rest of the init.lua.
|
|
--
|
|
-- You'll need to restart nvim, and then it will work.
|
|
if is_bootstrap then
|
|
print '=================================='
|
|
print ' Plugins are being installed'
|
|
print ' Wait until Packer completes,'
|
|
print ' then restart nvim'
|
|
print '=================================='
|
|
return
|
|
end
|
|
|
|
-- Automatically source and re-compile packer whenever you save this init.lua
|
|
local packer_group = vim.api.nvim_create_augroup('Packer', { clear = true })
|
|
vim.api.nvim_create_autocmd('BufWritePost', {
|
|
command = 'source <afile> | PackerCompile',
|
|
group = packer_group,
|
|
pattern = vim.fn.expand '$MYVIMRC',
|
|
})
|
|
|
|
-- [[ Setting options ]]
|
|
-- See `:help vim.o`
|
|
|
|
-- Set highlight on search
|
|
vim.o.hlsearch = false
|
|
|
|
-- Make line numbers default
|
|
vim.wo.number = true
|
|
|
|
-- Enable mouse mode
|
|
vim.o.mouse = 'a'
|
|
|
|
-- 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
|
|
|
|
-- Decrease update time
|
|
vim.o.updatetime = 250
|
|
vim.wo.signcolumn = 'yes'
|
|
|
|
-- Set colorscheme
|
|
vim.o.termguicolors = true
|
|
vim.cmd [[colorscheme base16-tomorrow-night-eighties]]
|
|
|
|
-- Set completeopt to have a better completion experience
|
|
vim.o.completeopt = 'menuone,noselect'
|
|
|
|
vim.g.loaded_netrw = 1
|
|
|
|
-- [[ Basic Keymaps ]]
|
|
-- Set <space> as the leader key
|
|
-- See `:help mapleader`
|
|
-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used)
|
|
vim.g.mapleader = ' '
|
|
vim.g.maplocalleader = ' '
|
|
|
|
-- Keymaps for better default experience
|
|
-- See `:help vim.keymap.set()`
|
|
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
|
|
|
|
-- Remap for dealing with word wrap
|
|
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 })
|
|
|
|
-- Diagnostic keymaps
|
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
|
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
|
|
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float)
|
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist)
|
|
|
|
local api = require("nvim-tree.api")
|
|
vim.keymap.set('n', '<leader>ft', api.tree.toggle)
|
|
|
|
require('plugins')
|
|
|
|
-- Setup neovim lua configuration
|
|
-- require('neodev').setup()
|
|
--
|
|
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
|
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
|
|
|
-- disable some stock plugins
|
|
vim.g.loaded_netrwPlugin = 1
|