Skip to main content

atomic completions

Enable tab-completion for the atomic CLI in your shell. Completion works in two layers:

  • Static completion — completes subcommands and flags from a generated script. Stable and self-contained.
  • Dynamic completion — additionally completes live values such as view names and change hashes by querying your repository at completion time. This is what makes atomic insert view <TAB> and atomic insert change <TAB> suggest real names and hashes.

The dynamic engine also completes subcommands and flags, so if you enable it you get everything in one step. zsh is the primary target below; other shells are covered at the end.

Quick start (zsh)

Add this line to your ~/.zshrc to enable the dynamic completer:

source <(COMPLETE=zsh atomic)

Reload your shell:

source ~/.zshrc

That's it. Now, inside an Atomic repository:

atomic insert view <TAB>      # → your view names (dev, feature-auth, …)
atomic insert change <TAB> # → recent change hashes, annotated with messages
atomic <TAB> # → subcommands
atomic insert --<TAB> # → flags (--to, --dry-run, --allow-conflicts, …)

What completes

ContextCompletions
atomic <TAB>Top-level subcommands
atomic insert <TAB>view, change, tag, preview
atomic insert view <TAB>Live view names
atomic insert change <TAB>Recent change hashes (with commit messages as hints)
atomic insert --to <TAB>Live view names
atomic <cmd> --<TAB>That command's flags

Value completion (view names, change hashes) is only available with the dynamic engine, and only when you run it inside a repository.

Static script (alternative)

If you prefer a checked-in completion script — or your environment can't use the dynamic engine — generate one with the completions command:

atomic completions zsh > ~/.zfunc/_atomic

Then make sure ~/.zfunc is on your fpath and completion is initialized. Add this to ~/.zshrc before any compinit call:

fpath=(~/.zfunc $fpath)
autoload -Uz compinit && compinit

Reload your shell. The static script completes subcommands and flags, but does not complete live view names or change hashes — use the dynamic engine for that.

Synopsis

atomic completions <SHELL>

<SHELL>

The shell to generate a static completion script for. Supported values: bash, zsh, fish, elvish, powershell.

atomic completions zsh
atomic completions bash
atomic completions fish

Other shells

The commands below assume the dynamic engine where the shell supports it, and fall back to the static script otherwise.

bash

Dynamic:

echo 'source <(COMPLETE=bash atomic)' >> ~/.bashrc

Static:

atomic completions bash | sudo tee /etc/bash_completion.d/atomic > /dev/null

fish

Dynamic:

echo 'COMPLETE=fish atomic | source' >> ~/.config/fish/config.fish

Static:

atomic completions fish > ~/.config/fish/completions/atomic.fish

PowerShell

Static:

atomic completions powershell | Out-String | Invoke-Expression

(Add the line above to your PowerShell profile to make it persistent.)

Verify

Confirm the static generator works:

atomic completions zsh | head -1
# → #compdef atomic

Then open a new shell and press <TAB> after atomic insert view inside a repository — you should see your view names.

Troubleshooting

No view names or change hashes appear. Value completion needs the dynamic engine (source <(COMPLETE=zsh atomic)) and a current directory inside an Atomic repository. The static script only completes subcommands and flags. Outside a repository, value completion returns nothing by design (it never errors).

Nothing completes at all in zsh. Ensure autoload -Uz compinit && compinit runs in your ~/.zshrc, and that you started a fresh shell after editing it. If you use a framework (oh-my-zsh, prezto), it usually calls compinit for you — put the source <(…) line after that.

Completions look stale after upgrading Atomic. The dynamic engine always reflects the installed binary, so just reload your shell. If you used the static script, regenerate it: atomic completions zsh > ~/.zfunc/_atomic.

See Also

  • atomic insert — the command whose view/change arguments benefit most from value completion
  • atomic view — manage the views that complete under insert view
  • Installation — install the CLI