diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 225dfc85..f45b7c12 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -254,7 +254,7 @@ func main() { screen.TermMessage(err) } - config.InitRuntimeFiles() + config.InitRuntimeFiles(true) config.InitPlugins() err = config.ReadSettings() diff --git a/cmd/micro/micro_test.go b/cmd/micro/micro_test.go index 7ee521cb..4c5ca684 100644 --- a/cmd/micro/micro_test.go +++ b/cmd/micro/micro_test.go @@ -35,7 +35,7 @@ func startup(args []string) (tcell.SimulationScreen, error) { return nil, err } - config.InitRuntimeFiles() + config.InitRuntimeFiles(true) config.InitPlugins() err = config.ReadSettings() diff --git a/internal/action/command.go b/internal/action/command.go index e30a4841..cd0afece 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -348,7 +348,7 @@ func reloadRuntime(reloadPlugins bool) { } } - config.InitRuntimeFiles() + config.InitRuntimeFiles(true) if reloadPlugins { config.InitPlugins() diff --git a/internal/buffer/buffer_test.go b/internal/buffer/buffer_test.go index 16714426..dcfde610 100644 --- a/internal/buffer/buffer_test.go +++ b/internal/buffer/buffer_test.go @@ -20,8 +20,9 @@ type operation struct { func init() { ulua.L = lua.NewState() - config.InitRuntimeFiles() - config.InitPlugins() + // TODO: uncomment InitRuntimeFiles once we fix races between syntax + // highlighting and buffer editing. + // config.InitRuntimeFiles(false) config.InitGlobalSettings() config.GlobalSettings["backup"] = false config.GlobalSettings["fastdirty"] = true diff --git a/internal/buffer/settings.go b/internal/buffer/settings.go index 52cbafdb..aa011240 100644 --- a/internal/buffer/settings.go +++ b/internal/buffer/settings.go @@ -20,7 +20,7 @@ func (b *Buffer) SetOptionNative(option string, nativeValue interface{}) error { } else if option == "statusline" { screen.Redraw() } else if option == "filetype" { - config.InitRuntimeFiles() + config.InitRuntimeFiles(true) err := config.ReadSettings() if err != nil { screen.TermMessage(err) diff --git a/internal/config/rtfiles.go b/internal/config/rtfiles.go index 53820c5f..24adaebf 100644 --- a/internal/config/rtfiles.go +++ b/internal/config/rtfiles.go @@ -39,6 +39,10 @@ type RuntimeFile interface { var allFiles [][]RuntimeFile var realFiles [][]RuntimeFile +func init() { + initRuntimeVars() +} + func initRuntimeVars() { allFiles = make([][]RuntimeFile, NumTypes) realFiles = make([][]RuntimeFile, NumTypes) @@ -166,10 +170,14 @@ func ListRealRuntimeFiles(fileType RTFiletype) []RuntimeFile { return realFiles[fileType] } -// InitRuntimeFiles initializes all assets file and the config directory -func InitRuntimeFiles() { +// InitRuntimeFiles initializes all assets files and the config directory. +// If `user` is false, InitRuntimeFiles ignores the config directory and +// initializes asset files only. +func InitRuntimeFiles(user bool) { add := func(fileType RTFiletype, dir, pattern string) { - AddRuntimeFilesFromDirectory(fileType, filepath.Join(ConfigDir, dir), pattern) + if user { + AddRuntimeFilesFromDirectory(fileType, filepath.Join(ConfigDir, dir), pattern) + } AddRuntimeFilesFromAssets(fileType, path.Join("runtime", dir), pattern) } diff --git a/internal/config/rtfiles_test.go b/internal/config/rtfiles_test.go index 694e4686..38c8e965 100644 --- a/internal/config/rtfiles_test.go +++ b/internal/config/rtfiles_test.go @@ -7,8 +7,7 @@ import ( ) func init() { - InitRuntimeFiles() - InitPlugins() + InitRuntimeFiles(false) } func TestAddFile(t *testing.T) {