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
 | 
			
		||||
 | 
			
		||||
      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('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
 | 
			
		||||
| 
						 | 
				
			
			@ -118,5 +118,71 @@ return {
 | 
			
		|||
        }
 | 
			
		||||
      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,
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue