// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
{
	BBEditDocumentType = "CodelessLanguageModule";
	BBLMColorsSyntax = YES;
	BBLMIsCaseSensitive = YES;
	BBLMKeywordList = (
		append,
		bool,
		break,
		byte,
		cap,
		case,
		chan,
		close,
		complex,
		complex128,
		complex64,
		const,
		continue,
		copy,
		default,
		defer,
		delete,
		else,
		error,
		fallthrough,
		false,
		float32,
		float64,
		for,
		func,         
		go,
		goto,
		if,
		iota,
		imag,
		import,
		int,
		int16,
		int32,
		int64,
		int8,
		interface,
		len,
		make,
		map,
		new,
		nil,
		package,
		panic,
		print,
		println,
		range,
		real,
		recover,
		return,
		rune,
		select,
		string,
		struct,
		switch,
		true,
		type,
		uint,
		uint16,
		uint32,
		uint64,
		uint8,
		uintptr,
		var,
	);
	BBLMLanguageCode = go;
	"BBLMLanguageDisplayName" = "Go";
	BBLMScansFunctions = YES;
	BBLMSuffixMap = (
		{
			BBLMLanguageSuffix = ".go";
		},
	);
	"Language Features" = {
		"Close Block Comments" = "*/";
		"Close Parameter Lists" = ")";
		"Close Statement Blocks" = "}";
		"Close Strings 1" = "`";
		"Close Strings 2" = "\"";
		"End-of-line Ends Strings 1" = YES;
		"End-of-line Ends Strings 2" = YES;
		"Escape Char in Strings 1" = "\\";
		"Escape Char in Strings 2" = "\\";
		"Identifier and Keyword Characters" = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz";
		"Open Block Comments" = "/*";
		"Open Line Comments" = "//";
		"Open Parameter Lists" = "(";
		"Open Statement Blocks" = "{";
		"Open Strings 1" = "`";
		"Open Strings 2" = "\"";
		"Prefix for Functions" = "func";
		"Prefix for Procedures" = "func";
		"Terminator for Prototypes 1" = ";";
		"Terminator for Prototypes 2" = "";
	};
}
