name: CSV fileTypes:

scopeName: text.tabular.csv repository:

row: 
  name: meta.tabular.row.csv
  begin: ^(?!$)
  end: $
  patterns: 
  - include: "#field"
field: 
  patterns: 
  - endCaptures: 
      "1": 
        name: punctuation.definition.field.csv
      "3": 
        name: punctuation.separator.tabular.field.csv
    begin: (^|(?<=,))(")
    contentName: meta.tabular.field.quoted.csv
    beginCaptures: 
      "2": 
        name: punctuation.definition.field.csv
    end: (")($|(,))
    patterns: 
    - name: constant.character.escape.straight-quote.csv
      match: "\"\""
    comment: "\n\
      \t\t\t\t\t\tthis field uses \"s and is thus able to enclose\n\
      \t\t\t\t\t\tnewlines or commas\n\
      \t\t\t\t\t"
  - endCaptures: 
      "1": 
        name: punctuation.separator.tabular.field.csv
    begin: (:^|(?<=,))(?!$|,)
    contentName: meta.tabular.field.csv
    end: $|(,)
  - name: punctuation.separator.tabular.field.csv
    match: ","
header: 
  name: meta.tabular.row.header.csv
  begin: ^(?!$)
  end: $
  patterns: 
  - include: "#field"
table: 
  name: meta.tabular.table.csv
  begin: ^
  end: ^$not possible$^
  patterns: 
  - include: "#header"
  - begin: (\n)
    beginCaptures: 
      "1": 
        name: punctuation.separator.table.row.csv
    end: ^$not possible$^
    patterns: 
    - include: "#row"
    - name: punctuation.separator.table.row.csv
      match: \n
    comment: "\n\
      \t\t\t\t\t\teverything after the first row is not a header\n\
      \t\t\t\t\t"

uuid: B0691F9F-D279-48CB-8959-2C9426579002 patterns:

keyEquivalent: ^~C