diff options
Diffstat (limited to 'assets')
-rw-r--r-- | assets/syntaxes/02_Extra/Manpage.sublime-syntax | 137 | ||||
-rw-r--r-- | assets/syntaxes/02_Extra/syntax_test_man.man | 103 |
2 files changed, 216 insertions, 24 deletions
diff --git a/assets/syntaxes/02_Extra/Manpage.sublime-syntax b/assets/syntaxes/02_Extra/Manpage.sublime-syntax index e99c2497..121f6ab0 100644 --- a/assets/syntaxes/02_Extra/Manpage.sublime-syntax +++ b/assets/syntaxes/02_Extra/Manpage.sublime-syntax @@ -7,47 +7,136 @@ file_extensions: scope: source.man variables: - section_heading: '^\S.*$' + section_heading: '^(?!#)\S.*$' + command_line_option: '(--?[A-Za-z0-9][_A-Za-z0-9-]*)' contexts: + prototype: + # ignore syntax test lines + - match: '^#' + push: + - meta_scope: comment.syntax-test.man + - match: $\n? + pop: true main: - match: ^ push: first_line first_line: - - match: '([A-Z0-9_\-]+)(\()([^)]+)(\))' + - match: '([A-Z0-9_\-]+)(\()([^)]+)(\))\s*' captures: - 1: meta.preprocessor - 2: keyword.operator - 3: string.quoted.other - 4: keyword.operator + 1: meta.preprocessor.man + 2: keyword.operator.man + 3: string.quoted.other.man + 4: keyword.operator.man + push: + - match: (?:[\w'-]+|\s(?!\s)) + scope: markup.heading.title.man + - match: \s\s + pop: true + - match: '(?=\S)' + pop: true - match: '$' push: body body: - - match: '^(SYNOPSIS|SYNTAX|SINTASSI|SKŁADNIA|СИНТАКСИС|書式)' - push: Packages/C/C.sublime-syntax - scope: markup.heading - with_prototype: - - match: '(?={{section_heading}})' - pop: true + # English, ..., ..., ..., Russian, ... + + - match: '^(?:SYNOPSIS|SYNTAX|SINTASSI|SKŁADNIA|СИНТАКСИС|書式)' + scope: markup.heading.synopsis.man + embed: synopsis + escape: '(?={{section_heading}})' - - match: '^\S.*$' - scope: markup.heading + - match: '{{section_heading}}' + scope: markup.heading.other.man + embed: options # some man pages put command line options under the description heading + escape: '(?={{section_heading}})' + + - include: function-call + + function-call: - match: '\b([A-Za-z0-9_\-]+)(\()([^)]*)(\))' captures: - 1: entity.name.function - 2: keyword.operator - 3: constant.numeric - 4: keyword.operator + 1: entity.name.function.man + 2: keyword.operator.man + 3: constant.numeric.man + 4: keyword.operator.man + options: # command-line options like --option=value, --some-flag, or -x - - match: '(?:[^a-zA-Z0-9_-]|^|\s)(--?[A-Za-z0-9][A-Za-z0-9-]*)(?:(=)?("?)([A-Za-z0-9]+)("?))?' + - match: '^[ ]{7}(?=-)' + push: expect-command-line-option + - match: '(?:[^a-zA-Z0-9_-]|^|\s){{command_line_option}}' captures: - 1: entity.name - 2: keyword.operator - 3: punctuation.definition.string.begin - 4: variable.parameter - 3: punctuation.definition.string.end + 1: entity.name.command-line-option + push: + - match: '=' + scope: keyword.operator.man + set: + - match: '[^],.() ]+' + scope: variable.parameter.man + pop: true + - match: $ + pop: true + - match: '' + pop: true + - include: function-call + + expect-command-line-option: + - match: '[A-Za-z0-9-]+' + scope: entity.name.command-line-option.man + - match: '(\[)(=)' + captures: + 2: keyword.operator.man + push: expect-parameter + - match: '\[' + push: + - meta_scope: entity.name.command-line-option.man + - match: '\]' + pop: true + - match: '=' + scope: keyword.operator.man + push: expect-parameter + - match: (?=.*\.) + pop: true + - match: '\s' + push: expect-parameter + - match: '(,)\s*' + captures: + 1: punctuation.separator.man + - match: $|(?=\]) + pop: true + + expect-parameter: + - match: '[A-Za-z0-9-]+' + scope: variable.parameter.man + - match: \| + scope: keyword.operator.logical.man + - match: '$|(?=[],]|{{command_line_option}})' + pop: true + + synopsis: + #- include: scope:source.c + - match: \[ + scope: punctuation.section.brackets.begin.man + push: command-line-option-or-pipe + - include: options + + command-line-option-or-pipe: + - match: (\|)\s* + captures: + 1: keyword.operator.logical.man + #- match: (?={{command_line_option}}) + - match: (?=-) + push: + - match: (?=\s*\|) + pop: true + - include: expect-command-line-option + - match: \] + scope: punctuation.section.brackets.end.man + pop: true + - match: \[ + scope: punctuation.section.brackets.begin.man + push: command-line-option-or-pipe diff --git a/assets/syntaxes/02_Extra/syntax_test_man.man b/assets/syntaxes/02_Extra/syntax_test_man.man new file mode 100644 index 00000000..54c052a5 --- /dev/null +++ b/assets/syntaxes/02_Extra/syntax_test_man.man @@ -0,0 +1,103 @@ +# SYNTAX TEST "Manpage.sublime-syntax" +SOMETHING(8) System Manager's Manual SOMETHING(8) +# ^^^^^ meta.preprocessor +# ^^^^^^^^^^^^^^^^^^^^^^^ markup.heading.title +# ^^^^^^^ meta.preprocessor + +NAME +#^^^ markup.heading.title + example - do something useful + +SYNOPSIS + example [options] [--home DIR] [--shell SHELL] [--no-create-home] +# ^ punctuation.section.brackets.begin +# ^^^^^^ entity.name.command-line-option +# ^^^ variable.parameter +# ^ punctuation.section.brackets.end +# ^ punctuation.section.brackets.begin +# ^^^^^^^ entity.name.command-line-option +# ^^^^^ variable.parameter +# ^ punctuation.section.brackets.end +# ^ punctuation.section.brackets.begin +# ^^^^^^^^^^^^^^^^ entity.name.command-line-option +# ^ punctuation.section.brackets.end + + example --system [options] +# ^^^^^^^^ entity.name + + COMMON OPTIONS + [--quiet] [--debug] [--help|-h] [--version] [--conf FILE] + +DESCRIPTION + example does something useful in relation to the command line options + and configuration information in /etc/example.conf. + +OPTIONS + --conf FILE +# ^^^^^^ entity.name.command-line-option +#^^^^^^ - variable - entity - markup +# ^^^^ variable.parameter + Use FILE instead of /etc/example.conf. +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - variable - entity + + --disabled-login + Do not run passwd to set the password. The user won't be able + to use her account until the password is set. + + --disabled-password + Like --disabled-login, but logins are still possible (for exam- +# ^^^^^^^^^^^^^^^^ entity.name +#^^^^^^^^^^^^^^^^^^ - entity - variable - markup +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - entity - variable - markup + ple using SSH RSA keys) but not using password authentication. + + --help Display brief instructions. +# ^^^^^^ entity.name.command-line-option +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - variable.parameter + + --home DIR +# ^^^^^^ entity.name.command-line-option +# ^^^ variable.parameter +# ^ - variable - entity - markup + Use DIR as the user's home directory, rather than the default + specified by the configuration file. If the directory does not + exist, it is created and skeleton files are copied. + + --[no-]signed, --signed=(true|false|if-asked) +# ^^^^^^^^^^^^^ entity.name.command-line-option +# ^ punctuation.separator +# ^^^^^^^^ entity.name.command-line-option +# ^ keyword.operator +# ^ - variable +# ^^^^ variable.parameter +# ^ keyword.operator.logical +# ^^^^^ variable.parameter +# ^ keyword.operator.logical +# ^^^^^^^^ variable.parameter +# ^ - variable + --no-recurse-submodules, --recurse-submodules=check|on-demand|only|no +# ^^^^^^^^^^^^^^^^^^^^^^^ entity.name.command-line-option +# ^ punctuation.separator +# ^^^^^^^^^^^^^^^^^^^^ entity.name.command-line-option +# ^ keyword.operator +# ^^^^^ variable.parameter +# ^ keyword.operator.logical +# ^^^^^^^^^ variable.parameter +# ^ keyword.operator.logical +# ^^^^ variable.parameter +# ^ keyword.operator.logical +# ^^ variable.parameter + May be used to make sure all submodule commits used by the + + -c, -C NUM, --context[=NUM] +# ^^ entity.name.command-line-option +# ^ punctuation.separator +# ^^ entity.name.command-line-option +# ^^^ variable.parameter +# ^ punctuation.separator +# ^^^^^^^^^ entity.name.command-line-option +# ^^^^^^^ - entity.name +# ^ keyword.operator +# ^^^ variable.parameter +# ^^ - variable + output NUM (default 3) lines of copied context |