Remove the open command

`open` and `view` shared one implementation and differed in a single
line: `open` also made the project the active one. Only `view` is left,
with the behaviour it always had.

Dropping it from builtinCmds is the part worth noting: a reserved word
cannot be shadowed by an alias, so `open` is now free for one --
`alias open '!xdg-open $1'` works, which it could not before. That also
made a completion test wrong, since it used `open` as its example of a
name a builtin owns; it uses `status` now.

The `runInDir(d, "open", ...)` calls stay: those are macOS's open(1),
which is how an Xcode workspace gets opened.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 18:35:45 +02:00
co-authored by Claude Opus 5
parent 0d0d28560e
commit 65342bcd7c
8 changed files with 17 additions and 20 deletions
+1 -2
View File
@@ -45,14 +45,13 @@ func runeSuffixes(cands []string, prefix string) ([][]rune, int) {
}
// builtinCompleter is the command tree. Command names complete at the start of
// the line; cd/open/view complete local project names; clone/show complete
// the line; cd/view complete local project names; clone/show complete
// repository names cached from the git server; checkout/tag complete branch and
// tag names; pushremote/release complete mirror targets; dist completes
// filesystem paths.
func builtinCompleter() *readline.PrefixCompleter {
return readline.NewPrefixCompleter(
readline.PcItem("cd", readline.PcItemDynamic(dynLocalProjects)),
readline.PcItem("open", readline.PcItemDynamic(dynLocalProjects)),
readline.PcItem("view", readline.PcItemDynamic(dynLocalProjects)),
readline.PcItem("clone",
readline.PcItem("-a", readline.PcItemDynamic(dynServerArchives)),