From b3d9eba21e1f1be721e86580c6b42c0a542930db Mon Sep 17 00:00:00 2001
From: David Luevano Alvarado <david@luevano.xyz>
Date: Sun, 24 Dec 2023 18:29:48 -0600
Subject: feat: add null-ls and configure, disabled for now

---
 lua/plugins/lspconfig.lua |  4 +++-
 lua/plugins/nonels.lua    | 45 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100644 lua/plugins/nonels.lua

diff --git a/lua/plugins/lspconfig.lua b/lua/plugins/lspconfig.lua
index 7b806e6..5523af6 100644
--- a/lua/plugins/lspconfig.lua
+++ b/lua/plugins/lspconfig.lua
@@ -1,5 +1,7 @@
 local servers = {
-  gopls = {},
+  gopls = {
+    gofumpt = true
+  },
   -- jedi_language_server = {},
   pyright = {},
   lua_ls = {
diff --git a/lua/plugins/nonels.lua b/lua/plugins/nonels.lua
new file mode 100644
index 0000000..c0c27df
--- /dev/null
+++ b/lua/plugins/nonels.lua
@@ -0,0 +1,45 @@
+return {
+  "nvimtools/none-ls.nvim",
+  enabled = false,
+  dependencies = {
+    { "williamboman/mason.nvim", config = true},
+    {
+      "jay-babu/mason-null-ls.nvim",
+      event = { "BufReadPre", "BufNewFile" },
+      opts = {},
+    },
+  },
+  config = function ()
+    local mason_nullls = require('mason-null-ls')
+    mason_nullls.setup({
+      ensure_installed = {
+        'gofumpt', -- or gofmt
+        'golines',
+      },
+      automatic_installation = true,
+      handlers = {}
+    })
+
+    -- autoformatting on save from: https://github.com/jose-elias-alvarez/null-ls.nvim/wiki/Formatting-on-save
+    -- pretty sure this will autoformat any code
+    local nonels = require('null-ls')
+    local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
+    nonels.setup({
+      -- you can reuse a shared lspconfig on_attach callback here
+      on_attach = function(client, bufnr)
+        if client.supports_method("textDocument/formatting") then
+          vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
+          vim.api.nvim_create_autocmd("BufWritePre", {
+            group = augroup,
+            buffer = bufnr,
+            callback = function()
+              -- on 0.8, you should use vim.lsp.buf.format({ bufnr = bufnr }) instead
+              -- on later neovim version, you should use vim.lsp.buf.format({ async = false }) instead
+              vim.lsp.buf.format({async = false})
+            end,
+          })
+        end
+      end,
+    })
+  end,
+}
-- 
cgit v1.2.3-70-g09d2