From ae37bcdc9d270a0ffa59a8fd72314e9510f5a9fc Mon Sep 17 00:00:00 2001
From: Oliver Davies <oliver+github@oliverdavies.uk>
Date: Tue, 9 Aug 2022 15:24:04 +0100
Subject: [PATCH] feat(nvim): add mappings to move lines

Fixes #35
---
 roles/neovim/files/lua/opdavies/options.lua | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/roles/neovim/files/lua/opdavies/options.lua b/roles/neovim/files/lua/opdavies/options.lua
index 90254fe3..a52e9cd5 100644
--- a/roles/neovim/files/lua/opdavies/options.lua
+++ b/roles/neovim/files/lua/opdavies/options.lua
@@ -79,6 +79,7 @@ local function set_key_mappings()
   local keymap = require "opdavies.keymap"
   local imap = keymap.imap
   local nmap = keymap.nmap
+  local vmap = keymap.vmap
   local xmap = keymap.xmap
   
   -- Easy insertion of a trailing ; or , from insert mode
@@ -93,6 +94,15 @@ local function set_key_mappings()
 
   -- Automatically resize buffers.
   nmap { "<leader>=", ":wincmd =<cr>", { noremap = true, silent = true }}
+
+  -- Move line(s) up and down.
+  local opts = { noremap = true, silent = true }
+  imap { "<M-j>", "<Esc>:m .+1<CR>==gi", opts }
+  imap { "<M-k>", "<Esc>:m .-2<CR>==gi", opts }
+  nmap { "<M-j>", ":m .+1<CR>==", opts }
+  nmap { "<M-k>", ":m .-2<CR>==", opts }
+  vmap { "<M-j>", ":m '>+1<CR>gv=gv", opts }
+  vmap { "<M-k>", ":m '<-2<CR>gv=gv", opts }
 end
 
 local function set_highlights()