<commit_before><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>comment</key>
	<string>Go allows any Unicode character to be used in identifiers, so our identifier regex is: \b([[:alpha:]_]+[[:alnum:]_]*)\b</string>
	<key>fileTypes</key>
	<array>
		<string>go</string>
	</array>
	<key>firstLineMatch</key>
	<string>-[*]-( Mode:)? C -[*]-</string>
	<key>foldingStartMarker</key>
	<string>(?x)
          /\*\*(?!\*)                           # opening C-style comment with 2 asterisks but no third later on
         |                                      # OR
          ^                                     # start of line...
           (?!                                  # ...which does NOT contain...
              [^{(]*?//                         #    ...a possible bunch of non-opening-braces, followed by a C++ comment
             |                                  #    OR
              [^{(]*?/\*(?!.*?\*/.*?[{(])       #    ...a possible bunch of non-opening-braces, followed by a C comment with no ending
           )
           .*?                                  # ...any characters (or none)...
           [{(]\s*                              # ...followed by an open brace and zero or more whitespace...
           (                                    # ...followed by...
            $                                   #    ...a dollar...
             |                                  #    OR
            //                                  #    ...a C++ comment...
             |                                  #    OR
            /\*(?!.*?\*/.*\S)                   #    ...a C comment, so long as no non-whitespace chars follow it..
           )
    </string>
	<key>foldingStopMarker</key>
	<string>(?&lt;!\*)\*\*/|^\s*[})]</string>
	<key>keyEquivalent</key>
	<string>^~G</string>
	<key>name</key>
	<string>Go</string>
	<key>patterns</key>
	<array>
		<dict>
			<key>include</key>
			<string>#comments</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(s(truct|elect|witch)|c(ontinue|ase)|type|i(f|mport)|def(er|ault)|package|else|var|f(or|unc|allthrough)|r(eturn|ange)|go(to)?|map|break)\b</string>
			<key>name</key>
			<string>keyword.control.go</string>
		</dict>
		<dict>
			<key>match</key>
			<string>(\b|(?&lt;=\]))(int(16|8|32|64)?|uint(16|8|32|ptr|64)?|float(32|64)?|b(yte|ool)|string)\b</string>
			<key>name</key>
			<string>storage.type.go</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(const|chan)\b</string>
			<key>name</key>
			<string>storage.modifier.go</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(nil|true|false|iota)\b</string>
			<key>name</key>
			<string>constant.language.go</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b</string>
			<key>name</key>
			<string>constant.numeric.go</string>
		</dict>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.go</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>meta.exported-variable.go</string>
				</dict>
			</dict>
			<key>comment</key>
			<string>This is kinda hacky, in order to get the 'var' coloured the right way again.</string>
			<key>match</key>
			<string>^\s*(?:(var)\s+)?([A-Z][[:alnum:]_]*)</string>
			<key>name</key>
			<string>meta.exported-variable-declaration.go</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>"</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>"</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.go</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.double.go</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string_placeholder</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>begin</key>
			<string>'</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>'</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.go</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.single.go</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string_escaped_char</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>begin</key>
			<string>`</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>`</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.go</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.raw.go</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>^\s*package\b\s+</string>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.import.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=(?://|/\*))|$</string>
			<key>name</key>
			<string>meta.preprocessor.go.package</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>"</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.begin.go</string>
						</dict>
					</dict>
					<key>end</key>
					<string>"</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.end.go</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.quoted.double.import.go</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>include</key>
			<string>#block</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>(?x)
                (?:  ^ | (?: (?= \s ) (?&lt;!else|new|return) (?&lt;=\w)))        # allow newline or word + space before func keyword
                (func)                                                      # Capture 1: func keyword begins all function definitions
                (?:\s*)([[:alpha:]_]+[[:alnum:]_]*\s*)?\(                   # Capture 2: name of function, optional, required opening brace
                ( (?: [[:alpha:]_]+ [[:alnum:]_]* \s? )* )?                 # Capture 3: parameter list, optional
                \)                                                          # required closing brace
                \s*
                (\(?
                    [[:alpha:]_]+[[:alnum:]_]*\s
                \)?)?                                                       # Capture 4: optional results, in optional braces
            </string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.function.go</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>entity.name.function.go</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.parameters.go</string>
				</dict>
				<key>4</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.return-types.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?&lt;=\})|(;)</string>
			<key>name</key>
			<string>meta.function.go</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comments</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parens</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(const|chan)\b</string>
					<key>name</key>
					<string>storage.modifier.go</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#block</string>
				</dict>
			</array>
		</dict>
	</array>
	<key>repository</key>
	<dict>
		<key>access</key>
		<dict>
			<key>match</key>
			<string>(?&lt;=\.)[[:alpha:]_][[:alnum:]_]*\b(?!\s*\()</string>
			<key>name</key>
			<string>variable.other.dot-access.go</string>
		</dict>
		<key>block</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>end</key>
			<string>\}</string>
			<key>name</key>
			<string>meta.block.go</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#block_innards</string>
				</dict>
			</array>
		</dict>
		<key>block_innards</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#access</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.whitespace.support.function.leading.go</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>support.function.builtin.go</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(\s*)\b(new|c(lose(d)?|ap)|p(anic(ln)?|rint(ln)?)|len|make)(?:\b|\()</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.whitespace.function-call.leading.go</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>support.function.any-method.go</string>
						</dict>
						<key>3</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.parameters.go</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(?x)
                        (?: (?= \s ) (?:(?&lt;=else|new|return) | (?&lt;!\w)) (\s+) )?
                        (\b
                            (?!(for|if|else|switch|return)\s*\()
                            (?:[[:alpha:]_][[:alnum:]_]*+\b)            # method name
                        )
                        \s*(\()
                    </string>
					<key>name</key>
					<string>meta.function-call.go</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>variable.other.go</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>variable.other.go</string>
						</dict>
						<key>3</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.parameters.go</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(?x)
(?: (?:(?:(?:var))|((?:\w+,\s+)*(?=\w+\s+:=))) )       # var+space or assign op
\s*
(
  (?:([[:alpha:]_][[:alnum:]_]*+)(?:,\s+)?)+            # variable name(s)
)
\s*(\()?
                       </string>
					<key>name</key>
					<string>meta.initialization.go</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#block</string>
				</dict>
				<dict>
					<key>include</key>
					<string>$base</string><commit_msg>Tweaked to keep 'var' highlighted properly in initializations.<commit_after><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>comment</key>
	<string>Go allows any Unicode character to be used in identifiers, so our identifier regex is: \b([[:alpha:]_]+[[:alnum:]_]*)\b</string>
	<key>fileTypes</key>
	<array>
		<string>go</string>
	</array>
	<key>firstLineMatch</key>
	<string>-[*]-( Mode:)? C -[*]-</string>
	<key>foldingStartMarker</key>
	<string>(?x)
          /\*\*(?!\*)                           # opening C-style comment with 2 asterisks but no third later on
         |                                      # OR
          ^                                     # start of line...
           (?!                                  # ...which does NOT contain...
              [^{(]*?//                         #    ...a possible bunch of non-opening-braces, followed by a C++ comment
             |                                  #    OR
              [^{(]*?/\*(?!.*?\*/.*?[{(])       #    ...a possible bunch of non-opening-braces, followed by a C comment with no ending
           )
           .*?                                  # ...any characters (or none)...
           [{(]\s*                              # ...followed by an open brace and zero or more whitespace...
           (                                    # ...followed by...
            $                                   #    ...a dollar...
             |                                  #    OR
            //                                  #    ...a C++ comment...
             |                                  #    OR
            /\*(?!.*?\*/.*\S)                   #    ...a C comment, so long as no non-whitespace chars follow it..
           )
    </string>
	<key>foldingStopMarker</key>
	<string>(?&lt;!\*)\*\*/|^\s*[})]</string>
	<key>keyEquivalent</key>
	<string>^~G</string>
	<key>name</key>
	<string>Go</string>
	<key>patterns</key>
	<array>
		<dict>
			<key>include</key>
			<string>#comments</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(s(truct|elect|witch)|c(ontinue|ase)|type|i(f|mport)|def(er|ault)|package|else|var|f(or|unc|allthrough)|r(eturn|ange)|go(to)?|map|break)\b</string>
			<key>name</key>
			<string>keyword.control.go</string>
		</dict>
		<dict>
			<key>match</key>
			<string>(\b|(?&lt;=\]))(int(16|8|32|64)?|uint(16|8|32|ptr|64)?|float(32|64)?|b(yte|ool)|string)\b</string>
			<key>name</key>
			<string>storage.type.go</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(const|chan)\b</string>
			<key>name</key>
			<string>storage.modifier.go</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(nil|true|false|iota)\b</string>
			<key>name</key>
			<string>constant.language.go</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b</string>
			<key>name</key>
			<string>constant.numeric.go</string>
		</dict>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.go</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>meta.exported-variable.go</string>
				</dict>
			</dict>
			<key>comment</key>
			<string>This is kinda hacky, in order to get the 'var' coloured the right way again.</string>
			<key>match</key>
			<string>^\s*(?:(var)\s+)?([A-Z][[:alnum:]_]*)</string>
			<key>name</key>
			<string>meta.exported-variable-declaration.go</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>"</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>"</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.go</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.double.go</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string_placeholder</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>begin</key>
			<string>'</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>'</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.go</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.single.go</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string_escaped_char</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>begin</key>
			<string>`</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>`</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.go</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.raw.go</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>^\s*package\b\s+</string>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.import.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=(?://|/\*))|$</string>
			<key>name</key>
			<string>meta.preprocessor.go.package</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>"</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.begin.go</string>
						</dict>
					</dict>
					<key>end</key>
					<string>"</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.end.go</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.quoted.double.import.go</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>include</key>
			<string>#block</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>(?x)
                (?:  ^ | (?: (?= \s ) (?&lt;!else|new|return) (?&lt;=\w)))        # allow newline or word + space before func keyword
                (func)                                                      # Capture 1: func keyword begins all function definitions
                (?:\s*)([[:alpha:]_]+[[:alnum:]_]*\s*)?\(                   # Capture 2: name of function, optional, required opening brace
                ( (?: [[:alpha:]_]+ [[:alnum:]_]* \s? )* )?                 # Capture 3: parameter list, optional
                \)                                                          # required closing brace
                \s*
                (\(?
                    [[:alpha:]_]+[[:alnum:]_]*\s
                \)?)?                                                       # Capture 4: optional results, in optional braces
            </string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.function.go</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>entity.name.function.go</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.parameters.go</string>
				</dict>
				<key>4</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.return-types.go</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?&lt;=\})|(;)</string>
			<key>name</key>
			<string>meta.function.go</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comments</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parens</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(const|chan)\b</string>
					<key>name</key>
					<string>storage.modifier.go</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#block</string>
				</dict>
			</array>
		</dict>
	</array>
	<key>repository</key>
	<dict>
		<key>access</key>
		<dict>
			<key>match</key>
			<string>(?&lt;=\.)[[:alpha:]_][[:alnum:]_]*\b(?!\s*\()</string>
			<key>name</key>
			<string>variable.other.dot-access.go</string>
		</dict>
		<key>block</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>end</key>
			<string>\}</string>
			<key>name</key>
			<string>meta.block.go</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#block_innards</string>
				</dict>
			</array>
		</dict>
		<key>block_innards</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#access</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.whitespace.support.function.leading.go</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>support.function.builtin.go</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(\s*)\b(new|c(lose(d)?|ap)|p(anic(ln)?|rint(ln)?)|len|make)(?:\b|\()</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.whitespace.function-call.leading.go</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>support.function.any-method.go</string>
						</dict>
						<key>3</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.parameters.go</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(?x)
                        (?: (?= \s ) (?:(?&lt;=else|new|return) | (?&lt;!\w)) (\s+) )?
                        (\b
                            (?!(for|if|else|switch|return)\s*\()
                            (?:[[:alpha:]_][[:alnum:]_]*+\b)            # method name
                        )
                        \s*(\()
                    </string>
					<key>name</key>
					<string>meta.function-call.go</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.control.go</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>variable.other.go</string>
						</dict>
						<key>3</key>
						<dict>
							<key>name</key>
							<string>variable.other.go</string>
						</dict>
						<key>4</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.parameters.go</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(?x)
(?: (?:(?:(var))|((?:\w+,\s+)*(?=\w+\s+:=))) )       # var+space or assign op
\s*
(
  (?:([[:alpha:]_][[:alnum:]_]*+)(?:,\s+)?)++            # variable name(s)
)
\s*(\()?
                       </string>
					<key>name</key>
					<string>meta.initialization.go</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#block</string>
				</dict>
				<dict>
					<key>include</key>
					<string>$base</string>
{'fraction_non_alphanumeric': 0.21644487529743545, 'fraction_numerical': 0.005860579888957434, 'mean_word_length': 1.8940321346595257, 'pattern_counts': {'":': 0, '<': 1179, '<?xml version=': 2, '>': 1179, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 54, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2117066', 'n_tokens_mistral': 10643, 'n_tokens_neox': 8312, 'n_words': 1135}