]> Cypherpunks repositories - gostls13.git/commitdiff
xcode config files, self-describing
authorRobert Griesemer <gri@golang.org>
Wed, 20 May 2009 23:09:34 +0000 (16:09 -0700)
committerRobert Griesemer <gri@golang.org>
Wed, 20 May 2009 23:09:34 +0000 (16:09 -0700)
R=r
DELTA=250  (250 added, 0 deleted, 0 changed)
OCL=29120
CL=29127

misc/xcode/go.pbfilespec [new file with mode: 0644]
misc/xcode/go.xclangspec [new file with mode: 0644]

diff --git a/misc/xcode/go.pbfilespec b/misc/xcode/go.pbfilespec
new file mode 100644 (file)
index 0000000..1034778
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+       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.pbfilespec
+       Go source file spec for Xcode 3
+
+       There is not much documentation available regarding the format
+       of .pbfilespec 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/
+*/
+
+(
+       {
+               Identifier = sourcecode.go;
+               BasedOn = sourcecode;
+               Name = "Go Files";
+               Extensions = ("go");
+               MIMETypes = ("text/go");
+               Language = "xcode.lang.go";
+               IsTextFile = YES;
+               IsSourceFile = YES;
+       }
+)
diff --git a/misc/xcode/go.xclangspec b/misc/xcode/go.xclangspec
new file mode 100644 (file)
index 0000000..40fe4f5
--- /dev/null
@@ -0,0 +1,223 @@
+/*
+       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";
+               };
+       },
+
+
+// ----------------------------------------------------------------------------
+// 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.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.type.declaration",
+                               "xcode.lang.go.identifier",
+                               "xcode.lang.number",
+                       );
+               };
+       },
+
+       {
+               Identifier = "xcode.lang.go.type.declaration";
+               Syntax = {
+                       Tokenizer = "xcode.lang.go.lexer";
+                       Rules = (
+                               "type",
+                               "xcode.lang.go.identifier",
+                       );
+                       Type = "xcode.syntax.name.partial";
+               };
+       },
+
+
+// ----------------------------------------------------------------------------
+// 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",
+                       );
+               };
+       },
+
+       {
+               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";
+               };
+       },
+
+)