shithub: hugo

Download patch

ref: 72903be587e9c4e3644f60b11e26238ec03da2db
parent: 1c114d539b0755724443fe28c90b12fe2a19085a
author: Bjørn Erik Pedersen <[email protected]>
date: Fri Dec 29 04:37:37 EST 2017

commands: Make sure all language homes are always re-rendered in fast render mode

Fixes #4125

--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -940,9 +940,17 @@
 	visited := c.visitedURLs.PeekAllSet()
 	doLiveReload := !buildWatch && !c.Cfg.GetBool("disableLiveReload")
 	if doLiveReload && !c.Cfg.GetBool("disableFastRender") {
-		home := c.pathSpec.PrependBasePath("/")
-		// Make sure we always render the home page
-		visited[home] = true
+
+		// Make sure we always render the home pages
+		for _, l := range c.languages {
+			langPath := c.PathSpec().GetLangSubDir(l.Lang)
+			if langPath != "" {
+				langPath = langPath + "/"
+			}
+			home := c.pathSpec.PrependBasePath("/" + langPath)
+			visited[home] = true
+		}
+
 	}
 	return Hugo.Build(hugolib.BuildCfg{RecentlyVisited: visited}, events...)
 }
--- a/helpers/pathspec.go
+++ b/helpers/pathspec.go
@@ -31,8 +31,8 @@
 	uglyURLs           bool
 	canonifyURLs       bool
 
-	language *Language
-	//StatsCounter *siteSta
+	language  *Language
+	languages Languages
 
 	// pagination path handling
 	paginatePath string
@@ -85,11 +85,22 @@
 		staticDirs = append(staticDirs, getStringOrStringSlice(cfg, "staticDir", i)...)
 	}
 
-	var lang string
+	var (
+		lang      string
+		language  *Language
+		languages Languages
+	)
+
 	if l, ok := cfg.(*Language); ok {
+		language = l
 		lang = l.Lang
+
 	}
 
+	if l, ok := cfg.Get("languagesSorted").(Languages); ok {
+		languages = l
+	}
+
 	ps := &PathSpec{
 		Fs:                             fs,
 		Cfg:                            cfg,
@@ -98,6 +109,8 @@
 		uglyURLs:                       cfg.GetBool("uglyURLs"),
 		canonifyURLs:                   cfg.GetBool("canonifyURLs"),
 		multilingual:                   cfg.GetBool("multilingual"),
+		language:                       language,
+		languages:                      languages,
 		defaultContentLanguageInSubdir: cfg.GetBool("defaultContentLanguageInSubdir"),
 		defaultContentLanguage:         cfg.GetString("defaultContentLanguage"),
 		paginatePath:                   cfg.GetString("paginatePath"),
@@ -118,10 +131,6 @@
 	}
 
 	ps.PublishDir = publishDir
-
-	if language, ok := cfg.(*Language); ok {
-		ps.language = language
-	}
 
 	return ps, nil
 }
--- a/helpers/url.go
+++ b/helpers/url.go
@@ -215,6 +215,23 @@
 	return currentLang
 }
 
+// GetLangSubDir returns the given language's subdir if needed.
+func (p *PathSpec) GetLangSubDir(lang string) string {
+	if !p.multilingual {
+		return ""
+	}
+
+	if p.languages.IsMultihost() {
+		return ""
+	}
+
+	if lang == "" || (lang == p.defaultContentLanguage && !p.defaultContentLanguageInSubdir) {
+		return ""
+	}
+
+	return lang
+}
+
 // IsAbsURL determines whether the given path points to an absolute URL.
 func IsAbsURL(path string) bool {
 	url, err := url.Parse(path)