diff --git a/lua/plugins/alpha-nvim.lua b/lua/plugins/alpha-nvim.lua
index bd7997f5768148a5f4414d27263296f093591cf8..4f296871fe06103939dee94d7d1a57be789f72d1 100644
--- a/lua/plugins/alpha-nvim.lua
+++ b/lua/plugins/alpha-nvim.lua
@@ -1,7 +1,18 @@
 -- Splash screen
 return {
-	"goolord/alpha-nvim",
-	config = function ()
-		require'alpha'.setup(require'alpha.themes.dashboard'.config)
-	end
+  "goolord/alpha-nvim",
+  dependencies = { "nvim-tree/nvim-web-devicons" },
+  config = function ()
+    local dashboard = require('alpha.themes.dashboard')
+    dashboard.section.header.val = {
+      [[ ▄▀▀▄ ▀▄  ▄▀▀█▄▄▄▄  ▄▀▀▀▀▄   ▄▀▀▄ ▄▀▀▄  ▄▀▀█▀▄    ▄▀▀▄ ▄▀▄  ]],
+      [[ █  █ █ █ ▐  ▄▀   ▐ █      █ █   █    █ █   █  █  █  █ ▀  █ ]],
+      [[ ▐  █  ▀█   █▄▄▄▄▄  █      █ ▐  █    █  ▐   █  ▐  ▐  █    █ ]],
+      [[   █   █    █    ▌  ▀▄    ▄▀    █   ▄▀      █       █    █  ]],
+      [[ ▄▀   █    ▄▀▄▄▄▄     ▀▀▀▀       ▀▄▀     ▄▀▀▀▀▀▄  ▄▀   ▄▀   ]],
+      [[ █    ▐    █    ▐                       █       █ █    █    ]],
+      [[ ▐         ▐                            ▐       ▐ ▐    ▐    ]]
+    }
+    require('alpha').setup( dashboard.opts )
+  end
 }
diff --git a/lua/plugins/autocomplete-config.lua b/lua/plugins/autocomplete-config.lua
new file mode 100644
index 0000000000000000000000000000000000000000..e4a3b8950e7abf1189fb14a16820386f6f93e10a
--- /dev/null
+++ b/lua/plugins/autocomplete-config.lua
@@ -0,0 +1,46 @@
+return {
+  {
+    "hrsh7th/cmp-nvim-lsp",
+  },
+  {
+    'L3MON4D3/LuaSnip',
+ --   build = "make install_jsregexp",
+    dependencies = {
+      'saadparwaiz1/cmp_luasnip',
+      'rafamadriz/friendly-snippets',
+    },
+  },
+  {
+    "hrsh7th/nvim-cmp",
+    dependencies = { 'L3MON4D3/LuaSnip', 'saadparwaiz1/cmp_luasnip' },
+    config = function ()
+      local cmp = require('cmp')
+      require("luasnip.loaders.from_vscode").lazy_load()
+
+      cmp.setup({
+	snippet = {
+	  expand = function(args)
+	    require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
+	  end,
+	},
+	window = {
+	  completion = cmp.config.window.bordered(),
+	  documentation = cmp.config.window.bordered(),
+	},
+	mapping = cmp.mapping.preset.insert({
+	  ['<C-b>'] = cmp.mapping.scroll_docs(-4),
+	  ['<C-f>'] = cmp.mapping.scroll_docs(4),
+	  ['<C-Leader>'] = cmp.mapping.complete(),
+	  ['<C-e>'] = cmp.mapping.abort(),
+	  ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
+	}),
+	sources = cmp.config.sources({
+	  -- { name = 'nvim_lsp' },
+	  { name = 'luasnip' }, -- For luasnip users.
+	}, {
+	  { name = 'buffer' },
+	})
+      })
+    end,
+  },
+}
diff --git a/lua/plugins/lsp-config.lua b/lua/plugins/lsp-config.lua
index 231fe21ac32cb0076e605a25c6ea51613de45ab2..f8ec53e3e0769d7ff16757b5c90d952c855c329d 100644
--- a/lua/plugins/lsp-config.lua
+++ b/lua/plugins/lsp-config.lua
@@ -28,11 +28,14 @@ return {
   {
     "neovim/nvim-lspconfig",
     config = function()
+      local capabilities = require( "cmp_nvim_lsp" ).default_capabilities()
+
       local lspconfig = require("lspconfig")
-      lspconfig.lua_ls.setup( {} )
-      lspconfig.clangd.setup( {} )
-      lspconfig.texlab.setup( {} )
-      lspconfig.tsserver.setup( {} )
+      -- local lsp_server_options = { capabilities = capabilities }
+      lspconfig.lua_ls.setup( { capabilities = capabilities } )
+      lspconfig.clangd.setup( { capabilities = capabilities } )
+      lspconfig.texlab.setup( { capabilities = capabilities } )
+      lspconfig.tsserver.setup( { capabilities = capabilities } )
 
       vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
       vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)