diff --git a/init.lua b/init.lua index d7b66c1..2380377 100644 --- a/init.lua +++ b/init.lua @@ -1,206 +1,5 @@ -vim.cmd.colorscheme('solarized8') - -vim.g.mapleader = ' ' - -vim.opt.autowrite = true -vim.opt.backup = false -vim.opt.completeopt = 'menuone,noselect' -vim.opt.expandtab = true -vim.opt.fileformats = 'unix,dos,mac' -vim.opt.foldenable = false -vim.opt.guicursor = 'n:blinkon0' -vim.opt.ignorecase = true -vim.opt.langremap = false -vim.opt.linebreak = true -vim.opt.modeline = false -vim.opt.modelines = 0 -vim.opt.number = true -vim.opt.shiftround = true -vim.opt.shiftwidth = 4 -vim.opt.smartcase = true -vim.opt.swapfile = false -vim.opt.tabstop = 4 -vim.opt.termguicolors = true -vim.opt.updatetime = 300 -vim.opt.wrap = false -vim.opt.writebackup = false - --- gui -vim.api.nvim_create_autocmd( - 'UIEnter', { - callback = function() - if vim.v.event.chan == 1 then - require('ginit') - end - end, - once = true, - } -) - --- general -vim.keymap.set('i', '', '') -vim.keymap.set('n', '', 'bd') -vim.keymap.set('n', '', 'nohlsearch') -vim.keymap.set('n', '', 'b#') -vim.keymap.set('n', 'w', 'w') -vim.keymap.set('n', 'x', 'x') -vim.keymap.set('n', 'j', 'gj') -vim.keymap.set('n', 'k', 'gk') - --- clipboard -vim.keymap.set({ 'n', 'v' }, 'P', '"+P') -vim.keymap.set({ 'n', 'v' }, 'Y', '"+y$') -vim.keymap.set({ 'n', 'v' }, 'd', '"+d') -vim.keymap.set({ 'n', 'v' }, 'd', '"+dd') -vim.keymap.set({ 'n', 'v' }, 'p', '"+p') -vim.keymap.set({ 'n', 'v' }, 'y', '"+y') -vim.keymap.set({ 'n', 'v' }, 'yy', '"+yy') - --- splits -vim.keymap.set('n', '', '') -vim.keymap.set('n', '', '<') -vim.keymap.set('n', '', '+') -vim.keymap.set('n', '', '-') -vim.keymap.set('n', '', '>') -vim.keymap.set('n', '', 'h') -vim.keymap.set('n', '', 'j') -vim.keymap.set('n', '', 'k') -vim.keymap.set('n', '', 'l') - --- cmp-nvim-lsp, nvim-lspconfig -local nvim_lspconfig = require('lspconfig') -if nvim_lspconfig then - local capabilities = vim.lsp.protocol.make_client_capabilities() - - local cmp_nvim_lsp = require('cmp_nvim_lsp') - if cmp_nvim_lsp then - capabilities = cmp_nvim_lsp.update_capabilities(capabilities, { snippetSupport = false }) - end - - nvim_lspconfig.clangd.setup({ capabilities = capabilities }) - nvim_lspconfig.gopls.setup({ capabilities = capabilities }) - nvim_lspconfig.jedi_language_server.setup({ capabilities = capabilities }) - nvim_lspconfig.rust_analyzer.setup({ capabilities = capabilities }) - nvim_lspconfig.tsserver.setup({ capabilities = capabilities }) - nvim_lspconfig.sumneko_lua.setup({ - settings = { - Lua = { - diagnostics = { globals = { 'vim' } }, - runtime = { version = 'LuaJIT' }, - telemetry = { enable = false }, - workspace = { library = vim.api.nvim_get_runtime_file('', true) }, - }, - }, - }) - - vim.keymap.set('n', '', vim.lsp.buf.signature_help) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition) - vim.keymap.set('n', 'ca', vim.lsp.buf.code_action) - vim.keymap.set('n', 'e', vim.diagnostic.open_float) - vim.keymap.set('n', 'f', function() vim.lsp.buf.format({ async = true }) end) - vim.keymap.set('n', 'q', vim.diagnostic.setloclist) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder) - vim.keymap.set('n', 'wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder) - vim.keymap.set('n', 'K', vim.lsp.buf.hover) - vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) - vim.keymap.set('n', ']d', vim.diagnostic.goto_next) - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation) - vim.keymap.set('n', 'gr', vim.lsp.buf.references) - - vim.opt.omnifunc = 'v:lua.vim.lsp.omnifunc' -end - --- nvim-cmp -local nvim_cmp = require('cmp') -if nvim_cmp then - nvim_cmp.setup({ - mapping = { - [''] = nvim_cmp.mapping.scroll_docs(-4), - [''] = nvim_cmp.mapping.scroll_docs(4), - [''] = nvim_cmp.mapping.select_next_item(), - [''] = nvim_cmp.mapping.select_prev_item(), - [''] = nvim_cmp.mapping.confirm({ select = true }), - }, - sources = { - { name = 'nvim_lsp' }, - { name = 'vsnip' }, - }, - snippet = { - expand = function(args) vim.fn['vsnip#anonymous'](args.body) end, - }, - }) -end - --- telescope.nvim -local telescope = require('telescope') -if telescope then - local telescope_builtin = require('telescope.builtin') - if telescope_builtin then - vim.keymap.set('n', 'fb', telescope_builtin.buffers, {}) - vim.keymap.set('n', 'fg', telescope_builtin.git_files, {}) - vim.keymap.set('n', 'fh', telescope_builtin.oldfiles, {}) - vim.keymap.set('n', 'fr', telescope_builtin.reloader, {}) - vim.keymap.set('n', 'fs', telescope_builtin.spell_suggest, {}) - end - - local telescope_actions = require('telescope.actions') - telescope.setup { - defaults = { - mappings = { - i = { - [''] = telescope_actions.move_selection_next, - [''] = telescope_actions.move_selection_previous, - [''] = telescope_actions.close, - }, - }, - } - } -end - --- vim-airline -vim.g['airline#extensions#tabline#enabled'] = 1 -vim.g['airline_symbols_ascii'] = 1 - --- vim-argwrap -vim.keymap.set('n', 'a', vim.cmd.ArgWrap) - --- vim-better-whitespace -vim.api.nvim_set_hl(0, 'ExtraWhitespace', { bg = '#6c71c4' }) - --- vim-dirvish -vim.g.dirvish_mode = ':sort ,^.*[\\/],' - --- vim-easy-align -vim.g.easy_align_ignore_groups = {} -vim.keymap.set('n', 'ga', '(EasyAlign)') -vim.keymap.set('v', '', '(EasyAlign)') - --- vim-go -vim.g.go_diagnostics_enabled = 0 -vim.g.go_imports_autosave = 0 -vim.g.go_metalinter_enabled = {} -vim.g.go_null_module_warning = 0 -vim.g.go_version_warning = 0 - --- vim-interestingwords -vim.g.interestingWordsGUIColors = { '#8ccbea', '#a4e57e', '#ffdb72', '#ff7272', '#ffb3ff', '#9999ff' } -vim.g.interestingWordsTermColors = { '154', '121', '211', '137', '214', '222' } - --- vim-polyglot -vim.g.rustfmt_autosave = 1 - --- hflip.nvim -vim.keymap.set('n', 'gfs', vim.cmd.HFlip) - --- helpers -vim.api.nvim_create_user_command( - 'UnAlign', - function(ctx) - vim.cmd(ctx.line1 .. ',' .. ctx.line2 .. 's/\\(\\S\\+\\)\\s\\{2,\\}/\\1 /g') - end, - { range = '%' } -) +require('common') +require('lsp') +require('plugins') +require('util') +require('autocmd') diff --git a/lua/autocmd.lua b/lua/autocmd.lua new file mode 100644 index 0000000..112d7f1 --- /dev/null +++ b/lua/autocmd.lua @@ -0,0 +1,10 @@ +vim.api.nvim_create_autocmd( + 'UIEnter', { + callback = function() + if vim.v.event.chan == 1 then + require('ginit') + end + end, + once = true, + } +) diff --git a/lua/common.lua b/lua/common.lua new file mode 100644 index 0000000..e38ed9c --- /dev/null +++ b/lua/common.lua @@ -0,0 +1,59 @@ +-- colors +vim.cmd.colorscheme('solarized8') + +-- leader +vim.g.mapleader = ' ' + +-- options +vim.opt.autowrite = true +vim.opt.backup = false +vim.opt.completeopt = 'menuone,noselect' +vim.opt.expandtab = true +vim.opt.fileformats = 'unix,dos,mac' +vim.opt.foldenable = false +vim.opt.guicursor = 'n:blinkon0' +vim.opt.ignorecase = true +vim.opt.langremap = false +vim.opt.linebreak = true +vim.opt.modeline = false +vim.opt.modelines = 0 +vim.opt.number = true +vim.opt.shiftround = true +vim.opt.shiftwidth = 4 +vim.opt.smartcase = true +vim.opt.swapfile = false +vim.opt.tabstop = 4 +vim.opt.termguicolors = true +vim.opt.updatetime = 300 +vim.opt.wrap = false +vim.opt.writebackup = false + +-- common keymaps +vim.keymap.set('i', '', '') +vim.keymap.set('n', '', 'bd') +vim.keymap.set('n', '', 'nohlsearch') +vim.keymap.set('n', '', 'b#') +vim.keymap.set('n', 'w', 'w') +vim.keymap.set('n', 'x', 'x') +vim.keymap.set('n', 'j', 'gj') +vim.keymap.set('n', 'k', 'gk') + +-- clipboard keymaps +vim.keymap.set({ 'n', 'v' }, 'P', '"+P') +vim.keymap.set({ 'n', 'v' }, 'Y', '"+y$') +vim.keymap.set({ 'n', 'v' }, 'd', '"+d') +vim.keymap.set({ 'n', 'v' }, 'd', '"+dd') +vim.keymap.set({ 'n', 'v' }, 'p', '"+p') +vim.keymap.set({ 'n', 'v' }, 'y', '"+y') +vim.keymap.set({ 'n', 'v' }, 'yy', '"+yy') + +-- split keymaps +vim.keymap.set('n', '', '') +vim.keymap.set('n', '', '<') +vim.keymap.set('n', '', '+') +vim.keymap.set('n', '', '-') +vim.keymap.set('n', '', '>') +vim.keymap.set('n', '', 'h') +vim.keymap.set('n', '', 'j') +vim.keymap.set('n', '', 'k') +vim.keymap.set('n', '', 'l') diff --git a/lua/lsp.lua b/lua/lsp.lua new file mode 100644 index 0000000..af61b95 --- /dev/null +++ b/lua/lsp.lua @@ -0,0 +1,67 @@ +-- cmp-nvim-lsp, nvim-lspconfig +local nvim_lspconfig = require('lspconfig') +if nvim_lspconfig then + local capabilities = vim.lsp.protocol.make_client_capabilities() + + local cmp_nvim_lsp = require('cmp_nvim_lsp') + if cmp_nvim_lsp then + capabilities = cmp_nvim_lsp.update_capabilities(capabilities, { snippetSupport = false }) + end + + nvim_lspconfig.clangd.setup({ capabilities = capabilities }) + nvim_lspconfig.gopls.setup({ capabilities = capabilities }) + nvim_lspconfig.jedi_language_server.setup({ capabilities = capabilities }) + nvim_lspconfig.rust_analyzer.setup({ capabilities = capabilities }) + nvim_lspconfig.tsserver.setup({ capabilities = capabilities }) + nvim_lspconfig.sumneko_lua.setup({ + settings = { + Lua = { + diagnostics = { globals = { 'vim' } }, + runtime = { version = 'LuaJIT' }, + telemetry = { enable = false }, + workspace = { library = vim.api.nvim_get_runtime_file('', true) }, + }, + }, + }) + + vim.keymap.set('n', '', vim.lsp.buf.signature_help) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action) + vim.keymap.set('n', 'e', vim.diagnostic.open_float) + vim.keymap.set('n', 'f', function() vim.lsp.buf.format({ async = true }) end) + vim.keymap.set('n', 'q', vim.diagnostic.setloclist) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename) + vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder) + vim.keymap.set('n', 'wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end) + vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder) + vim.keymap.set('n', 'K', vim.lsp.buf.hover) + vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) + vim.keymap.set('n', ']d', vim.diagnostic.goto_next) + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation) + vim.keymap.set('n', 'gr', vim.lsp.buf.references) + + vim.opt.omnifunc = 'v:lua.vim.lsp.omnifunc' +end + +-- nvim-cmp +local nvim_cmp = require('cmp') +if nvim_cmp then + nvim_cmp.setup({ + mapping = { + [''] = nvim_cmp.mapping.scroll_docs(-4), + [''] = nvim_cmp.mapping.scroll_docs(4), + [''] = nvim_cmp.mapping.select_next_item(), + [''] = nvim_cmp.mapping.select_prev_item(), + [''] = nvim_cmp.mapping.confirm({ select = true }), + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'vsnip' }, + }, + snippet = { + expand = function(args) vim.fn['vsnip#anonymous'](args.body) end, + }, + }) +end diff --git a/lua/plugins.lua b/lua/plugins.lua new file mode 100644 index 0000000..405446c --- /dev/null +++ b/lua/plugins.lua @@ -0,0 +1,60 @@ +-- telescope.nvim +local telescope = require('telescope') +if telescope then + local telescope_builtin = require('telescope.builtin') + if telescope_builtin then + vim.keymap.set('n', 'fb', telescope_builtin.buffers, {}) + vim.keymap.set('n', 'fg', telescope_builtin.git_files, {}) + vim.keymap.set('n', 'fh', telescope_builtin.oldfiles, {}) + vim.keymap.set('n', 'fr', telescope_builtin.reloader, {}) + vim.keymap.set('n', 'fs', telescope_builtin.spell_suggest, {}) + end + + local telescope_actions = require('telescope.actions') + telescope.setup { + defaults = { + mappings = { + i = { + [''] = telescope_actions.move_selection_next, + [''] = telescope_actions.move_selection_previous, + [''] = telescope_actions.close, + }, + }, + } + } +end + +-- hflip.nvim +vim.keymap.set('n', 'gfs', vim.cmd.HFlip) + +-- vim-airline +vim.g['airline#extensions#tabline#enabled'] = 1 +vim.g['airline_symbols_ascii'] = 1 + +-- vim-argwrap +vim.keymap.set('n', 'a', vim.cmd.ArgWrap) + +-- vim-better-whitespace +vim.api.nvim_set_hl(0, 'ExtraWhitespace', { bg = '#6c71c4' }) + +-- vim-dirvish +vim.g.dirvish_mode = ':sort ,^.*[\\/],' + +-- vim-easy-align +vim.g.easy_align_ignore_groups = {} +vim.keymap.set('n', 'ga', '(EasyAlign)') +vim.keymap.set('v', '', '(EasyAlign)') + +-- vim-go +vim.g.go_diagnostics_enabled = 0 +vim.g.go_imports_autosave = 0 +vim.g.go_metalinter_enabled = {} +vim.g.go_null_module_warning = 0 +vim.g.go_version_warning = 0 + +-- vim-interestingwords +vim.g.interestingWordsGUIColors = { '#8ccbea', '#a4e57e', '#ffdb72', '#ff7272', '#ffb3ff', '#9999ff' } +vim.g.interestingWordsTermColors = { '154', '121', '211', '137', '214', '222' } + +-- vim-polyglot +vim.g.rustfmt_autosave = 1 diff --git a/lua/util.lua b/lua/util.lua new file mode 100644 index 0000000..18cd54d --- /dev/null +++ b/lua/util.lua @@ -0,0 +1,6 @@ +-- UnAlign +vim.api.nvim_create_user_command( + 'UnAlign', + function(ctx) vim.cmd(ctx.line1 .. ',' .. ctx.line2 .. 's/\\(\\S\\+\\)\\s\\{2,\\}/\\1 /g') end, + { range = '%' } +)