" Leader key
let mapleader = "\\"

" -----------------------------------------------------------
" Common settings
" -----------------------------------------------------------
set showmode
set scrolloff=5
set incsearch
set number
set relativenumber

" -----------------------------------------------------------
" General settings
" -----------------------------------------------------------
" Disable arrow keys
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>
noremap <leader>s <NOP>

" Save / quit
nnoremap <C-s> :w<CR>

" Close buffer
nnoremap <leader>x :bd<CR>

" -----------------------------------------------------------
" Window management
" -----------------------------------------------------------
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

nnoremap <leader>ww <C-w>w
nnoremap <leader>wd <C-w>c
nnoremap <leader>w- :split<CR>
nnoremap <leader>w\| :vsplit<CR>
nnoremap <leader>wr :only<CR>

" -----------------------------------------------------------
" Editing enhancements
" -----------------------------------------------------------
" Yank to end of line
nnoremap Y y$

" Move selected lines up/down
vnoremap J :m '>+1<CR>gv=gv
vnoremap K :m '<-2<CR>gv=gv

" Keep selection when indenting
vnoremap < <gv
vnoremap > >gv

" -----------------------------------------------------------
" Folding
" -----------------------------------------------------------
nnoremap ä zc
nnoremap Ä zo
nnoremap <leader>zR zR
nnoremap <leader>zM zM

" -----------------------------------------------------------
" Miscellaneous
" -----------------------------------------------------------
" Toggle file explorer
nnoremap <leader>e :Explore<CR>

" Comment (requires commentary.vim or similar)
nnoremap <leader>c gcc
vnoremap <leader>c gc
