fix(autoformat): Move autoformat code to lspconfig file
Autoformat file is removed and it's code is copied to config function of lsp plugin that is inside nvim-lspconfig.lua
This commit is contained in:
		
							parent
							
								
									f50e50c89e
								
							
						
					
					
						commit
						7a5a4b0c72
					
				| 
						 | 
					@ -1,74 +0,0 @@
 | 
				
			||||||
-- autoformat.lua
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- Use your language server to automatically format your code on save.
 | 
					 | 
				
			||||||
-- Adds additional commands as well to manage the behavior
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
return {
 | 
					 | 
				
			||||||
  'neovim/nvim-lspconfig',
 | 
					 | 
				
			||||||
  config = function()
 | 
					 | 
				
			||||||
    -- Switch for controlling whether you want autoformatting.
 | 
					 | 
				
			||||||
    --  Use :KickstartFormatToggle to toggle autoformatting on or off
 | 
					 | 
				
			||||||
    local format_is_enabled = true
 | 
					 | 
				
			||||||
    vim.api.nvim_create_user_command('KickstartFormatToggle', function()
 | 
					 | 
				
			||||||
      format_is_enabled = not format_is_enabled
 | 
					 | 
				
			||||||
      print('Setting autoformatting to: ' .. tostring(format_is_enabled))
 | 
					 | 
				
			||||||
    end, {})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    -- Create an augroup that is used for managing our formatting autocmds.
 | 
					 | 
				
			||||||
    --      We need one augroup per client to make sure that multiple clients
 | 
					 | 
				
			||||||
    --      can attach to the same buffer without interfering with each other.
 | 
					 | 
				
			||||||
    local _augroups = {}
 | 
					 | 
				
			||||||
    local get_augroup = function(client)
 | 
					 | 
				
			||||||
      if not _augroups[client.id] then
 | 
					 | 
				
			||||||
        local group_name = 'kickstart-lsp-format-' .. client.name
 | 
					 | 
				
			||||||
        local id = vim.api.nvim_create_augroup(group_name, { clear = true })
 | 
					 | 
				
			||||||
        _augroups[client.id] = id
 | 
					 | 
				
			||||||
      end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      return _augroups[client.id]
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    -- Whenever an LSP attaches to a buffer, we will run this function.
 | 
					 | 
				
			||||||
    --
 | 
					 | 
				
			||||||
    -- See `:help LspAttach` for more information about this autocmd event.
 | 
					 | 
				
			||||||
    vim.api.nvim_create_autocmd('LspAttach', {
 | 
					 | 
				
			||||||
      group = vim.api.nvim_create_augroup('kickstart-lsp-attach-format', { clear = true }),
 | 
					 | 
				
			||||||
      -- This is where we attach the autoformatting for reasonable clients
 | 
					 | 
				
			||||||
      callback = function(args)
 | 
					 | 
				
			||||||
        local client_id = args.data.client_id
 | 
					 | 
				
			||||||
        local client = vim.lsp.get_client_by_id(client_id)
 | 
					 | 
				
			||||||
        local bufnr = args.buf
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        -- Only attach to clients that support document formatting
 | 
					 | 
				
			||||||
        if not client.server_capabilities.documentFormattingProvider then
 | 
					 | 
				
			||||||
          return
 | 
					 | 
				
			||||||
        end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        -- Tsserver usually works poorly. Sorry you work with bad languages
 | 
					 | 
				
			||||||
        -- You can remove this line if you know what you're doing :)
 | 
					 | 
				
			||||||
        if client.name == 'tsserver' then
 | 
					 | 
				
			||||||
          return
 | 
					 | 
				
			||||||
        end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        -- Create an autocmd that will run *before* we save the buffer.
 | 
					 | 
				
			||||||
        --  Run the formatting command for the LSP that has just attached.
 | 
					 | 
				
			||||||
        vim.api.nvim_create_autocmd('BufWritePre', {
 | 
					 | 
				
			||||||
          group = get_augroup(client),
 | 
					 | 
				
			||||||
          buffer = bufnr,
 | 
					 | 
				
			||||||
          callback = function()
 | 
					 | 
				
			||||||
            if not format_is_enabled then
 | 
					 | 
				
			||||||
              return
 | 
					 | 
				
			||||||
            end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            vim.lsp.buf.format {
 | 
					 | 
				
			||||||
              async = false,
 | 
					 | 
				
			||||||
              filter = function(c)
 | 
					 | 
				
			||||||
                return c.id == client.id
 | 
					 | 
				
			||||||
              end,
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          end,
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
      end,
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
  end,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -36,7 +36,7 @@ return {
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
 | 
					      nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
 | 
				
			||||||
      -- nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction') Use keys to lazy load plugin(telescope-ui)
 | 
					      -- nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction') Lazyload on keyaction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
 | 
					      nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
 | 
				
			||||||
      nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
 | 
					      nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
 | 
				
			||||||
| 
						 | 
					@ -118,5 +118,71 @@ return {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      end,
 | 
					      end,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Autoformatting [[It used to be a separate autoformat.lua file but for some reason it wasn't working]]
 | 
				
			||||||
 | 
					    -- Switch for controlling whether you want autoformatting.
 | 
				
			||||||
 | 
					    --  Use :KickstartFormatToggle to toggle autoformatting on or off
 | 
				
			||||||
 | 
					    local format_is_enabled = true
 | 
				
			||||||
 | 
					    vim.api.nvim_create_user_command('KickstartFormatToggle', function()
 | 
				
			||||||
 | 
					      format_is_enabled = not format_is_enabled
 | 
				
			||||||
 | 
					      print('Setting autoformatting to: ' .. tostring(format_is_enabled))
 | 
				
			||||||
 | 
					    end, {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Create an augroup that is used for managing our formatting autocmds.
 | 
				
			||||||
 | 
					    --      We need one augroup per client to make sure that multiple clients
 | 
				
			||||||
 | 
					    --      can attach to the same buffer without interfering with each other.
 | 
				
			||||||
 | 
					    local _augroups = {}
 | 
				
			||||||
 | 
					    local get_augroup = function(client)
 | 
				
			||||||
 | 
					      if not _augroups[client.id] then
 | 
				
			||||||
 | 
					        local group_name = 'kickstart-lsp-format-' .. client.name
 | 
				
			||||||
 | 
					        local id = vim.api.nvim_create_augroup(group_name, { clear = true })
 | 
				
			||||||
 | 
					        _augroups[client.id] = id
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return _augroups[client.id]
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Whenever an LSP attaches to a buffer, we will run this function.
 | 
				
			||||||
 | 
					    --
 | 
				
			||||||
 | 
					    -- See `:help LspAttach` for more information about this autocmd event.
 | 
				
			||||||
 | 
					    vim.api.nvim_create_autocmd('LspAttach', {
 | 
				
			||||||
 | 
					      group = vim.api.nvim_create_augroup('kickstart-lsp-attach-format', { clear = true }),
 | 
				
			||||||
 | 
					      -- This is where we attach the autoformatting for reasonable clients
 | 
				
			||||||
 | 
					      callback = function(args)
 | 
				
			||||||
 | 
					        local client_id = args.data.client_id
 | 
				
			||||||
 | 
					        local client = vim.lsp.get_client_by_id(client_id)
 | 
				
			||||||
 | 
					        local bufnr = args.buf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        -- Only attach to clients that support document formatting
 | 
				
			||||||
 | 
					        if not client.server_capabilities.documentFormattingProvider then
 | 
				
			||||||
 | 
					          return
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        -- Tsserver usually works poorly. Sorry you work with bad languages
 | 
				
			||||||
 | 
					        -- You can remove this line if you know what you're doing :)
 | 
				
			||||||
 | 
					        if client.name == 'tsserver' then
 | 
				
			||||||
 | 
					          return
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        -- Create an autocmd that will run *before* we save the buffer.
 | 
				
			||||||
 | 
					        --  Run the formatting command for the LSP that has just attached.
 | 
				
			||||||
 | 
					        vim.api.nvim_create_autocmd('BufWritePre', {
 | 
				
			||||||
 | 
					          group = get_augroup(client),
 | 
				
			||||||
 | 
					          buffer = bufnr,
 | 
				
			||||||
 | 
					          callback = function()
 | 
				
			||||||
 | 
					            if not format_is_enabled then
 | 
				
			||||||
 | 
					              return
 | 
				
			||||||
 | 
					            end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            vim.lsp.buf.format {
 | 
				
			||||||
 | 
					              async = false,
 | 
				
			||||||
 | 
					              filter = function(c)
 | 
				
			||||||
 | 
					                return c.id == client.id
 | 
				
			||||||
 | 
					              end,
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          end,
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					      end,
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
  end,
 | 
					  end,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue