diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index 7cbf5cb..f00fc4a 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -17,6 +17,7 @@ export default defineConfig({ items: [ // Each item here is one entry in the navigation menu. { label: 'Installation', link: '/getting-started/installation/' }, + { label: 'Enabling Autocomplete', link: '/getting-started/autocomplete/' }, { label: 'Glossary', link: '/getting-started/glossary/' }, ], }, diff --git a/docs/src/content/docs/getting-started/autocomplete.mdx b/docs/src/content/docs/getting-started/autocomplete.mdx new file mode 100644 index 0000000..e5f37bb --- /dev/null +++ b/docs/src/content/docs/getting-started/autocomplete.mdx @@ -0,0 +1,70 @@ +--- +title: Enabling Autocomplete +description: A guide to setting up autocomplete with bookshelf +--- +import { Tabs, TabItem } from '@astrojs/starlight/components'; + + +All of this information is taken from the [click documentation](https://click.palletsprojects.com/en/8.1.x/shell-completion/), and you should read it if you want to know more. +In order for completion to be used, the user needs to register a special function with their shell. +The script is different for every shell, and Click will output it for bookshelf when called with `_BOOKSHELF_COMPLETE` set to `{shell}_source`. +The built-in shells are bash, zsh, and fish. + +## Using Eval + + + + Add this to ~/.bashrc: + ```bash + eval "$(_BOOKSHELF_COMPLETE=bash_source bookshelf)" + ``` + + + Add this to ~/.zshrc: + ```bash + eval "$(_BOOKSHELF_COMPLETE=zsh_source bookshelf)" + ``` + + + + Add this to ~/.config/fish/completions/bookshelf.fish: + ```bash + _BOOKSHELF_COMPLETE=fish_source bookshelf | source + ``` + This is the same file used for the activation script method below. For Fish it’s probably always easier to use that method. + + + +## Using an Activation Script +Using eval means that the command is invoked and evaluated every time a shell is started, which can delay shell responsiveness. +To speed it up, write the generated script to a file, then source that. +You can generate the files ahead of time and distribute them with your program to save your users a step. + + + + Save the script somewhere. + ```bash + _BOOKSHELF_COMPLETE=bash_source bookshelf > ~/.bookshelf-complete.bash + ``` + Source the file in ~/.bashrc. + ```bash + . ~/.bookshelf-complete.bash + ``` + + + Save the script somewhere. + ```bash + _BOOKSHELF_COMPLETE=zsh_source bookshelf > ~/.bookshelf-complete.zsh + ``` + Source the file in ~/.zshrc. + ```bash + . ~/.bookshelf-complete.zsh + ``` + + + Save the script to ~/.config/fish/completions/bookshelf.fish: + ```bash + _BOOKSHELF_COMPLETE=fish_source bookshelf > ~/.config/fish/completions/bookshelf.fish + ``` + + \ No newline at end of file diff --git a/docs/src/content/docs/getting-started/installation.mdx b/docs/src/content/docs/getting-started/installation.mdx index 3050bed..84d7869 100644 --- a/docs/src/content/docs/getting-started/installation.mdx +++ b/docs/src/content/docs/getting-started/installation.mdx @@ -4,7 +4,6 @@ description: A guide to install bookshelf --- import { Tabs, TabItem } from '@astrojs/starlight/components'; -## Prerequisites ## Using a Package Manager You can easily add this project to your own by using your favorite project manager. Here are some examples for popular build tools: