added a mediocre line editor, skex (2)
This commit is contained in:
parent
04246a63c6
commit
833b5f5504
@ -14,6 +14,7 @@ library/readline.lua
|
|||||||
applications/nshd.lua
|
applications/nshd.lua
|
||||||
applications/nshc.lua
|
applications/nshc.lua
|
||||||
applications/shutil.lua
|
applications/shutil.lua
|
||||||
|
applications/skex2.lua
|
||||||
applications/luash.lua
|
applications/luash.lua
|
||||||
applications/ircbridge.lua
|
applications/ircbridge.lua
|
||||||
applications/autoluash.lua
|
applications/autoluash.lua
|
||||||
|
@ -14,6 +14,7 @@ library/readline.lua
|
|||||||
applications/nshd.lua
|
applications/nshd.lua
|
||||||
applications/nshc.lua
|
applications/nshc.lua
|
||||||
applications/shutil.lua
|
applications/shutil.lua
|
||||||
|
applications/skex2.lua
|
||||||
applications/luash.lua
|
applications/luash.lua
|
||||||
applications/ircbridge.lua
|
applications/ircbridge.lua
|
||||||
applications/autoluash.lua
|
applications/autoluash.lua
|
||||||
|
63
modules/applications/skex2.lua
Normal file
63
modules/applications/skex2.lua
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
function skex(s,f)
|
||||||
|
local c,cs,cT,lT,lP="","",{},{},1
|
||||||
|
if s then
|
||||||
|
if f then
|
||||||
|
c=s
|
||||||
|
else
|
||||||
|
local f=fopen(s,"rb")
|
||||||
|
local nc=fread(f,2048)
|
||||||
|
while nc ~= nil and nc ~= "" do
|
||||||
|
c=c..nc
|
||||||
|
nc=fread(f,2048)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for l in c:gmatch("(.-)\n") do lT[#lT+1]=l end
|
||||||
|
end
|
||||||
|
while true do
|
||||||
|
cs=readln()
|
||||||
|
cT={}
|
||||||
|
for w in cs:gmatch("%S+") do cT[#cT+1]=w end
|
||||||
|
if cT[1] == "q" then break
|
||||||
|
elseif cT[1] == "l" then
|
||||||
|
for i = (TN(cT[2]) or 1), (TN(cT[3]) or #lT) do
|
||||||
|
print(TS(i).."\t"..(lT[i] or ""))
|
||||||
|
end
|
||||||
|
elseif cT[1] == "a" or cT[1] == "i" or cT[1] == "s" then
|
||||||
|
if TN(cT[2]) then lP=TN(cT[2]) end
|
||||||
|
if cT[1] == "s" then for i = 1,TN(cT[3]) do T.remove(lT,i+(TN(cT[2])-1)) end end
|
||||||
|
if cT[1] == "a" then lP=lP+1 end
|
||||||
|
while true do
|
||||||
|
cs=readln()
|
||||||
|
if cs~="." then
|
||||||
|
T.insert(lT,lP,cs)
|
||||||
|
lP=lP+1
|
||||||
|
else break end
|
||||||
|
end
|
||||||
|
elseif cT[1] == "f" then
|
||||||
|
s=cT[2] or s
|
||||||
|
print(s)
|
||||||
|
elseif cT[1] == "e" then
|
||||||
|
c=""
|
||||||
|
for k,v in ipairs(lT) do c=c..v.."\n" end
|
||||||
|
print(pcall(load(c)))
|
||||||
|
elseif cT[1] == "w" then
|
||||||
|
f=fopen(s,"wb")
|
||||||
|
c=""
|
||||||
|
for k,v in ipairs(lT) do fwrite(f,v.."\n") end
|
||||||
|
fclose(f)
|
||||||
|
elseif cT[1] == "d" then
|
||||||
|
for i = 1, TN(cT[3])-TN(cT[2]) do
|
||||||
|
T.remove(lT,cT[2])
|
||||||
|
end
|
||||||
|
elseif cT[1] == "p" then
|
||||||
|
nPT=TN(cT[2])
|
||||||
|
if nPT then
|
||||||
|
lP=nPT
|
||||||
|
else
|
||||||
|
print(lP)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
print("?")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user