vim.g.statedir = vim.fn.expand("~/.local/state/nvim/")
-vim.g.mapleader = ';'
-vim.g.maplocalleader = ';'
+vim.g.mapleader = ";"
+vim.g.maplocalleader = ";"
 
 vim.g.netrw_home = vim.g.statedir .. "netrw"
 
-vim.cmd.runtime 'options.lua'
-vim.cmd.runtime 'keymaps.lua'
-vim.cmd.runtime 'style.vim'
-vim.cmd.runtime 'emojis.vim'
+vim.cmd.runtime("options.lua")
+vim.cmd.runtime("keymaps.lua")
+vim.cmd.runtime("style.vim")
+vim.cmd.runtime("emojis.vim")
 
-vim.cmd 'packadd! gnupg'
+vim.cmd("packadd! gnupg")
 
-vim.call "plug#begin"
+vim.call("plug#begin")
 
-local Plug = vim.fn['plug#']
+local Plug = vim.fn["plug#"]
 
 -- My preferred colour scheme
-Plug 'wimstefan/vim-artesanal'
+Plug("wimstefan/vim-artesanal")
 
 -- Git operations from within files
-Plug 'tpope/vim-fugitive'
+Plug("tpope/vim-fugitive")
 
 -- Detect tabstop and shiftwidth automatically
-Plug 'tpope/vim-sleuth'
+Plug("tpope/vim-sleuth")
 
 -- Markdown support, which requires tabular.
-Plug 'godlygeek/tabular'
-Plug 'preservim/vim-markdown'
+Plug("godlygeek/tabular")
+Plug("preservim/vim-markdown")
 
 -- ExplainPattern to visualise/help with Vim regular expressions
-Plug 'Houl/ExplainPattern-vim'
+Plug("Houl/ExplainPattern-vim")
 
-vim.call "plug#end"
+-- Remember the last editing position
+Plug("farmergreg/vim-lastplace")
+
+Plug("neovim/nvim-lspconfig")
+Plug("dense-analysis/ale")
+
+vim.call("plug#end")
 
 function hasPlug(plugin)
-  return vim.g.plugs[plugin] ~= nil
+       return vim.g.plugs[plugin] ~= nil
 end
 
 function prequire(m)
-  local ok, err = pcall(require, m)
-  if not ok then return nil, err end
-  return err
+       local ok, err = pcall(require, m)
+       if not ok then
+               return nil, err
+       end
+       return err
 end