diff --git a/cmd/cheat/str_config.go b/cmd/cheat/str_config.go index 72a7649..0eec47f 100644 --- a/cmd/cheat/str_config.go +++ b/cmd/cheat/str_config.go @@ -9,7 +9,7 @@ import ( func configs() string { return strings.TrimSpace(`--- # The editor to use with 'cheat -e '. Defaults to $EDITOR or $VISUAL. -# editor: vim +editor: EDITOR_PATH # Should 'cheat' always colorize output? colorize: false diff --git a/configs/conf.yml b/configs/conf.yml index 4fb1d77..25bfbc6 100644 --- a/configs/conf.yml +++ b/configs/conf.yml @@ -1,6 +1,6 @@ --- # The editor to use with 'cheat -e '. Defaults to $EDITOR or $VISUAL. -# editor: vim +editor: EDITOR_PATH # Should 'cheat' always colorize output? colorize: false diff --git a/internal/config/editor.go b/internal/config/editor.go index 73087cc..88fdfc9 100644 --- a/internal/config/editor.go +++ b/internal/config/editor.go @@ -15,11 +15,22 @@ func Editor() (string, error) { return "notepad", nil } - // look for `nano` on the `PATH` + // look for `nano` and `vim` on the `PATH` + def, _ := exec.LookPath("editor") // default `editor` wrapper nano, _ := exec.LookPath("nano") + vim, _ := exec.LookPath("vim") - // search for `$VISUAL`, `$EDITOR`, and then `nano`, in that order - for _, editor := range []string{os.Getenv("VISUAL"), os.Getenv("EDITOR"), nano} { + // set editor priority + editors := []string{ + os.Getenv("VISUAL"), + os.Getenv("EDITOR"), + def, + nano, + vim, + } + + // return the first editor that was found per the priority above + for _, editor := range editors { if editor != "" { return editor, nil } diff --git a/internal/installer/run.go b/internal/installer/run.go index 7fc22ad..302c653 100644 --- a/internal/installer/run.go +++ b/internal/installer/run.go @@ -20,11 +20,18 @@ func Run(configs string, confpath string) error { community := filepath.Join(confdir, "cheatsheets", "community") personal := filepath.Join(confdir, "cheatsheets", "personal") - // template the above paths into the default configs + // set default cheatpaths configs = strings.Replace(configs, "COMMUNITY_PATH", community, -1) configs = strings.Replace(configs, "PERSONAL_PATH", personal, -1) + + // locate and set a default pager configs = strings.Replace(configs, "PAGER_PATH", config.Pager(), -1) + // locate and set a default editor + if editor, err := config.Editor(); err == nil { + configs = strings.Replace(configs, "EDITOR_PATH", editor, -1) + } + // prompt the user to download the community cheatsheets yes, err := Prompt( "Would you like to download the community cheatsheets? [Y/n]",