aboutsummaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorCody Hiar <cody@hiar.ca>2021-09-03 15:57:44 -0600
committerCody Hiar <cody@hiar.ca>2021-09-03 15:57:44 -0600
commit227899a5a0edf9e449d0697eb5e387dd5ea942ed (patch)
tree1492ee9913760798e43d1c46acb0e5284076cc85 /lua
parent8c4a44a45145a99922224b20c864fd51dd2f0b3c (diff)
initial work on getting lua setup working
Diffstat (limited to 'lua')
-rw-r--r--lua/lspconfigconf.lua53
-rw-r--r--lua/nvimlintconf.lua34
-rw-r--r--lua/settings.lua5
-rw-r--r--lua/telescopeconf.lua52
-rw-r--r--lua/treesitterconf.lua18
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,
+ }
+}