aia 0.0.5 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a080fd671c1e5e3f9420f036892afb69a8d4190745da8bbce82620356ae2ad10
4
- data.tar.gz: ffe746cbcb3a24216f39f4ec220b962828ab925041fe6f97f006676988006690
3
+ metadata.gz: 0d2d934f517983c9854654eeb01d9b5ca6a08c92cb531b315a8b223e6e2ffd23
4
+ data.tar.gz: cd5ac0f18c2a290205c717c2d9e1e2e43ffe0a51f5aac400d3a1fce6137db4c5
5
5
  SHA512:
6
- metadata.gz: 6ac1c123e391a981800ac8777e31de96cc68af4747e0756902c3f3bd6eaa3fef4c23e425ff7d951c63f93ee5dbb85c1573f8434958dd3e6ce142579f52bf7bd6
7
- data.tar.gz: ed7e48ffa949db795884eb0d552a3ac312079dce7152fd45643191f2907ff5a697d334cc26a492cee44a649420fecaf9d6063dfc72ff82e7bd226dc2a77e81c6
6
+ metadata.gz: 04c859d26173c65d577cd9a49c4333f5c104d69b37205523a1f2249f284de38e1af06ec1870cea9774858e9688eb67639135fe2500b3550693f33ba621eada79
7
+ data.tar.gz: 808e69fc41eaba3396ebfb7157063e43709034a5009fcc06fb01c0055a2b371ef128962bea32a2cae8efc0e8ee0b8d8aeb5f4f180e5e4754176bfc70fecf17a0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.0] = 2023-11-23
4
+
5
+ - Matching version to [prompt_manager](https://github.com/prompt_manager) This version allows for the user of history in the entery of values to prompt keywords. KW_HISTORY_MAX is set at 5. Changed CLI enteraction to use historical selection and editing of prior keyword values.
6
+
3
7
  ## [0.1.0] - 2023-11-23
4
8
 
5
9
  - Initial release
data/README.md CHANGED
@@ -1,11 +1,27 @@
1
1
  # AI Assistant (AIA)
2
2
 
3
- **Under Development**
4
-
5
3
  `aia` is a command-line utility that integrates prameterized prompt management with generative AI (gen-AI) execution.
6
4
 
7
5
  Uses the gem "prompt_manager" to manage the prompts sent to the `mods` command-line utility. Uses the command line tools "ripgrep" to search for prompts to send and "fzf" to select the prompts that match the search term.
8
6
 
7
+ **Most Recent Change**
8
+
9
+ v0.3.0 - Matching version to [prompt_manager](https://github.com/prompt_manager) This version allows for the user of history in the entery of values to prompt keywords. KW_HISTORY_MAX is set at 5. Changed CLI enteraction to use historical selection and editing of prior keyword values.
10
+
11
+
12
+ <!-- Tocer[start]: Auto-generated, don't remove. -->
13
+
14
+ ## Table of Contents
15
+
16
+ - [Installation](#installation)
17
+ - [Usage](#usage)
18
+ - [System Environment Variables (envars)](#system-environment-variables-envars)
19
+ - [External CLI Tools Used](#external-cli-tools-used)
20
+ - [Development](#development)
21
+ - [Contributing](#contributing)
22
+ - [License](#license)
23
+
24
+ <!-- Tocer[finish]: Auto-generated, don't remove. -->
9
25
 
10
26
 
11
27
  ## Installation
@@ -138,6 +154,12 @@ export EDITOR="subl -w"
138
154
 
139
155
  ```
140
156
 
157
+ ## Shell Completion
158
+
159
+ One of the executables with this gem is `aia_completion.sh` which contains a completion script for hte `aia` such that you specify the first few characters of a prompt ID on the command line and the shell will complete the rest of the ID for you. It works with the `bash` shell but do not know whether it works with the other shells.
160
+
161
+ To set the completion you can execute aia_completion.sh` in your `.bashrc` however, the PROMPTS_DIR environment variable must be set in order for prompt ID to work correctly.
162
+
141
163
 
142
164
  ## Development
143
165
 
@@ -0,0 +1,39 @@
1
+ # lib/aia/aia_completion.bash
2
+ # Setup a prompt completion for use with
3
+ # the bash shell
4
+ #
5
+ # This script assumes that the system environment
6
+ # variable PROMPTS_DIR has been set correctly
7
+
8
+ _aia_completion() {
9
+ # The current word being completed
10
+ local cur_word="${COMP_WORDS[COMP_CWORD]}"
11
+
12
+ # The previous word before the current word
13
+ local prev_word="${COMP_WORDS[COMP_CWORD-1]}"
14
+
15
+ # Store the previous directory to return to it later
16
+ local initial_pwd=$(pwd)
17
+
18
+ # Check if we are currently completing the option that requires prompt IDs
19
+ if [[ "$prev_word" == "aia" ]]; then
20
+ # Change directory to the prompts directory
21
+ cd "$PROMPTS_DIR" || return
22
+
23
+ # Generate a list of relative paths from the ~/.prompts directory (without .txt extension)
24
+ local files=($(find . -name "*.txt" -type f | sed 's|^\./||' | sed 's/\.txt$//'))
25
+
26
+ # Change back to the initial directory
27
+ cd "$initial_pwd" || return
28
+
29
+ # Generate possible matches and store them in the COMPREPLY array
30
+ COMPREPLY=($(compgen -W "${files[*]}" -- "$cur_word"))
31
+ else
32
+ # If not the specific option, perform regular file completion
33
+ COMPREPLY=($(compgen -o default -- "$cur_word"))
34
+ fi
35
+ }
36
+
37
+ # Register the completion function for the aia command
38
+ complete -F _aia_completion aia
39
+
@@ -0,0 +1,34 @@
1
+ # lib/aia/aia_completion.fish
2
+ # Setup a prompt completion for use with the fish shell
3
+ #
4
+ # This script assumes that the system environment
5
+ # variable PROMPTS_DIR has been set correctly
6
+
7
+ function __fish_aia_complete
8
+ # Get the command line and current token
9
+ set -l cmd_line (commandline -opc)
10
+ set -l current_token (commandline -ct)
11
+
12
+ # Check if we are currently completing the option that requires prompt IDs
13
+ if set -q cmd_line[2]
14
+ # Change directory to the prompts directory
15
+ if test -d $PROMPTS_DIR
16
+ pushd $PROMPTS_DIR
17
+ # Generate completions based on .txt files in the PROMPTS_DIR directory
18
+ for file in (find . -name "*.txt" -type f)
19
+ set file (string replace -r '\.txt$' '' -- $file)
20
+ set file (string replace -r '^\./' '' -- $file)
21
+ printf "%s\n" $file
22
+ end
23
+ popd
24
+ end
25
+ else
26
+ # Use the default file completion if we are not completing a prompt ID
27
+ complete -f -c aia -a "(commandline -ct)"
28
+ end
29
+ end
30
+
31
+ # Register the completion function for the aia command
32
+ complete -c aia -a '(__fish_aia_complete)' -f
33
+
34
+
@@ -0,0 +1,39 @@
1
+ # lib/aia/aia_completion.zsh
2
+ # Setup a prompt completion for use with
3
+ # the zsh shell
4
+ #
5
+ # This script assumes that the system environment
6
+ # variable PROMPTS_DIR has been set correctly
7
+
8
+ _aia_completion() {
9
+ # The current word being completed
10
+ local cur_word="$words[$CURRENT]"
11
+
12
+ # The previous word before the current word
13
+ local prev_word="$words[$CURRENT-1]"
14
+
15
+ # Store the previous directory to return to it later
16
+ local initial_pwd=$PWD
17
+
18
+ # Check if we are currently completing the option that requires prompt IDs
19
+ if [[ "$prev_word" == "aia" ]]; then
20
+ # Change directory to the prompts directory
21
+ cd "$PROMPTS_DIR" || return
22
+
23
+ # Generate a list of relative paths from the ~/.prompts directory (without .txt extension)
24
+ local files=($(find . -name "*.txt" -type f | sed 's|^\./||' | sed 's/\.txt$//'))
25
+
26
+ # Change back to the initial directory
27
+ cd "$initial_pwd" || return
28
+
29
+ # Generate possible matches and store them in an array
30
+ _describe 'prompt ID' files
31
+ else
32
+ # If not the specific option, use the standard filename completion
33
+ _files
34
+ fi
35
+ }
36
+
37
+ # Register the completion function for the aia command using compctl
38
+ compctl -K _aia_completion aia
39
+
data/lib/aia/cli.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  module AIA::Cli
4
4
  def setup_cli_options(args)
5
5
  @arguments = args
6
+ # TODO: consider a fixed config file: ~/,aia
6
7
  @options = {
7
8
  # Value
8
9
  edit?: [false, "-e --edit", "Edit the Prompt File"],
@@ -11,11 +12,13 @@ module AIA::Cli
11
12
  version?: [false, "--version", "Print Version"],
12
13
  help?: [false, "-h --help", "Show Usage"],
13
14
  fuzzy?: [false, "--fuzzy", "Use Fuzzy Matching"],
15
+ completion: [nil, "--completion", "Show completion script for bash|zsh|fish"],
14
16
  # TODO: Consider dropping output in favor of always
15
17
  # going to STDOUT so user can redirect or pipe somewhere else
16
18
  output: [OUTPUT,"-o --output --no-output", "Out FILENAME"],
17
19
  log: [PROMPT_LOG,"-l --log --no-log", "Log FILEPATH"],
18
20
  markdown?: [true, "-m --markdown --no-markdown --md --no-md", "Format with Markdown"],
21
+ backend: [:mods, "-b --be --backend --no-backend", "Specify the backend prompt resolver"],
19
22
  }
20
23
 
21
24
  # Array(String)
@@ -30,8 +33,9 @@ module AIA::Cli
30
33
  usage = "\n#{MY_NAME} v#{AIA::VERSION}\n\n"
31
34
  usage += "Usage: #{MY_NAME} [options] prompt_id [context_file]* [-- external_options+]\n\n"
32
35
  usage += usage_options
33
- usage += "\n"
34
- usage += usage_notes if verbose?
36
+ usage += usage_options_details
37
+ usage += "\n"
38
+ usage += usage_notes if verbose?
35
39
 
36
40
  usage
37
41
  end
@@ -61,10 +65,30 @@ module AIA::Cli
61
65
  end
62
66
 
63
67
 
68
+ def usage_options_details
69
+ <<~EOS
70
+
71
+ Details
72
+ -------
73
+
74
+ Use (--help --verbose) or (-h -v) for verbose usage text.
75
+
76
+ Use --completion bash|zsh|fish to show a script
77
+ that will add prompt ID completion to your desired shell.
78
+ You must copy the output from this option into a
79
+ place where the function will be executed for
80
+ your shell.
81
+
82
+ EOS
83
+ end
84
+
85
+
64
86
  def usage_notes
65
87
  <<~EOS
88
+
66
89
  #{usage_envars}
67
- #{AIA::ExternalCommands::HELP}
90
+ #{AIA::External::HELP}
91
+
68
92
  EOS
69
93
  end
70
94
 
@@ -115,6 +139,8 @@ module AIA::Cli
115
139
  check_for option
116
140
  end
117
141
 
142
+ show_completion unless @options[:completion].nil?
143
+
118
144
  # get the options meant for the backend AI command
119
145
  extract_extra_options
120
146
 
@@ -161,7 +187,6 @@ module AIA::Cli
161
187
  end
162
188
 
163
189
 
164
-
165
190
  def show_usage
166
191
  @options[:help?][0] = false
167
192
  puts usage
@@ -170,40 +195,29 @@ module AIA::Cli
170
195
  alias_method :show_help, :show_usage
171
196
 
172
197
 
173
- def show_version
174
- puts AIA::VERSION
175
- exit
176
- end
177
- end
198
+ def show_completion
199
+ shell = @options[:completion].first
200
+ script = Pathname.new(__dir__) + "aia_completion.#{shell}"
178
201
 
202
+ if script.exist?
203
+ puts
204
+ puts script.read
205
+ puts
206
+ else
207
+ STDERR.puts <<~EOS
179
208
 
180
- __END__
209
+ ERRORL The shell '#{shell}' is not supported.
181
210
 
211
+ EOS
212
+ end
182
213
 
183
- # TODO: Consider using this history process to preload the default
184
- # so that an up arrow will bring the previous answer into
185
- # the read buffer for line editing.
186
- # Instead of usin the .history file just push the default
187
- # value from the JSON file.
188
214
 
189
- while input = Readline.readline('> ', true)
190
- # Skip empty entries and duplicates
191
- if input.empty? || Readline::HISTORY.to_a[-2] == input
192
- Readline::HISTORY.pop
215
+ exit
193
216
  end
194
- break if input == 'exit'
195
217
 
196
- # Do something with the input
197
- puts "You entered: #{input}"
198
218
 
199
- # Save the history in case you want to preserve it for the next sessions
200
- File.open('.history', 'a') { |f| f.puts(input) }
201
- end
202
-
203
- # Load history from file at the beginning of the program
204
- if File.exist?('.history')
205
- File.readlines('.history').each do |line|
206
- Readline::HISTORY.push(line.chomp)
219
+ def show_version
220
+ puts AIA::VERSION
221
+ exit
207
222
  end
208
223
  end
209
-
@@ -36,9 +36,4 @@ module AIA::Configuration
36
36
  @extra_options = @arguments.slice!(extra_index..-1)[1..]
37
37
  end
38
38
  end
39
-
40
-
41
-
42
-
43
-
44
39
  end
File without changes
@@ -0,0 +1,11 @@
1
+
2
+
3
+
4
+ module AIA
5
+ module External
6
+ end
7
+ end
8
+
9
+ require_relative 'tool'
10
+ include AIA
11
+ include External
@@ -0,0 +1,103 @@
1
+ # lib/aia/external/ag.rb
2
+
3
+ class AIA::External::Ag < AIA::External::Tool
4
+ def initialize
5
+ super
6
+ @role = :search
7
+ @desc = "the_silver_searcher Code-search similar to ack"
8
+ @url = "https://github.com/ggreer/the_silver_searcher"
9
+ end
10
+ end
11
+
12
+ __END__
13
+
14
+ Usage: ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]
15
+
16
+ Recursively search for PATTERN in PATH.
17
+ Like grep or ack, but faster.
18
+
19
+ Example:
20
+ ag -i foo /bar/
21
+
22
+ Output Options:
23
+ --ackmate Print results in AckMate-parseable format
24
+ -A --after [LINES] Print lines after match (Default: 2)
25
+ -B --before [LINES] Print lines before match (Default: 2)
26
+ --[no]break Print newlines between matches in different files
27
+ (Enabled by default)
28
+ -c --count Only print the number of matches in each file.
29
+ (This often differs from the number of matching lines)
30
+ --[no]color Print color codes in results (Enabled by default)
31
+ --color-line-number Color codes for line numbers (Default: 1;33)
32
+ --color-match Color codes for result match numbers (Default: 30;43)
33
+ --color-path Color codes for path names (Default: 1;32)
34
+ --column Print column numbers in results
35
+ --[no]filename Print file names (Enabled unless searching a single file)
36
+ -H --[no]heading Print file names before each file's matches
37
+ (Enabled by default)
38
+ -C --context [LINES] Print lines before and after matches (Default: 2)
39
+ --[no]group Same as --[no]break --[no]heading
40
+ -g --filename-pattern PATTERN
41
+ Print filenames matching PATTERN
42
+ -l --files-with-matches Only print filenames that contain matches
43
+ (don't print the matching lines)
44
+ -L --files-without-matches
45
+ Only print filenames that don't contain matches
46
+ --print-all-files Print headings for all files searched, even those that
47
+ don't contain matches
48
+ --[no]numbers Print line numbers. Default is to omit line numbers
49
+ when searching streams
50
+ -o --only-matching Prints only the matching part of the lines
51
+ --print-long-lines Print matches on very long lines (Default: >2k characters)
52
+ --passthrough When searching a stream, print all lines even if they
53
+ don't match
54
+ --silent Suppress all log messages, including errors
55
+ --stats Print stats (files scanned, time taken, etc.)
56
+ --stats-only Print stats and nothing else.
57
+ (Same as --count when searching a single file)
58
+ --vimgrep Print results like vim's :vimgrep /pattern/g would
59
+ (it reports every match on the line)
60
+ -0 --null --print0 Separate filenames with null (for 'xargs -0')
61
+
62
+ Search Options:
63
+ -a --all-types Search all files (doesn't include hidden files
64
+ or patterns from ignore files)
65
+ -D --debug Ridiculous debugging (probably not useful)
66
+ --depth NUM Search up to NUM directories deep (Default: 25)
67
+ -f --follow Follow symlinks
68
+ -F --fixed-strings Alias for --literal for compatibility with grep
69
+ -G --file-search-regex PATTERN Limit search to filenames matching PATTERN
70
+ --hidden Search hidden files (obeys .*ignore files)
71
+ -i --ignore-case Match case insensitively
72
+ --ignore PATTERN Ignore files/directories matching PATTERN
73
+ (literal file/directory names also allowed)
74
+ --ignore-dir NAME Alias for --ignore for compatibility with ack.
75
+ -m --max-count NUM Skip the rest of a file after NUM matches (Default: 10,000)
76
+ --one-device Don't follow links to other devices.
77
+ -p --path-to-ignore STRING
78
+ Use .ignore file at STRING
79
+ -Q --literal Don't parse PATTERN as a regular expression
80
+ -s --case-sensitive Match case sensitively
81
+ -S --smart-case Match case insensitively unless PATTERN contains
82
+ uppercase characters (Enabled by default)
83
+ --search-binary Search binary files for matches
84
+ -t --all-text Search all text files (doesn't include hidden files)
85
+ -u --unrestricted Search all files (ignore .ignore, .gitignore, etc.;
86
+ searches binary and hidden files as well)
87
+ -U --skip-vcs-ignores Ignore VCS ignore files
88
+ (.gitignore, .hgignore; still obey .ignore)
89
+ -v --invert-match
90
+ -w --word-regexp Only match whole words
91
+ -W --width NUM Truncate match lines after NUM characters
92
+ -z --search-zip Search contents of compressed (e.g., gzip) files
93
+
94
+ File Types:
95
+ The search can be restricted to certain types of files. Example:
96
+ ag --html needle
97
+ - Searches for 'needle' in files with suffix .htm, .html, .shtml or .xhtml.
98
+
99
+ For a list of supported file types run:
100
+ ag --list-file-types
101
+
102
+ ag was originally created by Geoff Greer. More information (and the latest release)
103
+ can be found at http://geoff.greer.fm/ag
@@ -0,0 +1,189 @@
1
+ # lib/aia/external/bat.rb
2
+
3
+ class AIA::External::Bat < AIA::External::Tool
4
+ def initialize
5
+ super
6
+ @role = :render
7
+ @desc = 'Clone of cat(1) with syntax highlighting and Git integration'
8
+ @url = 'https://github.com/sharkdp/bat'
9
+ end
10
+ end
11
+
12
+ __END__
13
+
14
+
15
+ A cat(1) clone with syntax highlighting and Git integration.
16
+
17
+ Usage: bat [OPTIONS] [FILE]...
18
+ bat <COMMAND>
19
+
20
+ Arguments:
21
+ [FILE]...
22
+ File(s) to print / concatenate. Use a dash ('-') or no argument at all to read from
23
+ standard input.
24
+
25
+ Options:
26
+ -A, --show-all
27
+ Show non-printable characters like space, tab or newline. This option can also be
28
+ used to print binary files. Use '--tabs' to control the width of the
29
+ tab-placeholders.
30
+
31
+ --nonprintable-notation <notation>
32
+ Set notation for non-printable characters.
33
+
34
+ Possible values:
35
+ * unicode (␇, ␊, ␀, ..)
36
+ * caret (^G, ^J, ^@, ..)
37
+
38
+ -p, --plain...
39
+ Only show plain style, no decorations. This is an alias for '--style=plain'. When
40
+ '-p' is used twice ('-pp'), it also disables automatic paging (alias for
41
+ '--style=plain --paging=never').
42
+
43
+ -l, --language <language>
44
+ Explicitly set the language for syntax highlighting. The language can be specified as
45
+ a name (like 'C++' or 'LaTeX') or possible file extension (like 'cpp', 'hpp' or
46
+ 'md'). Use '--list-languages' to show all supported language names and file
47
+ extensions.
48
+
49
+ -H, --highlight-line <N:M>
50
+ Highlight the specified line ranges with a different background color For example:
51
+ '--highlight-line 40' highlights line 40
52
+ '--highlight-line 30:40' highlights lines 30 to 40
53
+ '--highlight-line :40' highlights lines 1 to 40
54
+ '--highlight-line 40:' highlights lines 40 to the end of the file
55
+ '--highlight-line 30:+10' highlights lines 30 to 40
56
+
57
+ --file-name <name>
58
+ Specify the name to display for a file. Useful when piping data to bat from STDIN
59
+ when bat does not otherwise know the filename. Note that the provided file name is
60
+ also used for syntax detection.
61
+
62
+ -d, --diff
63
+ Only show lines that have been added/removed/modified with respect to the Git index.
64
+ Use --diff-context=N to control how much context you want to see.
65
+
66
+ --diff-context <N>
67
+ Include N lines of context around added/removed/modified lines when using '--diff'.
68
+
69
+ --tabs <T>
70
+ Set the tab width to T spaces. Use a width of 0 to pass tabs through directly
71
+
72
+ --wrap <mode>
73
+ Specify the text-wrapping mode (*auto*, never, character). The '--terminal-width'
74
+ option can be used in addition to control the output width.
75
+
76
+ -S, --chop-long-lines
77
+ Truncate all lines longer than screen width. Alias for '--wrap=never'.
78
+
79
+ --terminal-width <width>
80
+ Explicitly set the width of the terminal instead of determining it automatically. If
81
+ prefixed with '+' or '-', the value will be treated as an offset to the actual
82
+ terminal width. See also: '--wrap'.
83
+
84
+ -n, --number
85
+ Only show line numbers, no other decorations. This is an alias for '--style=numbers'
86
+
87
+ --color <when>
88
+ Specify when to use colored output. The automatic mode only enables colors if an
89
+ interactive terminal is detected - colors are automatically disabled if the output
90
+ goes to a pipe.
91
+ Possible values: *auto*, never, always.
92
+
93
+ --italic-text <when>
94
+ Specify when to use ANSI sequences for italic text in the output. Possible values:
95
+ always, *never*.
96
+
97
+ --decorations <when>
98
+ Specify when to use the decorations that have been specified via '--style'. The
99
+ automatic mode only enables decorations if an interactive terminal is detected.
100
+ Possible values: *auto*, never, always.
101
+
102
+ -f, --force-colorization
103
+ Alias for '--decorations=always --color=always'. This is useful if the output of bat
104
+ is piped to another program, but you want to keep the colorization/decorations.
105
+
106
+ --paging <when>
107
+ Specify when to use the pager. To disable the pager, use --paging=never' or its
108
+ alias,'-P'. To disable the pager permanently, set BAT_PAGING to 'never'. To control
109
+ which pager is used, see the '--pager' option. Possible values: *auto*, never,
110
+ always.
111
+
112
+ --pager <command>
113
+ Determine which pager is used. This option will override the PAGER and BAT_PAGER
114
+ environment variables. The default pager is 'less'. To control when the pager is
115
+ used, see the '--paging' option. Example: '--pager "less -RF"'.
116
+
117
+ -m, --map-syntax <glob:syntax>
118
+ Map a glob pattern to an existing syntax name. The glob pattern is matched on the
119
+ full path and the filename. For example, to highlight *.build files with the Python
120
+ syntax, use -m '*.build:Python'. To highlight files named '.myignore' with the Git
121
+ Ignore syntax, use -m '.myignore:Git Ignore'. Note that the right-hand side is the
122
+ *name* of the syntax, not a file extension.
123
+
124
+ --ignored-suffix <ignored-suffix>
125
+ Ignore extension. For example:
126
+ 'bat --ignored-suffix ".dev" my_file.json.dev' will use JSON syntax, and ignore
127
+ '.dev'
128
+
129
+ --theme <theme>
130
+ Set the theme for syntax highlighting. Use '--list-themes' to see all available
131
+ themes. To set a default theme, add the '--theme="..."' option to the configuration
132
+ file or export the BAT_THEME environment variable (e.g.: export BAT_THEME="...").
133
+
134
+ --list-themes
135
+ Display a list of supported themes for syntax highlighting.
136
+
137
+ --style <components>
138
+ Configure which elements (line numbers, file headers, grid borders, Git
139
+ modifications, ..) to display in addition to the file contents. The argument is a
140
+ comma-separated list of components to display (e.g. 'numbers,changes,grid') or a
141
+ pre-defined style ('full'). To set a default style, add the '--style=".."' option to
142
+ the configuration file or export the BAT_STYLE environment variable (e.g.: export
143
+ BAT_STYLE="..").
144
+
145
+ Possible values:
146
+
147
+ * default: enables recommended style components (default).
148
+ * full: enables all available components.
149
+ * auto: same as 'default', unless the output is piped.
150
+ * plain: disables all available components.
151
+ * changes: show Git modification markers.
152
+ * header: alias for 'header-filename'.
153
+ * header-filename: show filenames before the content.
154
+ * header-filesize: show file sizes before the content.
155
+ * grid: vertical/horizontal lines to separate side bar
156
+ and the header from the content.
157
+ * rule: horizontal lines to delimit files.
158
+ * numbers: show line numbers in the side bar.
159
+ * snip: draw separation lines between distinct line ranges.
160
+
161
+ -r, --line-range <N:M>
162
+ Only print the specified range of lines for each file. For example:
163
+ '--line-range 30:40' prints lines 30 to 40
164
+ '--line-range :40' prints lines 1 to 40
165
+ '--line-range 40:' prints lines 40 to the end of the file
166
+ '--line-range 40' only prints line 40
167
+ '--line-range 30:+10' prints lines 30 to 40
168
+
169
+ -L, --list-languages
170
+ Display a list of supported languages for syntax highlighting.
171
+
172
+ -u, --unbuffered
173
+ This option exists for POSIX-compliance reasons ('u' is for 'unbuffered'). The output
174
+ is always unbuffered - this option is simply ignored.
175
+
176
+ --diagnostic
177
+ Show diagnostic information for bug reports.
178
+
179
+ --acknowledgements
180
+ Show acknowledgements.
181
+
182
+ -h, --help
183
+ Print help (see a summary with '-h')
184
+
185
+ -V, --version
186
+ Print version
187
+
188
+ You can use 'bat cache' to customize syntaxes and themes. See 'bat cache --help' for more
189
+ information