pull/3/head
Björn Linse 6 years ago
parent ae4764d85f
commit e4b6e00c1a

@ -91,8 +91,12 @@ local function dedent(str, leave_indent)
return str
end
local function exec(str)
local chunk, err = loadstring(str,"g")
local function exec(str,doeval)
local code = str
if doeval then
code = "return \n"..str
end
local chunk, err = loadstring(code,"g")
local inlines = splitlines(dedent(str))
if inlines[#inlines] == "" then
inlines[#inlines] = nil
@ -110,10 +114,12 @@ local function exec(str)
else
local oldprint = _G.print
_G.print = luadev_print
local st, err2 = pcall(chunk)
local st, res = pcall(chunk)
_G.print = oldprint
if st == false then
append_buf({err2},"WarningMsg")
append_buf({res},"WarningMsg")
elseif doeval or res ~= nil then
append_buf(require'inspect'(res))
end
end
end

@ -2,6 +2,8 @@ command! Luadev lua require'luadev'.start()
noremap <Plug>(Luadev-RunLine) <Cmd>lua require'luadev'.exec(vim.api.nvim_get_current_line())<cr>
vnoremap <Plug>(Luadev-Run) :<c-u>call luaeval("require'luadev'.exec(_A)", <SID>get_visual_selection())<cr>
vnoremap <Plug>(Luadev-Eval) :<c-u>call luaeval("require'luadev'.exec(_A,true)", <SID>get_visual_selection())<cr>
noremap <Plug>(Luadev-EvalWord) :<c-u>call luaeval("require'luadev'.exec(_A,true)", <SID>get_current_word())<cr>
" thanks to @xolox on stackoverflow
function! s:get_visual_selection()
@ -18,3 +20,12 @@ function! s:get_visual_selection()
return join(lines, "\n")."\n"
endfunction
function! s:get_current_word()
let isk_save = &isk
let &isk = '@,48-57,_,192-255,.'
let word = expand("<cword>")
let &isk = isk_save
return word
endfunction

Loading…
Cancel
Save