From 227899a5a0edf9e449d0697eb5e387dd5ea942ed Mon Sep 17 00:00:00 2001 From: Cody Hiar Date: Fri, 3 Sep 2021 15:57:44 -0600 Subject: initial work on getting lua setup working --- lua/lspconfigconf.lua | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ lua/nvimlintconf.lua | 34 ++++++++++++++++++++++++++++++++ lua/settings.lua | 5 +++++ lua/telescopeconf.lua | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ lua/treesitterconf.lua | 18 +++++++++++++++++ 5 files changed, 162 insertions(+) create mode 100644 lua/lspconfigconf.lua create mode 100644 lua/nvimlintconf.lua create mode 100644 lua/settings.lua create mode 100644 lua/telescopeconf.lua create mode 100644 lua/treesitterconf.lua (limited to 'lua') 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 + 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', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) + buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) + buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', 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 = { + [""] = actions.close, + [''] = 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, + } +} -- cgit v1.2.3