mirror of
				https://github.com/sharkdp/bat.git
				synced 2025-11-04 09:01:56 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			172 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
		
			Vendored
		
	
	
	
%YAML 1.2
 | 
						|
---
 | 
						|
# http://www.sublimetext.com/docs/3/syntax.html
 | 
						|
name: Manpage
 | 
						|
file_extensions:
 | 
						|
  - man
 | 
						|
scope: source.man
 | 
						|
 | 
						|
variables:
 | 
						|
  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_\-]+)(\()([^)]+)(\))\s*'
 | 
						|
      captures:
 | 
						|
        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: '$'
 | 
						|
      set: body
 | 
						|
 | 
						|
  body:
 | 
						|
    # English, ..., ..., ..., Russian, ...
 | 
						|
 | 
						|
    - match: '^(?:SYNOPSIS|SYNTAX|SINTASSI|SKŁADNIA|СИНТАКСИС|書式)'
 | 
						|
      scope: markup.heading.synopsis.man
 | 
						|
      embed: synopsis
 | 
						|
      escape: '(?={{section_heading}})'
 | 
						|
 | 
						|
    - match: '^(?:USAGE)'
 | 
						|
      scope: markup.heading.synopsis.man
 | 
						|
      embed: synopsis
 | 
						|
      escape: '(?={{section_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}})'
 | 
						|
 | 
						|
  function-call:
 | 
						|
    - match: '\b([A-Za-z0-9_\-]+\.)?([A-Za-z0-9_\-]+)(\()([^)]*)(\))'
 | 
						|
      captures:
 | 
						|
        1: entity.name.function.man
 | 
						|
        2: entity.name.function.man
 | 
						|
        3: keyword.operator.man
 | 
						|
        4: constant.numeric.man
 | 
						|
        5: keyword.operator.man
 | 
						|
 | 
						|
  env-var:
 | 
						|
    - match: '(\$)(?!\d)(\w+)\b'
 | 
						|
      captures:
 | 
						|
        1: punctuation.definition.variable.man
 | 
						|
        2: constant.other.man
 | 
						|
 | 
						|
  options:
 | 
						|
    # command-line options like --option=value, --some-flag, or -x
 | 
						|
    - match: '^[ ]{7}(?=-)'
 | 
						|
      push: expect-command-line-option
 | 
						|
    - match: '(?:[^a-zA-Z0-9_-]|^|\s){{command_line_option}}'
 | 
						|
      captures:
 | 
						|
        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
 | 
						|
    - include: c-code
 | 
						|
    - include: env-var
 | 
						|
 | 
						|
  expect-command-line-option:
 | 
						|
    - match: '[A-Za-z0-9-]+'
 | 
						|
      scope: entity.name.command-line-option.man
 | 
						|
    - match: '(\[)(=)'
 | 
						|
      captures:
 | 
						|
        1: punctuation.section.brackets.begin.man
 | 
						|
        2: keyword.operator.man
 | 
						|
      push: [command-line-option-or-pipe, 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: (?=\s+\|)
 | 
						|
      pop: true
 | 
						|
    - match: \|
 | 
						|
      scope: keyword.operator.logical.man
 | 
						|
    - match: '\['
 | 
						|
      scope: punctuation.section.brackets.begin.man
 | 
						|
      push:
 | 
						|
        - match: '\]'
 | 
						|
          scope: punctuation.section.brackets.end.man
 | 
						|
          pop: true
 | 
						|
        - include: expect-parameter
 | 
						|
    - match: '$|(?=[],]|{{command_line_option}})'
 | 
						|
      pop: true
 | 
						|
 | 
						|
  c-code:
 | 
						|
    - match: '^(?=\s+(?:#include\b|#define\b|/\*|struct\s+(\w+\s*)?\{))'
 | 
						|
      embed: scope:source.c
 | 
						|
      #embed_scope: source.c.embedded.man
 | 
						|
      #escape: ^(?!#|\1|\s*(?:$|/\*|#include\b|#define\b))
 | 
						|
      escape: ^(?=\s*(?:\(.*\.\)\s*$|[A-Z](?![A-Z])))
 | 
						|
 | 
						|
  synopsis:
 | 
						|
    - include: c-code
 | 
						|
    - 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: \w+-\w+
 | 
						|
    - 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
 |