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 /lua | |
parent | 8c4a44a45145a99922224b20c864fd51dd2f0b3c (diff) |
initial work on getting lua setup working
Diffstat (limited to 'lua')
-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 |
5 files changed, 162 insertions, 0 deletions
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, + } +} |