Packages icon indicating copy to clipboard operation
Packages copied to clipboard

[Go] can't support go.sum and go.mod syntax Highlighting

Open jingyuexing opened this issue 4 years ago • 1 comments

%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
file_extensions:
  - go.mod
scope: go.mod
contexts:
  main:
    - include: comments
    - include: directive
    - include: invalid
  arguments:
    - include: comments
    - include: double_quoted_string
    - include: raw_quoted_string
    - include: operator
    - include: semver
    - include: unquoted_string
  comments:
    - match: //
      captures:
        0: punctuation.definition.comment.go.mod
      push:
        - meta_scope: comment.line.double-slash.go.mod
        - match: $
          pop: true
  directive:
    - match: (\w+)\s*\(
      comment: Multi-Line directive
      captures:
        1: keyword.go.mod
      push:
        - match: \)
          pop: true
        - include: arguments
    - match: (\w+)\s*(.*)
      comment: Single-Line directive
      captures:
        1: keyword.go.mod
  double_quoted_string:
    - match: '"'
      comment: Interpreted string literals
      captures:
        0: punctuation.definition.string.begin.go.mod
      push:
        - meta_scope: string.quoted.double
        - match: '"'
          captures:
            0: punctuation.definition.string.end.go.mod
          pop: true
        - include: string_escaped_char
        - include: string_placeholder
  invalid:
    - match: .*
      comment: invalid
      scope: invalid.illegal.unknown.go.mod
  operator:
    - match: (=>)
      scope: operator.go.mod
  raw_quoted_string:
    - match: '`'
      comment: Raw string literals
      captures:
        0: punctuation.definition.string.begin.go.mod
      push:
        - meta_scope: string.quoted.raw
        - match: '`'
          captures:
            0: punctuation.definition.string.end.go.mod
          pop: true
        - include: string_placeholder
  semver:
    - match: 'v(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-z-]+(?:\.[\da-z-]+)*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?'
      comment: Semver version strings (v1.2.3)
      scope: constant.language.go.mod
  string_escaped_char:
    - match: '\\([0-7]{3}|[abfnrtv\\''"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})'
      scope: constant.character.escape.go.mod
    - match: '\\[^0-7xuUabfnrtv\''"]'
      scope: invalid.illegal.unknown-escape.go.mod
  string_placeholder:
    - match: '%(\[\d+\])?([\+#\-0\x20]{,2}((\d+|\*)?(\.?(\d+|\*|(\[\d+\])\*?)?(\[\d+\])?)?))?[vT%tbcdoqxXUbeEfFgGsp]'
      scope: constant.other.placeholder.go.mod
  unquoted_string:
    - match: '([^\s/]|/(?!/))+'
      comment: Unquoted string
      scope: string.unquoted.go.mod
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
file_extensions:
  - go.sum
scope: go.sum
contexts:
  main:
    - include: checksum
    - include: semver
    - include: unquoted_string
  checksum:
    - match: 'h1:([^\s]+)='
      comment: Checksum
      captures:
  semver:
    - match: 'v(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-z-]+(?:\.[\da-z-]+)*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?'
      comment: Semver version strings (v1.2.3)
      scope: constant.language.go.sum
  unquoted_string:
    - match: '[^\s]+'
      comment: Unquoted string
      scope: string.unquoted.go.sum

jingyuexing avatar Sep 08 '21 17:09 jingyuexing

Might be good to compare these two as well.

https://github.com/mitranim/sublime-gomod

TerminalFi avatar Nov 03 '21 03:11 TerminalFi