diff --git a/common/maps/params.go b/common/maps/params.go index c14026df..15511f56 100644 --- a/common/maps/params.go +++ b/common/maps/params.go @@ -76,6 +76,14 @@ func (p Params) Merge(pp Params) { p.merge("", pp) } +// MergeRoot transfers values from pp to p for new keys where p is the +// root of the tree. +// This is done recursively. +func (p Params) MergeRoot(pp Params) { + ms, _ := p.GetMergeStrategy() + p.merge(ms, pp) +} + func (p Params) merge(ps ParamsMergeStrategy, pp Params) { ns, found := p.GetMergeStrategy() diff --git a/config/defaultConfigProvider.go b/config/defaultConfigProvider.go index 2391ec85..0a10d5cc 100644 --- a/config/defaultConfigProvider.go +++ b/config/defaultConfigProvider.go @@ -275,7 +275,7 @@ func (c *defaultConfigProvider) Merge(k string, v interface{}) { } } // Merge the rest. - c.root.Merge(p) + c.root.MergeRoot(p) for _, k := range keysToDelete { delete(c.root, k) } diff --git a/config/defaultConfigProvider_test.go b/config/defaultConfigProvider_test.go index 7ab8c049..585ce4c6 100644 --- a/config/defaultConfigProvider_test.go +++ b/config/defaultConfigProvider_test.go @@ -172,7 +172,6 @@ func TestDefaultConfigProvider(t *testing.T) { c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "a": "av", - "b": "bv2", }) }) diff --git a/hugolib/config_test.go b/hugolib/config_test.go index bda1c7fb..8c7d396e 100644 --- a/hugolib/config_test.go +++ b/hugolib/config_test.go @@ -152,6 +152,9 @@ name = "menu-top-main" themeConfig := ` baseURL = "http://bep.is/" +# Can not be set in theme. +disableKinds = ["taxonomy", "term"] + # Can not be set in theme. [frontmatter] expiryDate = ["date"] @@ -228,6 +231,9 @@ name = "menu-theme" got := b.Cfg.Get("").(maps.Params) + // Issue #8866 + b.Assert(b.Cfg.Get("disableKinds"), qt.IsNil) + b.Assert(got["params"], qt.DeepEquals, maps.Params{ "b": maps.Params{ "b1": "b1 main",