Skip to content

Commit 9bd85ba

Browse files
committed
Use utils.df_shortcut_env in lua and gm-editor
Also use it in the single-statement lua command Closes DFHack/dfhack#977
1 parent d675b71 commit 9bd85ba

2 files changed

Lines changed: 9 additions & 46 deletions

File tree

gui/gm-editor.lua

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ persist_screen=persist_screen or nil --does nothing, here just to remind everyon
2727

2828
local gui = require 'gui'
2929
local dialog = require 'gui.dialogs'
30-
local widgets =require 'gui.widgets'
30+
local widgets = require 'gui.widgets'
3131
local guiScript = require 'gui.script'
32-
local args={...}
32+
local utils = require 'utils'
33+
local args = {...}
3334

3435
find_funcs = find_funcs or (function()
3536
local t = {}
@@ -501,29 +502,7 @@ function show_editor(trg)
501502
persist_screen=screen
502503
screen:show()
503504
end
504-
eval_env = {}
505-
setmetatable(eval_env, {__index = function(_, k)
506-
if k == 'scr' or k == 'screen' then
507-
return dfhack.gui.getCurViewscreen()
508-
elseif k == 'bld' or k == 'building' then
509-
return dfhack.gui.getSelectedBuilding()
510-
elseif k == 'item' then
511-
return dfhack.gui.getSelectedItem()
512-
elseif k == 'job' then
513-
return dfhack.gui.getSelectedJob()
514-
elseif k == 'wsjob' or k == 'workshop_job' then
515-
return dfhack.gui.getSelectedWorkshopJob()
516-
elseif k == 'unit' then
517-
return dfhack.gui.getSelectedUnit()
518-
else
519-
for g in pairs(df.global) do
520-
if g == k then
521-
return df.global[k]
522-
end
523-
end
524-
return _G[k]
525-
end
526-
end})
505+
eval_env = utils.df_shortcut_env()
527506
function eval(s)
528507
local f, err = load("return " .. s, "expression", "t", eval_env)
529508
if err then qerror(err) end

lua.lua

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,11 @@ There are the following ways to invoke this command:
2424
2525
]====]
2626

27-
local args={...}
27+
local utils = require 'utils'
28+
local args = {...}
2829
local cmd = args[1]
2930

30-
env = env or {}
31-
setmetatable(env, {__index = function(self, k)
32-
if k == 'scr' or k == 'screen' then
33-
return dfhack.gui.getCurViewscreen()
34-
elseif k == 'bld' or k == 'building' then
35-
return dfhack.gui.getSelectedBuilding()
36-
elseif k == 'item' then
37-
return dfhack.gui.getSelectedItem()
38-
elseif k == 'job' then
39-
return dfhack.gui.getSelectedJob()
40-
elseif k == 'wsjob' or k == 'workshop_job' then
41-
return dfhack.gui.getSelectedWorkshopJob()
42-
elseif k == 'unit' then
43-
return dfhack.gui.getSelectedUnit()
44-
else
45-
return _G[k]
46-
end
47-
end})
31+
env = env or utils.df_shortcut_env()
4832

4933
if cmd=="--file" or cmd=="-f" then
5034
local f,err=loadfile (args[2])
@@ -71,8 +55,8 @@ elseif cmd~=nil then
7155
cmd = 'return '..string.sub(cmd, 2)
7256
end
7357

74-
local f,err=load(cmd,'=(lua command)', 't')
75-
if f==nil then
58+
local f, err = load(cmd, '=(lua command)', 't', env)
59+
if f == nil then
7660
qerror(err)
7761
end
7862

0 commit comments

Comments
 (0)