Skip to content

Commit

Permalink
Add fish regression test + syntax test
Browse files Browse the repository at this point in the history
With inconsistencies reported in #26.

There are a bunch of false positives for 'keyword scopes' that don't show
in the issue's screenshots (an earlier bat/cmd-help version, I'd say).
These are probably derived from my work on #23. For me, they're the most
worrying part.

The ask about scoping examples like [^1] may be feasible after we do
usage lines (#24). The key part is the `>` character.

The stray 'option scope' false positive is puzzling on first look, can't
say why the syntax isn't detecting that it's plain text. I should fix it
if it's easy to do so.

Aside from these false positives here and there, the bathelp
highlighting for the message looks pretty well.

[^1]   > fish --debug=iothread
  • Loading branch information
victor-gp committed Feb 17, 2025
1 parent 5f35cc1 commit 431e650
Show file tree
Hide file tree
Showing 3 changed files with 345 additions and 0 deletions.
104 changes: 104 additions & 0 deletions tests/highlighted/fish-stripped-3.7.1.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

104 changes: 104 additions & 0 deletions tests/source/fish-stripped-3.7.1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@

fish - the friendly interactive shell

fish [OPTIONS] [FILE [ARG ...]]
fish [OPTIONS] [-c COMMAND [ARG ...]]

DESCRIPTION
fish is a command-line shell written mainly with interactive use in
mind. This page briefly describes the options for invoking fish.
The full manual is available in HTML by using the help command from
inside fish, and in the fish-doc(1) man page. The tutorial is avail‐
able as HTML via help tutorial or in man fish-tutorial.

The following options are available:

-c or --command=COMMAND
Evaluate the specified commands instead of reading from the
commandline, passing additional positional arguments through
$argv.

-C or --init-command=COMMANDS
Evaluate specified commands after reading the configuration
but before executing command specified by -c or reading inter‐
active input.

-d or --debug=DEBUG_CATEGORIES
Enables debug output and specify a pattern for matching debug
categories. See Debugging below for details.

-o or --debug-output=DEBUG_FILE
Specifies a file path to receive the debug output, including
categories and fish_trace. The default is stderr.

-i or --interactive
The shell is interactive.

-l or --login
Act as if invoked as a login shell.

-N or --no-config
Do not read configuration files.

-n or --no-execute
Do not execute any commands, only perform syntax checking.

-p or --profile=PROFILE_FILE
when fish exits, output timing information on all executed
commands to the specified file. This excludes time spent
starting up and reading the configuration.

--profile-startup=PROFILE_FILE
Will write timing for fish startup to specified file.

-P or --private
Enables private mode: fish will not access old or store new
history.

--print-rusage-self
When fish exits, output stats from getrusage.

--print-debug-categories
Print all debug categories, and then exit.

-v or --version
Print version and exit.

-f or --features=FEATURES
Enables one or more comma-separated feature flags.

The fish exit status is generally the exit status of the last fore‐
ground command.

DEBUGGING
While fish provides extensive support for debugging fish scripts, it
is also possible to debug and instrument its internals. Debugging
can be enabled by passing the --debug option. For example, the fol‐
lowing command turns on debugging for background IO thread events, in
addition to the default categories, i.e. debug, error, warning, and
warning-path:

> fish --debug=iothread

Available categories are listed by fish --print-debug-categories. The
--debug option accepts a comma-separated list of categories, and sup‐
ports glob syntax. The following command turns on debugging for com‐
plete, history, history-file, and profile-history, as well as the de‐
fault categories:

> fish --debug='complete,*history*'

Debug messages output to stderr by default. Note that if fish_trace
is set, execution tracing also outputs to stderr by default. You can
output to a file using the --debug-output option:

> fish --debug='complete,*history*' --debug-output=/tmp/fish.log --init-command='set fish_trace on'

These options can also be changed via the FISH_DEBUG and
FISH_DEBUG_OUTPUT variables. The categories enabled via --debug are
added to the ones enabled by $FISH_DEBUG, so they can be disabled by
prefixing them with - (reader-*,-ast* enables reader debugging and
disables ast debugging).

The file given in --debug-output takes precedence over the file in
FISH_DEBUG_OUTPUT.
137 changes: 137 additions & 0 deletions tests/syntax/syntax_test_fish-stripped.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# SYNTAX TEST "cmd-help.sublime-syntax"


fish - the friendly interactive shell

fish [OPTIONS] [FILE [ARG ...]]
fish [OPTIONS] [-c COMMAND [ARG ...]]

DESCRIPTION
fish is a command-line shell written mainly with interactive use in
# <- constant.other.keyword.cmd-help
#^^^ constant.other.keyword.cmd-help
#todo: tackle all these 'keyword.cmd-help' false positives (nit's)
mind. This page briefly describes the options for invoking fish.
The full manual is available in HTML by using the help command from
inside fish, and in the fish-doc(1) man page. The tutorial is avail‐
able as HTML via help tutorial or in man fish-tutorial.

The following options are available:

-c or --command=COMMAND
Evaluate the specified commands instead of reading from the
commandline, passing additional positional arguments through
# ^^^^^^^^^^^ constant.other.keyword.cmd-help
#nit: false positive
$argv.

-C or --init-command=COMMANDS
Evaluate specified commands after reading the configuration
but before executing command specified by -c or reading inter‐
active input.

-d or --debug=DEBUG_CATEGORIES
Enables debug output and specify a pattern for matching debug
categories. See Debugging below for details.

-o or --debug-output=DEBUG_FILE
Specifies a file path to receive the debug output, including
categories and fish_trace. The default is stderr.

-i or --interactive
The shell is interactive.

-l or --login
Act as if invoked as a login shell.

-N or --no-config
Do not read configuration files.

-n or --no-execute
Do not execute any commands, only perform syntax checking.

-p or --profile=PROFILE_FILE
when fish exits, output timing information on all executed
# ^^^^ constant.other.keyword.cmd-help
#nit: false positive
commands to the specified file. This excludes time spent
# ^^^^ constant.other.keyword.cmd-help
#nit: false positive
starting up and reading the configuration.

--profile-startup=PROFILE_FILE
Will write timing for fish startup to specified file.

-P or --private
Enables private mode: fish will not access old or store new
history.

--print-rusage-self
When fish exits, output stats from getrusage.

--print-debug-categories
Print all debug categories, and then exit.

-v or --version
Print version and exit.

-f or --features=FEATURES
Enables one or more comma-separated feature flags.

The fish exit status is generally the exit status of the last fore‐
ground command.

DEBUGGING
While fish provides extensive support for debugging fish scripts, it
is also possible to debug and instrument its internals. Debugging
# <- constant.other.keyword.cmd-help
#^ constant.other.keyword.cmd-help
#nit: false positive
can be enabled by passing the --debug option. For example, the fol‐
lowing command turns on debugging for background IO thread events, in
addition to the default categories, i.e. debug, error, warning, and
# <- constant.other.keyword.cmd-help
#^^^^^^^ constant.other.keyword.cmd-help
#nit: false positive
warning-path:

> fish --debug=iothread
# ^^^^ - constant.other.keyword.cmd-help
# ^^^^^^^ - entity.name.function.option.cmd-help
# ^^^^^^^^ - entity.name.function.option.cmd-help keyword.other.argument.cmd-help
# nice: handle examples like this? perhaps based on the solution for Usage lines? #24

Available categories are listed by fish --print-debug-categories. The
--debug option accepts a comma-separated list of categories, and sup‐
# <- entity.name.function.option.cmd-help
#^^^^^^ entity.name.function.option.cmd-help
#todo: fix this option false positive
ports glob syntax. The following command turns on debugging for com‐
plete, history, history-file, and profile-history, as well as the de‐
fault categories:

> fish --debug='complete,*history*'

Debug messages output to stderr by default. Note that if fish_trace
is set, execution tracing also outputs to stderr by default. You can
# <- constant.other.keyword.cmd-help
#^ constant.other.keyword.cmd-help
#nit: false positive
output to a file using the --debug-output option:

> fish --debug='complete,*history*' --debug-output=/tmp/fish.log --init-command='set fish_trace on'

These options can also be changed via the FISH_DEBUG and
FISH_DEBUG_OUTPUT variables. The categories enabled via --debug are
added to the ones enabled by $FISH_DEBUG, so they can be disabled by
# <- constant.other.keyword.cmd-help
#^^^^ constant.other.keyword.cmd-help
#nit: false positive
prefixing them with - (reader-*,-ast* enables reader debugging and
# <- constant.other.keyword.cmd-help
#^^^^^^^^ constant.other.keyword.cmd-help
#nit: false positive
disables ast debugging).

The file given in --debug-output takes precedence over the file in
FISH_DEBUG_OUTPUT.

0 comments on commit 431e650

Please sign in to comment.