// 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 = (
		bool,
		break,
		byte,
		cap,
		case,         
		chan,
		cmplx,
		const,
		continue,
		default,      
		defer,
		else,
		fallthrough,
		false,
		float,
		float32,
		float64,
		for,
		func,         
		go,
		goto,
		if,
		iota,
		imag,
		import,
		int,
		int16,
		int32,
		int64,
		int8,
		interface,
		len,
		make,
		map,
		new,
		nil,
		package,
		range,
		real,
		return,
		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" = "";
	};
}
