diff --git a/watch.go b/watch.go index 1b4af32..efde48a 100644 --- a/watch.go +++ b/watch.go @@ -17,14 +17,14 @@ package main import ( "bytes" "fmt" + "github.com/howeyc/fsnotify" "os" "os/exec" + "regexp" "runtime" "strings" "sync" "time" - - "github.com/howeyc/fsnotify" ) var ( @@ -47,8 +47,8 @@ func NewWatcher(paths []string, files []string, isgenerate bool) { case e := <-watcher.Event: isbuild := true - // Skip TMP files for Sublime Text. - if checkTMPFile(e.Name) { + // Skip ignored files + if shouldIgnoreFile(e.Name) { continue } if !checkIfWatchExt(e.Name) { @@ -230,15 +230,30 @@ func Start(appname string) { started <- true } -// checkTMPFile returns true if the event was for TMP files. -func checkTMPFile(name string) bool { - if strings.HasSuffix(strings.ToLower(name), ".tmp") { - return true +// Should ignore filenames generated by +// Emacs, Vim or SublimeText +func shouldIgnoreFile(filename string) bool { + for _, regex := range ignoredFilesRegExps { + r, err := regexp.Compile(regex) + if err != nil { + panic("Could not compile the regex: " + regex) + } + if r.MatchString(filename) { + return true + } else { + continue + } } return false } var watchExts = []string{".go"} +var ignoredFilesRegExps = []string{ + `.#(\w+).go`, + `.(\w+).go.swp`, + `(\w+).go~`, + `(\w+).tmp`, +} // checkIfWatchExt returns true if the name HasSuffix . func checkIfWatchExt(name string) bool {