diff options
author | Cody Hiar <cody@hiar.ca> | 2021-09-03 15:57:44 -0600 |
---|---|---|
committer | Cody Hiar <cody@hiar.ca> | 2021-09-03 15:57:44 -0600 |
commit | 227899a5a0edf9e449d0697eb5e387dd5ea942ed (patch) | |
tree | 1492ee9913760798e43d1c46acb0e5284076cc85 | |
parent | 8c4a44a45145a99922224b20c864fd51dd2f0b3c (diff) |
initial work on getting lua setup working
-rw-r--r-- | init.lua.backup | 66 | ||||
-rw-r--r-- | lua/lspconfigconf.lua | 53 | ||||
-rw-r--r-- | lua/nvimlintconf.lua | 34 | ||||
-rw-r--r-- | lua/settings.lua | 5 | ||||
-rw-r--r-- | lua/telescopeconf.lua | 52 | ||||
-rw-r--r-- | lua/treesitterconf.lua | 18 | ||||
-rw-r--r-- | plugin/packer_compiled.lua | 137 |
7 files changed, 365 insertions, 0 deletions
diff --git a/init.lua.backup b/init.lua.backup new file mode 100644 index 0000000..7460139 --- /dev/null +++ b/init.lua.backup @@ -0,0 +1,66 @@ +-- How to install +-- +-- 1. Run `PackerSync` +-- 2. Run TSInstall <langauge> for treesitter grammar +-- 3. LspInfo to check if the language servers are working + + +-- Bootstrap packer if not installed +local fn = vim.fn +local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' +if fn.empty(fn.glob(install_path)) > 0 then + fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) + vim.cmd 'packadd packer.nvim' +end + +-- Install My Stuff +require('settings') + +vim.cmd "nnoremap <space>ps <cmd>PackerSync<cr>" + +vim.cmd "nnoremap <space>ff <cmd>Telescope find_files<cr>" +vim.cmd "nnoremap <space>/ <cmd>Telescope live_grep<cr>" +vim.cmd "nnoremap <space>fb <cmd>Telescope buffers<cr>" +vim.cmd "nnoremap <space>fg <cmd>lua require('telescope.builtin').git_status()<cr>" + +vim.cmd "let g:python3_host_prog = expand('~/venv/bin/python3')" +vim.cmd "let g:rnvimr_enable_ex = 1" +vim.cmd "let g:rnvimr_enable_picker = 1" +vim.cmd "nnoremap <space>m :RnvimrToggle<CR>" +vim.cmd "let g:rnvimr_action = { '<CR>': 'NvimEdit tabedit' }" + + +vim.cmd "au BufWritePost <buffer> lua require('lint').try_lint()" + +return require('packer').startup(function() + use 'wbthomason/packer.nvim' + use 'Thornycrackers-Forks/nord-vim' + use { + 'nvim-treesitter/nvim-treesitter', + run = ':TSUpdate', + config = function() + require "treesitterconf" + end, + } + use { + "neovim/nvim-lspconfig", + config = function() + require "lspconfigconf" + end, + } + use 'nvim-treesitter/playground' + use { + 'nvim-telescope/telescope.nvim', + requires = { {'nvim-lua/plenary.nvim'} }, + config = function() + require "telescopeconf" + end, + } + use 'kevinhwang91/rnvimr' + use { + 'jose-elias-alvarez/null-ls.nvim', + config = function() + require "nvimlintconf" + end, + } +end) diff --git a/lua/lspconfigconf.lua b/lua/lspconfigconf.lua new file mode 100644 index 0000000..2272bf0 --- /dev/null +++ b/lua/lspconfigconf.lua @@ -0,0 +1,53 @@ +local nvim_lsp = require('lspconfig') + +--nvim_lsp.pylsp.setup{} +local present, ts_config = pcall(require, "nvim-treesitter.configs") +if not present then + return +end + +-- Use an on_attach function to only map the following keys +-- after the language server attaches to the current buffer +local on_attach = function(client, bufnr) + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + -- Enable completion triggered by <c-x><c-o> + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + local opts = { noremap=true, silent=true } + + -- See `:help vim.lsp.*` for documentation on any of the below functions + buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) + buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) + buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts) + buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts) + buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) + buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts) + buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts) + buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts) + buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts) + buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) + buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts) + buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts) + buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts) + buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts) + buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts) + buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts) + buf_set_keymap('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts) + +end + +-- Use a loop to conveniently call 'setup' on multiple servers and +-- map buffer local keybindings when the language server attaches +-- local servers = { 'pyls', 'rust_analyzer', 'tsserver' } +local servers = { 'pylsp' } +for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + on_attach = on_attach, + flags = { + debounce_text_changes = 150, + } + } +end diff --git a/lua/nvimlintconf.lua b/lua/nvimlintconf.lua new file mode 100644 index 0000000..026ebe1 --- /dev/null +++ b/lua/nvimlintconf.lua @@ -0,0 +1,34 @@ +local null_ls = require("null-ls") +local helpers = require("null-ls.helpers") + +local blacklint = { + method = null_ls.methods.DIAGNOSTICS, + filetypes = { "python" }, + -- null_ls.generator creates an async source + -- that spawns the command with the given arguments and options + generator = null_ls.generator({ + command = "black", + args = { "--stdin" }, + to_stdin = true, + from_stderr = true, + -- choose an output format (raw, json, or line) + format = "line", + check_exit_code = function(code) + return code <= 1 + end, + -- use helpers to parse the output from string matchers, + -- or parse it manually with a function + on_output = helpers.diagnostics.from_patterns({ + { + pattern = [[:(%d+):(%d+) [%w-/]+ (.*)]], + groups = { "row", "col", "message" }, + }, + { + pattern = [[:(%d+) [%w-/]+ (.*)]], + groups = { "row", "message" }, + }, + }), + }), +} + +null_ls.register(blacklint) diff --git a/lua/settings.lua b/lua/settings.lua new file mode 100644 index 0000000..e0ecddb --- /dev/null +++ b/lua/settings.lua @@ -0,0 +1,5 @@ +local o = vim.o +local g = vim.g + +g.colors_name = "nord" + diff --git a/lua/telescopeconf.lua b/lua/telescopeconf.lua new file mode 100644 index 0000000..a589d4f --- /dev/null +++ b/lua/telescopeconf.lua @@ -0,0 +1,52 @@ +local actions = require "telescope.actions" + +require('telescope').setup{ + defaults = { + mappings = { + i = { + ["<esc>"] = actions.close, + ['<C-u>'] = false, + }, + }, + vimgrep_arguments = { + 'rg', + '--color=never', + '--no-heading', + '--with-filename', + '--line-number', + '--column', + '--smart-case' + }, + prompt_prefix = "> ", + selection_caret = "> ", + entry_prefix = " ", + initial_mode = "insert", + selection_strategy = "reset", + sorting_strategy = "descending", + layout_strategy = "horizontal", + layout_config = { + horizontal = { + mirror = false, + }, + vertical = { + mirror = false, + }, + }, + file_sorter = require'telescope.sorters'.get_fuzzy_file, + file_ignore_patterns = {}, + generic_sorter = require'telescope.sorters'.get_generic_fuzzy_sorter, + winblend = 0, + border = {}, + borderchars = { '─', '│', '─', '│', '╭', '╮', '╯', '╰' }, + color_devicons = true, + use_less = true, + path_display = {}, + set_env = { ['COLORTERM'] = 'truecolor' }, -- default = nil, + file_previewer = require'telescope.previewers'.vim_buffer_cat.new, + grep_previewer = require'telescope.previewers'.vim_buffer_vimgrep.new, + qflist_previewer = require'telescope.previewers'.vim_buffer_qflist.new, + + -- Developer configurations: Not meant for general override + buffer_previewer_maker = require'telescope.previewers'.buffer_previewer_maker + } +} diff --git a/lua/treesitterconf.lua b/lua/treesitterconf.lua new file mode 100644 index 0000000..ae491bb --- /dev/null +++ b/lua/treesitterconf.lua @@ -0,0 +1,18 @@ +local present, ts_config = pcall(require, "nvim-treesitter.configs") +if not present then + return +end + +ts_config.setup { + ensure_installed = { + "python", + "lua", + "nix", + }, + highlight = { + enable = true, + }, + indent = { + enable = true, + } +} diff --git a/plugin/packer_compiled.lua b/plugin/packer_compiled.lua new file mode 100644 index 0000000..7508661 --- /dev/null +++ b/plugin/packer_compiled.lua @@ -0,0 +1,137 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + + local time + local profile_info + local should_profile = false + if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end + else + time = function(chunk, start) end + end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + + _G._packer = _G._packer or {} + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/thorny/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/thorny/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/thorny/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/thorny/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/thorny/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s)) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + ["nord-vim"] = { + loaded = true, + path = "/home/thorny/.local/share/nvim/site/pack/packer/start/nord-vim" + }, + ["null-ls.nvim"] = { + config = { "\27LJ\2\n,\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\17nvimlintconf\frequire\0" }, + loaded = true, + path = "/home/thorny/.local/share/nvim/site/pack/packer/start/null-ls.nvim" + }, + ["nvim-lspconfig"] = { + config = { "\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18lspconfigconf\frequire\0" }, + loaded = true, + path = "/home/thorny/.local/share/nvim/site/pack/packer/start/nvim-lspconfig" + }, + ["nvim-treesitter"] = { + config = { "\27LJ\2\n.\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\19treesitterconf\frequire\0" }, + loaded = true, + path = "/home/thorny/.local/share/nvim/site/pack/packer/start/nvim-treesitter" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/thorny/.local/share/nvim/site/pack/packer/start/packer.nvim" + }, + playground = { + loaded = true, + path = "/home/thorny/.local/share/nvim/site/pack/packer/start/playground" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/thorny/.local/share/nvim/site/pack/packer/start/plenary.nvim" + }, + rnvimr = { + loaded = true, + path = "/home/thorny/.local/share/nvim/site/pack/packer/start/rnvimr" + }, + ["telescope.nvim"] = { + config = { "\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18telescopeconf\frequire\0" }, + loaded = true, + path = "/home/thorny/.local/share/nvim/site/pack/packer/start/telescope.nvim" + } +} + +time([[Defining packer_plugins]], false) +-- Config for: null-ls.nvim +time([[Config for null-ls.nvim]], true) +try_loadstring("\27LJ\2\n,\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\17nvimlintconf\frequire\0", "config", "null-ls.nvim") +time([[Config for null-ls.nvim]], false) +-- Config for: nvim-treesitter +time([[Config for nvim-treesitter]], true) +try_loadstring("\27LJ\2\n.\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\19treesitterconf\frequire\0", "config", "nvim-treesitter") +time([[Config for nvim-treesitter]], false) +-- Config for: nvim-lspconfig +time([[Config for nvim-lspconfig]], true) +try_loadstring("\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18lspconfigconf\frequire\0", "config", "nvim-lspconfig") +time([[Config for nvim-lspconfig]], false) +-- Config for: telescope.nvim +time([[Config for telescope.nvim]], true) +try_loadstring("\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18telescopeconf\frequire\0", "config", "telescope.nvim") +time([[Config for telescope.nvim]], false) +if should_profile then save_profiles() end + +end) + +if not no_errors then + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end |