From 227899a5a0edf9e449d0697eb5e387dd5ea942ed Mon Sep 17 00:00:00 2001
From: Cody Hiar <cody@hiar.ca>
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 <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, 
+	}
+}
-- 
cgit v1.2.3