From b8b8436fcca17c152e94cae2a1acad32efc3946c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 6 Nov 2018 10:04:37 +0100 Subject: [PATCH] hugolib: Fix changing paginators in lazy render Fixes #5406 --- hugolib/hugo_sites.go | 10 ++++++---- hugolib/page.go | 16 +++++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go index 65e3260f6..9cc091927 100644 --- a/hugolib/hugo_sites.go +++ b/hugolib/hugo_sites.go @@ -416,6 +416,7 @@ type BuildCfg struct { // a Page: If it is recently visited (the home pages will always be in this set) or changed. // Note that a page does not have to have a content page / file. // For regular builds, this will allways return true. +// TODO(bep) rename/work this. func (cfg *BuildCfg) shouldRender(p *Page) bool { if p.forceRender { p.forceRender = false @@ -427,6 +428,9 @@ func (cfg *BuildCfg) shouldRender(p *Page) bool { } if cfg.RecentlyVisited[p.RelPermalink()] { + if cfg.PartialReRender { + _ = p.initMainOutputFormat() + } return true } @@ -644,15 +648,13 @@ func (h *HugoSites) setupTranslations() { func (s *Site) preparePagesForRender(start bool) error { for _, p := range s.Pages { - p.setContentInit(start) - if err := p.initMainOutputFormat(); err != nil { + if err := p.prepareForRender(start); err != nil { return err } } for _, p := range s.headlessPages { - p.setContentInit(start) - if err := p.initMainOutputFormat(); err != nil { + if err := p.prepareForRender(start); err != nil { return err } } diff --git a/hugolib/page.go b/hugolib/page.go index 070df133b..c726394a2 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -304,7 +304,7 @@ func (p *Page) initContent() { go func() { var err error - err = p.prepareForRender() + err = p.prepareContent() if err != nil { c <- err return @@ -1142,11 +1142,17 @@ func (p *Page) subResourceTargetPathFactory(base string) string { return path.Join(p.relTargetPathBase, base) } -func (p *Page) initMainOutputFormat() error { - if p.mainPageOutput != nil { - return nil +// Prepare this page for rendering for a new site. The flag start is set +// for the first site and output format. +func (p *Page) prepareForRender(start bool) error { + p.setContentInit(start) + if start { + return p.initMainOutputFormat() } + return nil +} +func (p *Page) initMainOutputFormat() error { outFormat := p.outputFormats[0] pageOutput, err := newPageOutput(p, false, false, outFormat) @@ -1193,7 +1199,7 @@ func (p *Page) setContentInit(start bool) error { } -func (p *Page) prepareForRender() error { +func (p *Page) prepareContent() error { s := p.s // If we got this far it means that this is either a new Page pointer