1
0
mirror of https://github.com/golang/go synced 2024-11-25 21:47:59 -07:00
go/misc/xcode/go.xclangspec
Ken Friedenbach c7e2970ba8 Improved Xcode support
Added definition for raw string.
Added definitions for function and method declarations.
Enabled function, method, and type declarations to appear in Editor pop up menu.
Fixes #466.

R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/183065
2009-12-29 14:43:54 -08:00

265 lines
5.2 KiB
Plaintext

/*
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.
Go.xclangspec
Go language specification for Xcode 3
This is a preliminary version that supports basic syntax high-lighting
(such as keywords, literals, and comments) and an attempt to provide
some structure information (incomplete).
There is not much documentation available regarding the format
of .xclangspec files. As a starting point, see for instance the
outdated documentation at:
http://maxao.free.fr/xcode-plugin-interface/specifications.html
and the files in:
/Developer/Library/PrivateFrameworks/XcodeEdit.framework/Versions/A/Resources/
Place this file in directory:
~/Library/Application Support/Developer/Shared/Xcode/Specifications/
*/
(
// ----------------------------------------------------------------------------
// Keywords
// TODO How do we get general Unicode identifiers?
{
Identifier = "xcode.lang.go.identifier";
Syntax = {
StartChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_";
Chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
Words = (
"break",
"case",
"chan",
"const",
"continue",
"default",
"defer",
"else",
"fallthrough",
"for",
"func",
"go",
"goto",
"if",
"import",
"interface",
"map",
"package",
"range",
"return",
"select",
"struct",
"switch",
"type",
"var",
);
Type = "xcode.syntax.keyword";
AltType = "xcode.syntax.identifier"; // non-keywords are identifiers
};
},
// TODO decide what should go here, if anything
{
Identifier = "xcode.lang.go.interestingOperators";
Syntax = {
Words = (
"...",
".",
"*",
",",
":",
);
Type = "xcode.syntax.plain";
};
},
{
Identifier = "xcode.lang.go.rawstring";
Syntax = {
Start = "`";
End = "`";
Type = "xcode.syntax.string";
};
},
// ----------------------------------------------------------------------------
// Syntax Coloring
{
Identifier = "xcode.lang.go";
Description = "Go Coloring";
BasedOn = "xcode.lang.simpleColoring";
IncludeInMenu = YES;
Name = "Go";
Syntax = {
Tokenizer = "xcode.lang.go.lexer.toplevel";
IncludeRules = (
"xcode.lang.go.block",
"xcode.lang.go.bracketexpr",
"xcode.lang.go.parenexpr",
);
Type = "xcode.syntax.plain";
};
},
// The following rule returns tokens to the other rules
{
Identifier = "xcode.lang.go.lexer";
Syntax = {
IncludeRules = (
"xcode.lang.go.comment",
"xcode.lang.go.comment.singleline",
"xcode.lang.string",
"xcode.lang.character",
"xcode.lang.go.rawstring",
"xcode.lang.go.identifier",
"xcode.lang.number",
"xcode.lang.go.interestingOperators",
);
};
},
{
Identifier = "xcode.lang.go.lexer.toplevel";
Syntax = {
IncludeRules = (
"xcode.lang.go.comment",
"xcode.lang.go.comment.singleline",
"xcode.lang.string",
"xcode.lang.character",
"xcode.lang.go.rawstring",
"xcode.lang.go.type.declaration",
"xcode.lang.go.method.declaration",
"xcode.lang.go.function.declaration",
"xcode.lang.go.identifier",
"xcode.lang.number",
);
};
},
{
Identifier = "xcode.lang.go.method.declaration";
Syntax = {
Tokenizer = "xcode.lang.go.lexer";
Rules = (
"func",
"xcode.lang.go.parenexpr",
"xcode.lang.go.identifier",
"xcode.lang.go.parenexpr",
);
Type = "xcode.syntax.declaration.method";
};
},
{
Identifier = "xcode.lang.go.type.declaration";
Syntax = {
Tokenizer = "xcode.lang.go.lexer";
Rules = (
"type",
"xcode.lang.go.identifier",
);
Type = "xcode.syntax.typedef";
};
},
{
Identifier = "xcode.lang.go.function.declaration";
Syntax = {
Tokenizer = "xcode.lang.go.lexer";
Rules = (
"func",
"xcode.lang.go.identifier",
"xcode.lang.go.parenexpr",
);
Type = "xcode.syntax.declaration.function";
};
},
// ----------------------------------------------------------------------------
// Blocks
{
Identifier = "xcode.lang.go.block";
Syntax = {
Tokenizer = "xcode.lang.go.lexer";
Start = "{";
End = "}";
Foldable = YES;
Recursive = YES;
IncludeRules = (
"xcode.lang.go.bracketexpr",
"xcode.lang.go.parenexpr",
);
};
},
{
Identifier = "xcode.lang.go.parenexpr";
Syntax = {
Tokenizer = "xcode.lang.go.lexer";
Start = "(";
End = ")";
Recursive = YES;
IncludeRules = (
"xcode.lang.go.bracketexpr",
"xcode.lang.go.block",
);
};
},
{
Identifier = "xcode.lang.go.bracketexpr";
Syntax = {
Tokenizer = "xcode.lang.go.lexer";
Start = "[";
End = "]";
Recursive = YES;
IncludeRules = (
"xcode.lang.go.parenexpr",
);
};
},
{
Identifier = "xcode.lang.go.comment";
Syntax = {
Start = "/*";
End = "*/";
Foldable = YES;
IncludeRules = (
"xcode.lang.url",
"xcode.lang.url.mail",
"xcode.lang.comment.mark",
);
Type = "xcode.syntax.comment";
};
},
{
Identifier = "xcode.lang.go.comment.singleline";
Syntax = {
Start = "//";
End = "\n";
IncludeRules = (
"xcode.lang.url",
"xcode.lang.url.mail",
"xcode.lang.comment.mark",
);
Type = "xcode.syntax.comment";
};
},
)