summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/hugo.go16
-rw-r--r--hugofs/files/classifier.go10
2 files changed, 21 insertions, 5 deletions
diff --git a/commands/hugo.go b/commands/hugo.go
index fbe2349a0..4f011a33b 100644
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -30,6 +30,8 @@ import (
"syscall"
"time"
+ "github.com/gohugoio/hugo/hugofs/files"
+
"github.com/gohugoio/hugo/common/types"
"github.com/gohugoio/hugo/hugofs"
@@ -1200,12 +1202,16 @@ func partitionDynamicEvents(sourceFs *filesystems.SourceFilesystems, events []fs
func pickOneWriteOrCreatePath(events []fsnotify.Event) string {
name := ""
- // Some editors (for example notepad.exe on Windows) triggers a change
- // both for directory and file. So we pick the longest path, which should
- // be the file itself.
for _, ev := range events {
- if (ev.Op&fsnotify.Write == fsnotify.Write || ev.Op&fsnotify.Create == fsnotify.Create) && len(ev.Name) > len(name) {
- name = ev.Name
+ if ev.Op&fsnotify.Write == fsnotify.Write || ev.Op&fsnotify.Create == fsnotify.Create {
+ if files.IsIndexContentFile(ev.Name) {
+ return ev.Name
+ }
+
+ if files.IsContentFile(ev.Name) {
+ name = ev.Name
+ }
+
}
}
diff --git a/hugofs/files/classifier.go b/hugofs/files/classifier.go
index f0e0911ab..aab199850 100644
--- a/hugofs/files/classifier.go
+++ b/hugofs/files/classifier.go
@@ -69,6 +69,16 @@ func IsContentFile(filename string) bool {
return contentFileExtensionsSet[strings.TrimPrefix(filepath.Ext(filename), ".")]
}
+func IsIndexContentFile(filename string) bool {
+ if !IsContentFile(filename) {
+ return false
+ }
+
+ base := filepath.Base(filename)
+
+ return strings.HasPrefix(base, "index.") || strings.HasPrefix(base, "_index.")
+}
+
func IsHTMLFile(filename string) bool {
return htmlFileExtensionsSet[strings.TrimPrefix(filepath.Ext(filename), ".")]
}