Skip to content

Commit

Permalink
Merge pull request #291 from davidgiven/b289
Browse files Browse the repository at this point in the history
Fix error when trying to save a documentset with no name.
  • Loading branch information
davidgiven authored Feb 6, 2025
2 parents 2a07786 + 23e5238 commit df01bf4
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 8 deletions.
12 changes: 10 additions & 2 deletions src/lua/addons/autosave.lua
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,11 @@ local function announce()
end

local function makefilename(pattern: string)
local leafname = Leafname(documentSet.name)
local dirname = GlobalSettings.directories.autosaves or Dirname(documentSet.name)
local name = documentSet.name
assert(name)

local leafname = Leafname(name)
local dirname = GlobalSettings.directories.autosaves or Dirname(name)
leafname = leafname:gsub("%.wg$", "")
leafname = leafname:gsub("%%", "%%%%")

Expand All @@ -46,6 +49,11 @@ do
settings.lastsaved = os.time()
end

if not documentSet.name then
ImmediateMessage("Cannot autosave; document set has no name!")
return
end

if ((os.time() - settings.lastsaved) > (settings.period * 60)) then
ImmediateMessage("Autosaving...")

Expand Down
8 changes: 5 additions & 3 deletions src/lua/addons/templates.lua
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@ function Cmd.SaveCurrentDocumentAsTemplate(): (boolean, string?)
filename = filename .. ".wg"
end

documentSet.name = ""
local oldname = documentSet.name
documentSet.name = nil

ImmediateMessage("Saving...")
documentSet:clean()
local r, e = SaveDocumentSetRaw(filename)
documentSet.name = oldname
if not r then
assert(e)
ModalMessage("Save failed", "The document could not be saved: "..e)
Expand Down Expand Up @@ -58,7 +60,7 @@ function Cmd.CreateDocumentSetFromTemplate(): (boolean, string?)
end

local r, e = Cmd.LoadDocumentSet(filename)
documentSet.name = ""
documentSet.name = nil
return r, e
end

Expand Down Expand Up @@ -88,7 +90,7 @@ function Cmd.LoadDefaultTemplate()
end
end

documentSet.name = ""
documentSet.name = nil
return r, e
end

2 changes: 1 addition & 1 deletion src/lua/documentset.lua
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ _G.DocumentSet = DocumentSet

type DocumentSet = {
fileformat: number,
name: string,
name: string?,
menu: MenuTree,
current: Document,
documents: {[number]: Document},
Expand Down
3 changes: 2 additions & 1 deletion src/lua/fileio.lua
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,8 @@ function Cmd.SaveCurrentDocumentAs(filename: string?): boolean

ImmediateMessage("Saving...")
documentSet:clean()
local r, e = SaveDocumentSetRaw(documentSet.name)
print(filename)
local r, e = SaveDocumentSetRaw(filename)
if not r then
assert(e)
ModalMessage("Save failed", "The document could not be saved: "..e)
Expand Down
1 change: 1 addition & 0 deletions tests/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
"weirdness-combining-words",
"weirdness-delete-word",
"weirdness-deletion-with-multiple-spaces",
"weirdness-documentset-default-name",
"weirdness-end-of-lines",
"weirdness-forward-delete",
"weirdness-globals-applied-on-startup",
Expand Down
10 changes: 10 additions & 0 deletions tests/weirdness-documentset-default-name.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--!nonstrict
loadfile("tests/testsuite.lua")()

AssertEquals(documentSet.name, nil)

ResetDocumentSet()
AssertEquals(documentSet.name, nil)

Cmd.LoadDefaultTemplate()
AssertEquals(documentSet.name, nil)
2 changes: 1 addition & 1 deletion tools/typechecker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -167,5 +167,5 @@ int main(int argc, char* const* argv)
}
printf("(%d errors)\n", count);

return 0;
return count ? 1 : 0;
}

0 comments on commit df01bf4

Please sign in to comment.