Skip to content

Commit df01bf4

Browse files
authored
Merge pull request #291 from davidgiven/b289
Fix error when trying to save a documentset with no name.
2 parents 2a07786 + 23e5238 commit df01bf4

7 files changed

+30
-8
lines changed

src/lua/addons/autosave.lua

+10-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@ local function announce()
1818
end
1919

2020
local function makefilename(pattern: string)
21-
local leafname = Leafname(documentSet.name)
22-
local dirname = GlobalSettings.directories.autosaves or Dirname(documentSet.name)
21+
local name = documentSet.name
22+
assert(name)
23+
24+
local leafname = Leafname(name)
25+
local dirname = GlobalSettings.directories.autosaves or Dirname(name)
2326
leafname = leafname:gsub("%.wg$", "")
2427
leafname = leafname:gsub("%%", "%%%%")
2528

@@ -46,6 +49,11 @@ do
4649
settings.lastsaved = os.time()
4750
end
4851

52+
if not documentSet.name then
53+
ImmediateMessage("Cannot autosave; document set has no name!")
54+
return
55+
end
56+
4957
if ((os.time() - settings.lastsaved) > (settings.period * 60)) then
5058
ImmediateMessage("Autosaving...")
5159

src/lua/addons/templates.lua

+5-3
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@ function Cmd.SaveCurrentDocumentAsTemplate(): (boolean, string?)
2424
filename = filename .. ".wg"
2525
end
2626

27-
documentSet.name = ""
27+
local oldname = documentSet.name
28+
documentSet.name = nil
2829

2930
ImmediateMessage("Saving...")
3031
documentSet:clean()
3132
local r, e = SaveDocumentSetRaw(filename)
33+
documentSet.name = oldname
3234
if not r then
3335
assert(e)
3436
ModalMessage("Save failed", "The document could not be saved: "..e)
@@ -58,7 +60,7 @@ function Cmd.CreateDocumentSetFromTemplate(): (boolean, string?)
5860
end
5961

6062
local r, e = Cmd.LoadDocumentSet(filename)
61-
documentSet.name = ""
63+
documentSet.name = nil
6264
return r, e
6365
end
6466

@@ -88,7 +90,7 @@ function Cmd.LoadDefaultTemplate()
8890
end
8991
end
9092

91-
documentSet.name = ""
93+
documentSet.name = nil
9294
return r, e
9395
end
9496

src/lua/documentset.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ _G.DocumentSet = DocumentSet
2929

3030
type DocumentSet = {
3131
fileformat: number,
32-
name: string,
32+
name: string?,
3333
menu: MenuTree,
3434
current: Document,
3535
documents: {[number]: Document},

src/lua/fileio.lua

+2-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ function Cmd.SaveCurrentDocumentAs(filename: string?): boolean
175175

176176
ImmediateMessage("Saving...")
177177
documentSet:clean()
178-
local r, e = SaveDocumentSetRaw(documentSet.name)
178+
print(filename)
179+
local r, e = SaveDocumentSetRaw(filename)
179180
if not r then
180181
assert(e)
181182
ModalMessage("Save failed", "The document could not be saved: "..e)

tests/build.py

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"weirdness-combining-words",
5858
"weirdness-delete-word",
5959
"weirdness-deletion-with-multiple-spaces",
60+
"weirdness-documentset-default-name",
6061
"weirdness-end-of-lines",
6162
"weirdness-forward-delete",
6263
"weirdness-globals-applied-on-startup",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
--!nonstrict
2+
loadfile("tests/testsuite.lua")()
3+
4+
AssertEquals(documentSet.name, nil)
5+
6+
ResetDocumentSet()
7+
AssertEquals(documentSet.name, nil)
8+
9+
Cmd.LoadDefaultTemplate()
10+
AssertEquals(documentSet.name, nil)

tools/typechecker.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,5 +167,5 @@ int main(int argc, char* const* argv)
167167
}
168168
printf("(%d errors)\n", count);
169169

170-
return 0;
170+
return count ? 1 : 0;
171171
}

0 commit comments

Comments
 (0)