From 4060d091d7f43c3b314481b4b3d6c8de3ac0dcc9 Mon Sep 17 00:00:00 2001 From: Fernando Schauenburg Date: Mon, 25 Jul 2022 23:30:38 +0200 Subject: [PATCH] vim: add mapping to execute multiple lines of lua code --- config/nvim/after/ftplugin/lua.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/config/nvim/after/ftplugin/lua.lua b/config/nvim/after/ftplugin/lua.lua index 04491f1..9885ba7 100644 --- a/config/nvim/after/ftplugin/lua.lua +++ b/config/nvim/after/ftplugin/lua.lua @@ -1,11 +1,19 @@ vim.bo.tabstop = 2 -local nmap = require 'fs.util'.nmap local buffer = { buffer = true } --- execute the current line -nmap { 'x', [[call luaeval(getline("."))]], buffer } +local exec_current_lua_line = function() + vim.fn.luaeval(vim.fn.getline('.')) +end --- save and execute the current file -nmap { 'x', 'silent write | luafile %', buffer } +local exec_current_lua_selection = function() + local selection = { vim.fn.line('v'), vim.fn.line('.') } + local first, last = vim.fn.min(selection), vim.fn.max(selection) + local code = vim.fn.join(vim.fn.getline(first, last), '\n') + loadstring(code)() +end + +vim.keymap.set('n', 'x', exec_current_lua_line, buffer) +vim.keymap.set('x', 'x', exec_current_lua_selection, buffer) +vim.keymap.set('n', 'x', 'write | luafile %', buffer)