vim.cmd([[
	set nu
	set smarttab
	set tabstop=4
	set shiftwidth=4
	set noexpandtab
	set autoindent
	filetype plugin indent on

	colorscheme vim
	set notermguicolors

	set splitbelow splitright

	" Insert mode hjkl
	inoremap <C-h> <left>
	inoremap <C-j> <down>
	inoremap <C-k> <up>
	inoremap <C-l> <right>

	" Command mode hjkl
	cnoremap <C-h> <left>
	cnoremap <C-j> <down>
	cnoremap <C-k> <up>
	cnoremap <C-l> <right>

	nnoremap <space> :

	nnoremap <leader>o o<esc>
	nnoremap <leader>O O<esc>

	nnoremap <leader>t :NvimTreeOpen<enter>

	nnoremap <tab> <esc>/<++><enter>ca<

	" Vim Wiki Macros
	autocmd Filetype vimwiki inoremap m<tab> -<space>[<space>]<space>
	autocmd Filetype vimwiki inoremap h<tab> ==<left>
	autocmd Filetype vimwiki inoremap hh<tab> ====<left><left>
	
	" C Macros
	autocmd Filetype c inoremap im<tab> int<space>main()<enter>{<enter><enter>return<space>0;<enter>}<up><up><tab>
	autocmd Filetype c inoremap i<tab> #include<space><><left>
	autocmd Filetype c inoremap w<tab> while()<space>{<enter>}<esc>ke2li
	autocmd Filetype c inoremap f<tab> for(;;)<space>{<enter>}<esc>ke2li
	autocmd Filetype c inoremap s<tab> switch()<space>{<enter>}<esc>ke2li

	" HTML Macros
	autocmd Filetype html,php inoremap im<tab> <!DOCTYPE html><enter><html><enter><body><enter><enter></body><enter></html><up><up><tab><tab>
	autocmd Filetype html,php inoremap div<tab> <div class=""><enter></div><esc>2kf"a
	autocmd Filetype html,php inoremap img<tab> <img alt="" src="<++>"><esc>0f"a
	autocmd Filetype html,php inoremap ln<tab> <a href=""><left><left>
	autocmd Filetype html,php inoremap he<tab> <head><enter><enter></head><up>
	autocmd Filetype html,php inoremap ti<tab> <title></title><esc>0f>a
	autocmd Filetype html,php inoremap h1<tab> <h1></h1><esc>0f>a
	autocmd Filetype html,php inoremap h2<tab> <h2></h2><esc>0f>a
	autocmd Filetype html,php inoremap h3<tab> <h3></h3><esc>0f>a
	autocmd Filetype html,php inoremap p<tab> <p></p><esc>0f>a
	autocmd Filetype html,php inoremap php<tab> <?php<enter>?><esc>ko

	" LaTex Macros
	autocmd Filetype tex inoremap up<tab> \usepackage{}<left>
	autocmd Filetype tex inoremap equ<tab> \begin{equation*}<enter><enter>\end{equation*}<enter><++><up><up><tab>
	autocmd Filetype tex inoremap ig<tab> \includegraphics{}<left>
	autocmd Filetype tex inoremap b<tab> \begin{}<enter>\end{}<enter><++><esc>2kf{a
	autocmd Filetype tex inoremap e<tab> <esc>0f{lvf}hyj0f{pO
	autocmd Filetype tex inoremap s<tab> \section{}<left>
	autocmd Filetype tex inoremap ss<tab> \subsection{}<left>
	autocmd Filetype tex inoremap sss<tab> \subsubsection{}<left>
	autocmd Filetype tex inoremap tf<tab> {}<esc>yy4pki\titleformat<right>
	autocmd Filetype tex inoremap fr<tab> \frac{}{<++>}<esc>6hi
	autocmd Filetype tex inoremap dca<tab> \documentclass{article}<enter>
	autocmd Filetype tex inoremap nc<tab> \newcounter{}<enter>\forloop{}{}{\value{}}{<enter>}<esc>kkf}i
	autocmd Filetype tex inoremap fl<tab> <esc>0f{lvf}hyj0f{p/\\value{<enter>f{pl:noh<enter>a
	autocmd Filetype tex inoremap ut<tab> \usetikzlibrary{}<left>
	autocmd Filetype tex inoremap ts<tab> \tikzstyle{}<space>=<space>[<++>]<esc>0f{a
]])

vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1

vim.g.calendar_monday = 1
vim.g.calendar_weeknm = 5
vim.g.tex_flavor = 'latex'

local function bootstrap_pckr()
	local pckr_path = vim.fn.stdpath("data") .. "/pckr/pckr.nvim"

	if not (vim.uv or vim.loop).fs_stat(pckr_path) then
		vim.fn.system({
			"git",
			"clone",
			"--filter=blob:none",
			"https://github.com/lewis6991/pckr.nvim",
			pckr_path
		})
	end

	vim.opt.rtp:prepend(pckr_path)
end

bootstrap_pckr()

require("pckr").add{
	{
		"christoomey/vim-tmux-navigator",
		cmd = {
			"TmuxNavigateLeft",
			"TmuxNavigateDown",
			"TmuxNavigateUp",
			"TmuxNavigateRight",
			"TmuxNavigatePrevious",
		},
		keys = {
			{ "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>" },
			{ "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>" },
			{ "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>" },
			{ "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>" },
			{ "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>" },
		},
	},
	{
		"windwp/nvim-autopairs",
		event = "InsertEnter",
		config = function()
			require("nvim-autopairs").setup {}
		end
	},
	{
		"nvim-tree/nvim-tree.lua",
		config = function()
			require("nvim-tree").setup()
		end
	},
	{
		"vimwiki/vimwiki"
	},
	{
		"mattn/calendar-vim"
	}
}