diff --git a/internal/app/config_preference.go b/internal/app/config_preference.go index b876b333..c460c2b5 100644 --- a/internal/app/config_preference.go +++ b/internal/app/config_preference.go @@ -91,7 +91,10 @@ func (a *app) validateCodeEditor(cfg *preferencesConfig) { switch cfg.Prefs.Editor.CodeEditor { case prefs.CodeEditorVSC: if _, err := exec.LookPath(prefs.CodeEditorVSCActual); err != nil { - if _, err := exec.LookPath(prefs.CodeEditorDMActual); err == nil { + if _, err := exec.LookPath(prefs.CodeEditorVSCodiumActual); err == nil { + // VSC invalid but VSCodium valid + cfg.Editor.CodeEditor = prefs.CodeEditorVSCodium + } else if _, err := exec.LookPath(prefs.CodeEditorDMActual); err == nil { // VSC invalid but DM valid cfg.Editor.CodeEditor = prefs.CodeEditorDM } else if _, err := exec.LookPath(prefs.CodeEditorNPPActual); err == nil { @@ -103,11 +106,31 @@ func (a *app) validateCodeEditor(cfg *preferencesConfig) { } log.Print(prefs.CodeEditorVSCActual + " could not be found in PATH. Code Editor pref changed to " + cfg.Editor.CodeEditor) } + case prefs.CodeEditorVSCodium: + if _, err := exec.LookPath(prefs.CodeEditorVSCodiumActual); err != nil { + if _, err := exec.LookPath(prefs.CodeEditorVSCActual); err == nil { + // VSCodium invalid but VSC valid + cfg.Editor.CodeEditor = prefs.CodeEditorVSC + } else if _, err := exec.LookPath(prefs.CodeEditorDMActual); err == nil { + // VSCodium invalid but DM valid + cfg.Editor.CodeEditor = prefs.CodeEditorDM + } else if _, err := exec.LookPath(prefs.CodeEditorNPPActual); err == nil { + // VSCodium invalid but NPP valid + cfg.Editor.CodeEditor = prefs.CodeEditorNPP + } else { + // All invalid just default + cfg.Editor.CodeEditor = prefs.CodeEditorDefault + } + log.Print(prefs.CodeEditorVSCodiumActual + " could not be found in PATH. Code Editor pref changed to " + cfg.Editor.CodeEditor) + } case prefs.CodeEditorDM: if _, err := exec.LookPath(prefs.CodeEditorDMActual); err != nil { if _, err := exec.LookPath(prefs.CodeEditorVSCActual); err == nil { // DM invalid but VSC valid cfg.Editor.CodeEditor = prefs.CodeEditorVSC + } else if _, err := exec.LookPath(prefs.CodeEditorVSCodiumActual); err == nil { + // DM invalid but VSCodium valid + cfg.Editor.CodeEditor = prefs.CodeEditorVSCodium } else if _, err := exec.LookPath(prefs.CodeEditorNPPActual); err == nil { // DM invalid but NPP valid cfg.Editor.CodeEditor = prefs.CodeEditorNPP @@ -122,6 +145,9 @@ func (a *app) validateCodeEditor(cfg *preferencesConfig) { if _, err := exec.LookPath(prefs.CodeEditorVSCActual); err == nil { // NPP invalid but VSC valid cfg.Editor.CodeEditor = prefs.CodeEditorVSC + } else if _, err := exec.LookPath(prefs.CodeEditorVSCodiumActual); err == nil { + // NPP invalid but VSCodium valid + cfg.Editor.CodeEditor = prefs.CodeEditorVSCodium } else if _, err := exec.LookPath(prefs.CodeEditorDMActual); err == nil { // NPP invalid but DM valid cfg.Editor.CodeEditor = prefs.CodeEditorDM diff --git a/internal/app/prefs/save.go b/internal/app/prefs/save.go index 1caa3d64..58dd042b 100644 --- a/internal/app/prefs/save.go +++ b/internal/app/prefs/save.go @@ -18,14 +18,16 @@ var SaveFormats = []string{ } const ( - CodeEditorVSC = "Visual Studio Code" - CodeEditorDM = "Dreammaker" - CodeEditorNPP = "Notepad++" - CodeEditorDefault = "Default App" + CodeEditorVSC = "Visual Studio Code" + CodeEditorVSCodium = "VSCodium" + CodeEditorDM = "Dreammaker" + CodeEditorNPP = "Notepad++" + CodeEditorDefault = "Default App" - CodeEditorVSCActual = "code" - CodeEditorDMActual = "dreammaker" - CodeEditorNPPActual = "notepad++" + CodeEditorVSCActual = "code" + CodeEditorVSCodiumActual = "codium" + CodeEditorDMActual = "dreammaker" + CodeEditorNPPActual = "notepad++" CodeEditorHelp = `These programs must be present in your system PATH to work when using Go to Definition on a prefab. Default App and currently Dreammaker can only open to the relevant file, not the specific line number.` @@ -33,6 +35,7 @@ Default App and currently Dreammaker can only open to the relevant file, not the var CodeEditors = []string{ CodeEditorVSC, + CodeEditorVSCodium, CodeEditorDM, CodeEditorNPP, CodeEditorDefault, diff --git a/internal/app/ui/cpenvironment/menu.go b/internal/app/ui/cpenvironment/menu.go index 53f6a778..7c977486 100644 --- a/internal/app/ui/cpenvironment/menu.go +++ b/internal/app/ui/cpenvironment/menu.go @@ -63,6 +63,10 @@ func (e *Environment) doGoToDefinition(n *treeNode) func() { root := filepath.FromSlash(e.app.LoadedEnvironment().RootDir) argument := path + ":" + fmt.Sprint(location.Line) + ":" + fmt.Sprint(location.Column) command = exec.Command(prefs.CodeEditorVSCActual, root, "-g", argument) + case prefs.CodeEditorVSCodium: + root := filepath.FromSlash(e.app.LoadedEnvironment().RootDir) + argument := path + ":" + fmt.Sprint(location.Line) + ":" + fmt.Sprint(location.Column) + command = exec.Command(prefs.CodeEditorVSCodiumActual, root, "-g", argument) case prefs.CodeEditorDM: // No line/col support until https://www.byond.com/forum/post/2970625 command = exec.Command(prefs.CodeEditorDMActual, path)