This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 9be61e9ae8 Minimal Lexing Support for Go Language (#5297)
9be61e9ae8 is described below

commit 9be61e9ae8815b31303e3609b6586ab16423e1ae
Author: Laszlo Kishalmi <laszlo.kisha...@gmail.com>
AuthorDate: Sat Feb 11 08:35:35 2023 -0800

    Minimal Lexing Support for Go Language (#5297)
    
    * Added ANTLR based Go Parser module
    
    * Added Go Syntax Lexer
    
    * Add Editor Preferences for Go
    
    * Fixed Go Lexer EOS token
    
    * Made a few polishment on the Go preferences
    
    * Registered languages.go as an editor.kit dependency
    
    * Exclude Go example files from RAT
    
    * Added minimal Go parser based error feedback
    
    * Added fold support for Go
    
    * Replace logo with custom painted one
    
    * Fix position registration for GoLanguage (clashed with antlr3 grammar)
    
    * Remove some cruft on languages.go module
    
    ---------
    
    Co-authored-by: Matthias Bläsing <mblaes...@doppel-helix.eu>
---
 ide/editor.kit/nbproject/project.xml               |   6 +
 ide/go.lang/manifest.mf                            |   3 +-
 ide/languages.go/build.xml                         |  29 ++++
 ide/languages.go/licenseinfo.xml                   |  28 ++++
 ide/languages.go/manifest.mf                       |   6 +
 ide/languages.go/nbproject/project.properties      |  17 ++
 ide/languages.go/nbproject/project.xml             | 142 +++++++++++++++++
 .../modules/languages/go/Bundle.properties         |  33 ++++
 .../modules/languages/go/FontAndColors.xml         |  33 ++++
 .../org/netbeans/modules/languages/go/GoExample.go |  24 +++
 .../netbeans/modules/languages/go/GoLangLexer.java | 153 ++++++++++++++++++
 .../modules/languages/go/GoLangParser.java         |  54 +++++++
 .../modules/languages/go/GoLangParserResult.java   | 152 ++++++++++++++++++
 .../languages/go/GoLangStructureScanner.java       |  51 ++++++
 .../netbeans/modules/languages/go/GoLanguage.java  | 174 +++++++++++++++++++++
 .../netbeans/modules/languages/go/GoTokenId.java   |  50 ++++++
 .../org/netbeans/modules/languages/go/layer.xml    |  73 +++++++++
 .../netbeans/modules/languages/go/preferences.xml  |  29 ++++
 .../netbeans/modules/languages/go/resources/go.png | Bin 0 -> 438 bytes
 .../netbeans/modules/languages/go/resources/go.svg |  78 +++++++++
 nbbuild/cluster.properties                         |   1 +
 nbbuild/rat-exclusions.txt                         |  24 +--
 22 files changed, 1147 insertions(+), 13 deletions(-)

diff --git a/ide/editor.kit/nbproject/project.xml 
b/ide/editor.kit/nbproject/project.xml
index e95b7975fd..e93cd896cc 100644
--- a/ide/editor.kit/nbproject/project.xml
+++ b/ide/editor.kit/nbproject/project.xml
@@ -93,6 +93,12 @@
                         <specification-version>1.4</specification-version>
                     </run-dependency>
                 </dependency>
+                <dependency>
+                    
<code-name-base>org.netbeans.modules.languages.go</code-name-base>
+                    <run-dependency>
+                        <specification-version>1.0</specification-version>
+                    </run-dependency>
+                </dependency>
                 <dependency>
                     
<code-name-base>org.netbeans.modules.languages.manifest</code-name-base>
                     <run-dependency>
diff --git a/ide/go.lang/manifest.mf b/ide/go.lang/manifest.mf
index c2a4a59a87..37388df915 100644
--- a/ide/go.lang/manifest.mf
+++ b/ide/go.lang/manifest.mf
@@ -2,4 +2,5 @@ Manifest-Version: 1.0
 OpenIDE-Module: org.netbeans.modules.go.lang
 OpenIDE-Module-Localizing-Bundle: 
org/netbeans/modules/go/lang/Bundle.properties
 OpenIDE-Module-Specification-Version: 1.1
-AutoUpdate-Show-In-Client: true
+AutoUpdate-Show-In-Client: false
+
diff --git a/ide/languages.go/build.xml b/ide/languages.go/build.xml
new file mode 100644
index 0000000000..60824c66be
--- /dev/null
+++ b/ide/languages.go/build.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<!-- You may freely edit this file. See harness/README in the NetBeans 
platform -->
+<!-- for some information on what you could do (e.g. targets to override). -->
+<!-- If you delete this file and reopen the project it will be recreated. -->
+<project name="ide/languages.go" default="build" basedir=".">
+    <description>Builds, tests, and runs the project 
org.netbeans.modules.languages.go</description>
+    <import file="../../nbbuild/templates/projectized.xml"/>
+
+</project>
diff --git a/ide/languages.go/licenseinfo.xml b/ide/languages.go/licenseinfo.xml
new file mode 100644
index 0000000000..e9e61f6fce
--- /dev/null
+++ b/ide/languages.go/licenseinfo.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<licenseinfo>
+    <fileset>
+        <file>src/org/netbeans/modules/languages/go/GoExample.go</file>
+        <file>src/org/netbeans/modules/languages/go/resources/go.png</file>
+        <license ref="Apache-2.0-ASF" />
+    </fileset>
+</licenseinfo>
diff --git a/ide/languages.go/manifest.mf b/ide/languages.go/manifest.mf
new file mode 100644
index 0000000000..7d17a14e09
--- /dev/null
+++ b/ide/languages.go/manifest.mf
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+OpenIDE-Module: org.netbeans.modules.languages.go
+OpenIDE-Module-Layer: org/netbeans/modules/languages/go/layer.xml
+OpenIDE-Module-Localizing-Bundle: 
org/netbeans/modules/languages/go/Bundle.properties
+OpenIDE-Module-Specification-Version: 1.0
+AutoUpdate-Show-In-Client: false
diff --git a/ide/languages.go/nbproject/project.properties 
b/ide/languages.go/nbproject/project.properties
new file mode 100644
index 0000000000..c216e1f049
--- /dev/null
+++ b/ide/languages.go/nbproject/project.properties
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+javac.source=1.8
diff --git a/ide/languages.go/nbproject/project.xml 
b/ide/languages.go/nbproject/project.xml
new file mode 100644
index 0000000000..48c4f4a333
--- /dev/null
+++ b/ide/languages.go/nbproject/project.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<project xmlns="http://www.netbeans.org/ns/project/1";>
+    <type>org.netbeans.modules.apisupport.project</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3";>
+            <code-name-base>org.netbeans.modules.languages.go</code-name-base>
+            <module-dependencies>
+                <dependency>
+                    
<code-name-base>org.netbeans.core.multiview</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.62</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    
<code-name-base>org.netbeans.libs.antlr4.runtime</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>2</release-version>
+                        <specification-version>1.20</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    
<code-name-base>org.netbeans.modules.csl.api</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>2</release-version>
+                        <specification-version>2.75</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    
<code-name-base>org.netbeans.modules.csl.types</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.19</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    
<code-name-base>org.netbeans.modules.go.lang</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>1.0</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.lexer</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>2</release-version>
+                        <specification-version>1.81</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    
<code-name-base>org.netbeans.modules.lexer.antlr4</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>1.0</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    
<code-name-base>org.netbeans.modules.parsing.api</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>9.26</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.awt</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>7.86</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.filesystems</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>9.30</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.util</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>9.26</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.util.lookup</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>8.52</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.windows</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>6.95</specification-version>
+                    </run-dependency>
+                </dependency>
+            </module-dependencies>
+            <public-packages/>
+        </data>
+    </configuration>
+</project>
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/Bundle.properties 
b/ide/languages.go/src/org/netbeans/modules/languages/go/Bundle.properties
new file mode 100644
index 0000000000..4c6ab6a3f5
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/Bundle.properties
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+OpenIDE-Module-Name=Go Language Editor Support
+OpenIDE-Module-Display-Category=IDE
+OpenIDE-Module-Short-Description=Support for editing Go Language Files.
+OpenIDE-Module-Long-Description=Support for editing Go Language files.
+
+Editors/text/x-go=Go File
+
+comment=Comment
+error=Error
+identifier=Identifier
+keyword=Keyword
+number=Number
+operator=Operator
+separator=Separator
+string=String
+whitespace=Whitespace
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/FontAndColors.xml 
b/ide/languages.go/src/org/netbeans/modules/languages/go/FontAndColors.xml
new file mode 100644
index 0000000000..562091fe6c
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/FontAndColors.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<!DOCTYPE fontscolors PUBLIC "-//NetBeans//DTD Editor Fonts and Colors 
settings 1.1//EN" "http://www.netbeans.org/dtds/EditorFontsColors-1_1.dtd";>
+<fontscolors>
+    <fontcolor name="comment" default="comment"/>
+    <fontcolor name="error" default="error"/>
+    <fontcolor name="identifier" default="identifier"/>
+    <fontcolor name="keyword" default="keyword"/>
+    <fontcolor name="number" default="number"/>
+    <fontcolor name="operator" default="operator"/>
+    <fontcolor name="separator" default="separator"/>
+    <fontcolor name="string" default="string"/>
+    <fontcolor name="whitespace" default="whitespace"/>
+</fontscolors>
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/GoExample.go 
b/ide/languages.go/src/org/netbeans/modules/languages/go/GoExample.go
new file mode 100644
index 0000000000..df09d5777e
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/GoExample.go
@@ -0,0 +1,24 @@
+package main
+
+import (
+       "fmt"
+       "log"
+       "errors"
+       "net/http"
+)
+
+var Dir string
+
+/*
+var Users jsoncfgo.Obj
+var AppContext *go_utils.Singleton
+*/
+
+func HtmlFileHandler(response http.ResponseWriter, request *http.Request, 
filename string){
+       response.Header().Set("Content-type", "text/html")
+       webpage, err := ioutil.ReadFile(Dir + filename)  // read whole the file
+       if err != nil {
+               http.Error(response, fmt.Sprintf("%s file error %v", filename, 
err), 500)
+       }
+       fmt.Fprint(response, string(webpage));
+}
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangLexer.java 
b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangLexer.java
new file mode 100644
index 0000000000..113d8b56c6
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangLexer.java
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.languages.go;
+
+import org.antlr.parser.golang.GoLexer;
+import org.netbeans.api.lexer.Token;
+import org.netbeans.spi.lexer.LexerRestartInfo;
+
+import static org.antlr.parser.golang.GoLexer.*;
+import org.netbeans.spi.lexer.antlr4.AbstractAntlrLexerBridge;
+
+import static org.netbeans.modules.languages.go.GoTokenId.*;
+/**
+ *
+ * @author lkishalmi
+ */
+public final class GoLangLexer extends AbstractAntlrLexerBridge<GoLexer, 
GoTokenId> {
+
+    public GoLangLexer(LexerRestartInfo<GoTokenId> info) {
+        super(info, GoLexer::new);
+    }
+
+    @Override
+    protected Token<GoTokenId> mapToken(org.antlr.v4.runtime.Token antlrToken) 
{
+        switch (antlrToken.getType()) {
+            case BREAK:
+            case DEFAULT:
+            case FUNC:
+            case INTERFACE:
+            case SELECT:
+            case CASE:
+            case DEFER:
+            case GO:
+            case MAP:
+            case STRUCT:
+            case CHAN:
+            case ELSE:
+            case GOTO:
+            case PACKAGE:
+            case SWITCH:
+            case CONST:
+            case FALLTHROUGH:
+            case IF:
+            case RANGE:
+            case TYPE:
+            case CONTINUE:
+            case FOR:
+            case IMPORT:
+            case RETURN:
+            case VAR:
+            case NIL_LIT:
+                return token(KEYWORD);
+
+            case GoLexer.IDENTIFIER:
+                return token(GoTokenId.IDENTIFIER);
+
+            case L_PAREN:
+            case R_PAREN:
+            case L_CURLY:
+            case R_CURLY:
+            case L_BRACKET:
+            case R_BRACKET:
+            case ASSIGN:
+            case COMMA:
+            case SEMI:
+            case COLON:
+            case DOT:
+            case PLUS_PLUS:
+            case MINUS_MINUS:
+            case DECLARE_ASSIGN:
+            case ELLIPSIS:
+                return token(SEPARATOR);
+
+            case LOGICAL_OR:
+            case LOGICAL_AND:
+            case EQUALS:
+            case NOT_EQUALS:
+            case LESS:
+            case LESS_OR_EQUALS:
+            case GREATER:
+            case GREATER_OR_EQUALS:
+            case OR:
+            case DIV:
+            case MOD:
+            case LSHIFT:
+            case RSHIFT:
+            case BIT_CLEAR:
+            case EXCLAMATION:
+            case PLUS:
+            case MINUS:
+            case CARET:
+            case STAR:
+            case AMPERSAND:
+            case RECEIVE:
+                return token(OPERATOR);
+
+            case RAW_STRING_LIT:
+            case INTERPRETED_STRING_LIT:
+            case RUNE_LIT:
+                return token(STRING);
+
+            case DECIMAL_LIT:
+            case BINARY_LIT:
+            case OCTAL_LIT:
+            case HEX_LIT:
+            case FLOAT_LIT:
+            case DECIMAL_FLOAT_LIT:
+            case HEX_FLOAT_LIT:
+            case IMAGINARY_LIT:
+                return token(NUMBER);
+
+            case WS:
+            case WS_NLSEMI:
+            case TERMINATOR:
+                return token(WHITESPACE);
+
+            case GoLexer.COMMENT:
+            case LINE_COMMENT:
+            case LINE_COMMENT_NLSEMI:
+                return  token(GoTokenId.COMMENT);
+            case EOS:
+                String text = antlrToken.getText();
+                if (Character.isWhitespace(text.codePointAt(0))) {
+                    return token(WHITESPACE);
+                }
+                if (text.startsWith("/*")) {
+                    return token(GoTokenId.COMMENT);
+                }
+                if (text.equals(";")) {
+                    return token(SEPARATOR);
+                }
+            default:
+                return token(ERROR);
+        }
+    }
+
+}
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangParser.java 
b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangParser.java
new file mode 100644
index 0000000000..a613b1506a
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangParser.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.languages.go;
+
+import javax.swing.event.ChangeListener;
+import org.netbeans.modules.parsing.api.Snapshot;
+import org.netbeans.modules.parsing.api.Task;
+import org.netbeans.modules.parsing.spi.ParseException;
+import org.netbeans.modules.parsing.spi.Parser;
+import org.netbeans.modules.parsing.spi.SourceModificationEvent;
+
+/**
+ *
+ * @author Laszlo Kishalmi
+ */
+public class GoLangParser extends Parser {
+
+    private Result lastResult;
+
+    @Override
+    public void parse(Snapshot snapshot, Task task, SourceModificationEvent 
event) throws ParseException {
+        lastResult = new GoLangParserResult(snapshot).get();
+    }
+
+    @Override
+    public Result getResult(Task task) throws ParseException {
+        return lastResult;
+    }
+
+    @Override
+    public void addChangeListener(ChangeListener changeListener) {
+    }
+
+    @Override
+    public void removeChangeListener(ChangeListener changeListener) {
+    }
+
+}
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangParserResult.java
 
b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangParserResult.java
new file mode 100644
index 0000000000..967f0c1568
--- /dev/null
+++ 
b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangParserResult.java
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.languages.go;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.antlr.parser.golang.GoLexer;
+import org.antlr.parser.golang.GoParser;
+import org.antlr.parser.golang.GoParserBaseListener;
+import org.antlr.v4.runtime.ANTLRErrorListener;
+import org.antlr.v4.runtime.BaseErrorListener;
+import org.antlr.v4.runtime.CharStreams;
+import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.RecognitionException;
+import org.antlr.v4.runtime.Recognizer;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+import org.netbeans.modules.csl.api.OffsetRange;
+import org.netbeans.modules.csl.api.Severity;
+import org.netbeans.modules.csl.spi.DefaultError;
+import org.netbeans.modules.csl.spi.ParserResult;
+import org.netbeans.modules.parsing.api.Snapshot;
+import org.openide.filesystems.FileObject;
+
+/**
+ *
+ * @author Laszlo Kishalmi
+ */
+public class GoLangParserResult extends ParserResult {
+
+    private final List<DefaultError> errors = new ArrayList<>();;
+    public final List<OffsetRange> folds = new ArrayList<>();
+    volatile boolean finished = false;
+
+    public GoLangParserResult(Snapshot snapshot) {
+        super(snapshot);
+    }
+
+    @Override
+    public List<? extends org.netbeans.modules.csl.api.Error> getDiagnostics() 
{
+        return errors;
+    }
+
+    public GoLangParserResult get() {
+        if (! finished) {
+            GoLexer lexer = new 
GoLexer(CharStreams.fromString(String.valueOf(getSnapshot().getText())));
+            GoParser parser = new GoParser(new CommonTokenStream(lexer));
+            parser.addErrorListener(createErrorListener());
+            parser.addParseListener(createFoldListener());
+
+            parser.sourceFile();
+            finished = true;
+        }
+        return this;
+    }
+
+    @Override
+    protected void invalidate() {
+    }
+
+    @Override
+    protected boolean processingFinished() {
+        return finished;
+    }
+
+    protected final FileObject getFileObject() {
+        return getSnapshot().getSource().getFileObject();
+    }
+
+    private ANTLRErrorListener createErrorListener() {
+        return new BaseErrorListener() {
+            @Override
+            public void syntaxError(Recognizer<?, ?> recognizer, Object 
offendingSymbol, int line, int charPositionInLine, String msg, 
RecognitionException e) {
+                int errorPosition = 0;
+                if (offendingSymbol instanceof Token) {
+                    Token offendingToken = (Token) offendingSymbol;
+                    errorPosition = offendingToken.getStartIndex();
+                }
+                errors.add(new DefaultError(null, msg, null, getFileObject(), 
errorPosition, errorPosition, Severity.ERROR));
+            }
+
+        };
+    }
+
+    private ParseTreeListener createFoldListener() {
+        return new GoParserBaseListener() {
+            private void addFold(Token startToken, Token stopToken) {
+                int start = startToken.getStartIndex();
+                int stop = stopToken.getStartIndex() + 1;
+                if(start >= stop) {
+                    return;
+                }
+                OffsetRange range = new OffsetRange(start, stop);
+                if(! folds.contains(range)) {
+                    folds.add(range);
+                }
+            }
+
+            private void addBlockFold(GoParser.BlockContext ctx) {
+                if ((ctx.L_CURLY() != null) && (ctx.R_CURLY() != null)) {
+                    addFold(ctx.L_CURLY().getSymbol(), 
ctx.R_CURLY().getSymbol());
+                }
+            }
+
+            @Override
+            public void exitStructType(GoParser.StructTypeContext ctx) {
+                if ((ctx.L_CURLY() != null) && (ctx.R_CURLY() != null)) {
+                    addFold(ctx.L_CURLY().getSymbol(), 
ctx.R_CURLY().getSymbol());
+                }
+            }
+
+            @Override
+            public void exitMethodDecl(GoParser.MethodDeclContext ctx) {
+                if (ctx.block() != null) {
+                    addBlockFold(ctx.block());
+                }
+            }
+
+            @Override
+            public void exitFunctionDecl(GoParser.FunctionDeclContext ctx) {
+                if (ctx.block() != null) {
+                    addBlockFold(ctx.block());
+                }
+            }
+
+
+            @Override
+            public void exitImportDecl(GoParser.ImportDeclContext ctx) {
+                if ((ctx.L_PAREN() != null) && (ctx.R_PAREN() != null)) {
+                    addFold(ctx.L_PAREN().getSymbol(), 
ctx.R_PAREN().getSymbol());
+                }
+            }
+
+        };
+    }
+}
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangStructureScanner.java
 
b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangStructureScanner.java
new file mode 100644
index 0000000000..8b398a41f7
--- /dev/null
+++ 
b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLangStructureScanner.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.languages.go;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import org.netbeans.modules.csl.api.OffsetRange;
+import org.netbeans.modules.csl.api.StructureItem;
+import org.netbeans.modules.csl.api.StructureScanner;
+import org.netbeans.modules.csl.spi.ParserResult;
+
+/**
+ *
+ * @author Laszlo Kishalmi
+ */
+public class GoLangStructureScanner implements StructureScanner {
+
+    @Override
+    public List<? extends StructureItem> scan(ParserResult info) {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public Map<String, List<OffsetRange>> folds(ParserResult info) {
+        return Collections.singletonMap("codeblocks", 
((GoLangParserResult)info).folds); //NOI18N
+
+    }
+
+    @Override
+    public Configuration getConfiguration() {
+        return new Configuration(true, false);
+    }
+
+}
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/GoLanguage.java 
b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLanguage.java
new file mode 100644
index 0000000000..c444f4b123
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/GoLanguage.java
@@ -0,0 +1,174 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.languages.go;
+
+import java.util.Collection;
+import java.util.EnumSet;
+import org.netbeans.api.lexer.Language;
+import org.netbeans.core.spi.multiview.MultiViewElement;
+import org.netbeans.core.spi.multiview.text.MultiViewEditorElement;
+import org.netbeans.modules.csl.api.StructureScanner;
+import org.netbeans.modules.csl.spi.DefaultLanguageConfig;
+import org.netbeans.modules.csl.spi.LanguageRegistration;
+import org.netbeans.modules.parsing.spi.Parser;
+import org.netbeans.spi.lexer.LanguageHierarchy;
+import org.netbeans.spi.lexer.Lexer;
+import org.netbeans.spi.lexer.LexerRestartInfo;
+import org.openide.awt.ActionID;
+import org.openide.awt.ActionReference;
+import org.openide.awt.ActionReferences;
+import org.openide.filesystems.MIMEResolver;
+import org.openide.util.*;
+import org.openide.windows.TopComponent;
+
+/**
+ *
+ * @author lkishalmi
+ */
+@NbBundle.Messages(
+        "GoResolver=Go File"
+)
+@MIMEResolver.ExtensionRegistration(displayName = "#GoResolver",
+    extension = "go",
+    mimeType = GoLanguage.MIME_TYPE,
+    position = 315
+)
+
+@ActionReferences({
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "System", id = 
"org.openide.actions.OpenAction"),
+            position = 100,
+            separatorAfter = 200
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "Edit", id = 
"org.openide.actions.CutAction"),
+            position = 300
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "Edit", id = 
"org.openide.actions.CopyAction"),
+            position = 400
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "Edit", id = 
"org.openide.actions.PasteAction"),
+            position = 500,
+            separatorAfter = 600
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "Edit", id = 
"org.openide.actions.DeleteAction"),
+            position = 700
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "System", id = 
"org.openide.actions.RenameAction"),
+            position = 800,
+            separatorAfter = 900
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "System", id = 
"org.openide.actions.SaveAsTemplateAction"),
+            position = 1000,
+            separatorAfter = 1100
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "System", id = 
"org.openide.actions.FileSystemAction"),
+            position = 1200,
+            separatorAfter = 1300
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "System", id = 
"org.openide.actions.ToolsAction"),
+            position = 1400
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-go/Actions",
+            id = @ActionID(category = "System", id = 
"org.openide.actions.PropertiesAction"),
+            position = 1500
+    )
+})
+@LanguageRegistration(mimeType = GoLanguage.MIME_TYPE, useMultiview = true)
+public class GoLanguage extends DefaultLanguageConfig {
+
+    public static final String MIME_TYPE = "text/x-go";
+
+    @Override
+    public Language getLexerLanguage() {
+        return LANGUAGE;
+    }
+
+    @Override
+    public String getLineCommentPrefix() {
+        return "//"; // NOI18N
+    }
+
+    @Override
+    public String getDisplayName() {
+        return "Go"; //NOI18N
+    }
+
+    @Override
+    public Parser getParser() {
+        return new GoLangParser();
+    }
+
+    @Override
+    public StructureScanner getStructureScanner() {
+        return new GoLangStructureScanner();
+    }
+
+    @Override
+    public boolean hasStructureScanner() {
+        return true;
+    }
+
+    private static final Language<GoTokenId> LANGUAGE = new 
LanguageHierarchy<GoTokenId>() {
+        @Override
+        protected Collection<GoTokenId> createTokenIds() {
+            return EnumSet.allOf(GoTokenId.class);
+        }
+
+        @Override
+        protected Lexer<GoTokenId> createLexer(LexerRestartInfo<GoTokenId> 
info) {
+            return new GoLangLexer(info);
+        }
+
+        @Override
+        protected String mimeType() {
+            return GoLanguage.MIME_TYPE;
+        }
+    }.language();
+
+    @NbBundle.Messages("Source=&Source")
+    @MultiViewElement.Registration(
+            displayName = "#Source",
+            persistenceType = TopComponent.PERSISTENCE_ONLY_OPENED,
+            mimeType = GoLanguage.MIME_TYPE,
+            preferredID = "go.source",
+            position = 100
+    )
+    public static MultiViewEditorElement createMultiViewEditorElement(Lookup 
context) {
+        return new MultiViewEditorElement(context);
+    }
+
+}
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/GoTokenId.java 
b/ide/languages.go/src/org/netbeans/modules/languages/go/GoTokenId.java
new file mode 100644
index 0000000000..1ba9de4b0f
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/GoTokenId.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.languages.go;
+
+import org.netbeans.api.lexer.TokenId;
+
+/**
+ *
+ * @author lkishalmi
+ */
+public enum GoTokenId implements TokenId{
+
+    COMMENT("comment"),
+    ERROR("error"),
+    IDENTIFIER("identifier"),
+    KEYWORD("keyword"),
+    NUMBER("number"),
+    OPERATOR("operator"),
+    SEPARATOR("separator"),
+    STRING("string"),
+    WHITESPACE("whitespace");
+
+    private final String category;
+
+    GoTokenId(String category) {
+        this.category = category;
+    }
+
+    @Override
+    public String primaryCategory() {
+        return category;
+    }
+
+}
diff --git a/ide/languages.go/src/org/netbeans/modules/languages/go/layer.xml 
b/ide/languages.go/src/org/netbeans/modules/languages/go/layer.xml
new file mode 100644
index 0000000000..044ae2181d
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/layer.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" 
"http://www.netbeans.org/dtds/filesystem-1_2.dtd";>
+<filesystem>
+    <folder name="Editors">
+        <folder name="text">
+            <folder name="x-go">
+                <attr name="displayName" 
bundlevalue="org.netbeans.modules.languages.go.Bundle#Editors/text/x-go"/>
+                <folder name="FontsColors">
+                    <folder name="NetBeans">
+                        <folder name="Defaults">
+                            <file name="FontAndColors.xml" 
url="FontAndColors.xml">
+                                <attr name="SystemFileSystem.localizingBundle" 
stringvalue="org.netbeans.modules.languages.go.Bundle"/>
+                            </file>
+                        </folder>
+                    </folder>
+                </folder>
+                <folder name="Preferences">
+                    <folder name="Defaults">
+                        <file 
name="org-netbeans-modules-languages-go-preferences.xml" url="preferences.xml"/>
+                    </folder>
+                </folder>
+            </folder>
+        </folder>
+    </folder>
+    <folder name="Loaders">
+        <folder name="text">
+            <folder name="x-go">
+                <attr name="iconBase" 
stringvalue="org/netbeans/modules/languages/go/resources/go.png"/>
+            </folder>
+        </folder>
+    </folder>
+    <folder name="OptionsDialog">
+        <folder name="PreviewExamples">
+            <folder name="text">
+                <file name="x-go" url="GoExample.go"/>
+            </folder>
+        </folder>
+        <folder name="Editor">
+            <folder name="Formatting">
+                <folder name="text">
+                    <folder name="x-go">
+                        <file name="TabsAndIndents.instance">
+                            <attr name="instanceOf" 
stringvalue="org.netbeans.modules.options.editor.spi.PreferencesCustomizer$Factory"/>
+                            <attr name="instanceCreate" 
methodvalue="org.netbeans.modules.options.editor.spi.CustomizerFactories.createDefaultTabsAndIndentsCustomizerFactory"/>
+                            <attr name="previewTextFile" 
stringvalue="org/netbeans/modules/languages/go/GoExample.go"/>
+                            <attr name="position" intvalue="100"/>
+                        </file>
+                    </folder>
+                </folder>
+            </folder>
+        </folder>
+    </folder>
+</filesystem>
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/preferences.xml 
b/ide/languages.go/src/org/netbeans/modules/languages/go/preferences.xml
new file mode 100644
index 0000000000..4f717a810f
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/preferences.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<!DOCTYPE editor-preferences PUBLIC "-//NetBeans//DTD Editor Preferences 
1.0//EN" "http://www.netbeans.org/dtds/EditorPreferences-1_0.dtd";>
+
+<editor-preferences>
+    <entry javaType="java.lang.Boolean" name="enable-indent" 
xml:space="preserve"><value>true</value></entry>
+    <entry javaType="java.lang.Integer" name="indent-shift-width" 
xml:space="preserve"><value>4</value></entry>
+    <entry javaType="java.lang.Boolean" name="expand-tabs" 
xml:space="preserve"><value>false</value></entry>
+    <entry javaType="java.lang.Integer" name="tab-size" 
xml:space="preserve"><value>4</value></entry>
+</editor-preferences>
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/resources/go.png 
b/ide/languages.go/src/org/netbeans/modules/languages/go/resources/go.png
new file mode 100644
index 0000000000..a592cb137b
Binary files /dev/null and 
b/ide/languages.go/src/org/netbeans/modules/languages/go/resources/go.png differ
diff --git 
a/ide/languages.go/src/org/netbeans/modules/languages/go/resources/go.svg 
b/ide/languages.go/src/org/netbeans/modules/languages/go/resources/go.svg
new file mode 100644
index 0000000000..dc3ae95dd3
--- /dev/null
+++ b/ide/languages.go/src/org/netbeans/modules/languages/go/resources/go.svg
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+<!--
+Icon was created using inkscape. The basis was created using the font
+LexendPeta:
+
+https://fonts.google.com/specimen/Lexend+Peta
+
+The font was used with in the "900" variant and simulated italic, the
+character distance reduced and the color used by Go applied.
+-->
+
+<svg
+   version="1.1"
+   id="Go"
+   x="0px"
+   y="0px"
+   width="16px"
+   height="16px"
+   viewBox="0 0 16 16"
+   style="enable-background:new 0 0 16 16;"
+   xml:space="preserve"
+   sodipodi:docname="go.svg"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:svg="http://www.w3.org/2000/svg";><g
+   id="g41855"
+   transform="translate(-0.11839993,-0.1326296)"><path
+     d="m 3.5913422,11.591335 q -0.8907351,0 -1.5635244,-0.227422 Q 
1.3550285,11.136492 0.91913686,10.7006 0.49272113,10.264708 
0.35058254,9.6203468 0.20844396,8.9759853 0.37901026,8.1326297 
0.53062475,7.3745573 0.95704048,6.7491474 1.3929321,6.1142618 
2.0278178,5.6499424 2.6721794,5.1856231 3.4871072,4.9297736 4.311511,4.6739242 
5.2401497,4.6739242 q 0.7296447,0 1.2887231,0.1610904 0.5685543,0.1516145 
0.9760182,0.397988 0.4169399,0.2368976 0.6633134,0.5116989 L 
6.6899632,7.0713283 Q 6.5 [...]
+     stroke-width="0.236898" fill="#00aed8"
+     id="path41729" /><path
+     d="m 11.077231,11.591335 q -0.909686,0 -1.6203793,-0.255849 Q 
8.7556347,11.07016 8.3007913,10.605841 7.8459478,10.141522 7.6659056,9.5161118 
7.4953393,8.8812262 7.6469538,8.1326297 7.7985683,7.3840332 8.224984,6.7586233 
8.6513998,6.1237377 9.2957613,5.6594183 9.9401229,5.195099 10.745575,4.9392495 
q 0.805452,-0.2653253 1.705663,-0.2653253 0.909687,0 1.610904,0.2653253 
0.701217,0.2558495 1.15606,0.7201688 0.454844,0.4643194 0.634886,1.099205 
0.180042,0.6254099 0.02843,1.3645305 -0.15 [...]
+     stroke-width="0.236898" fill="#00aed8"
+     id="path41731" /></g><defs
+   id="defs11" /><sodipodi:namedview
+   id="namedview9"
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1.0"
+   inkscape:pageshadow="2"
+   inkscape:pageopacity="0.0"
+   inkscape:pagecheckerboard="0"
+   showgrid="false"
+   inkscape:zoom="38.581514"
+   inkscape:cx="16.562336"
+   inkscape:cy="8.864349"
+   inkscape:window-width="2490"
+   inkscape:window-height="1376"
+   inkscape:window-x="0"
+   inkscape:window-y="0"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Go" />
+
+
+
+</svg>
diff --git a/nbbuild/cluster.properties b/nbbuild/cluster.properties
index 3bf36f5194..10ada663ad 100644
--- a/nbbuild/cluster.properties
+++ b/nbbuild/cluster.properties
@@ -427,6 +427,7 @@ nb.cluster.ide=\
         jumpto,\
         languages,\
         languages.diff,\
+        languages.go,\
         languages.manifest,\
         languages.toml,\
         languages.yaml,\
diff --git a/nbbuild/rat-exclusions.txt b/nbbuild/rat-exclusions.txt
index 2a0a17196b..b249f3b555 100644
--- a/nbbuild/rat-exclusions.txt
+++ b/nbbuild/rat-exclusions.txt
@@ -5,9 +5,9 @@
 ###### to you under the Apache License, Version 2.0 (the
 ###### "License"); you may not use this file except in compliance
 ###### with the License.  You may obtain a copy of the License at
-###### 
+######
 ######   http://www.apache.org/licenses/LICENSE-2.0
-###### 
+######
 ###### Unless required by applicable law or agreed to in writing,
 ###### software distributed under the License is distributed on an
 ###### "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -16,7 +16,7 @@
 ###### under the License.
 
 ###### BEGIN OF EXCLUSIONS (Do not remove this marker!)
-###### build artifacts 
+###### build artifacts
 **/build/**
 licenses/**
 nbbuild/licenses/**
@@ -59,7 +59,7 @@ 
enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_4_0_frag/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_5_0_frag/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_6_0_frag/*
 
-###### user-specific files  
+###### user-specific files
 **/nbproject/private/**
 
 ###### no degree of creativity: 
https://www.apache.org/legal/src-headers.html#faq-exceptions
@@ -88,10 +88,10 @@ 
ide/options.editor/src/org/netbeans/modules/options/colors/HighlightingExample
 
ide/options.editor/src/org/netbeans/modules/options/indentation/indentationExample
 platform/templates/src/org/netbeans/modules/templates/resources/userprop.txt
 ### limited degreed of creativity
-## the files do not reach a level of creativity 
+## the files do not reach a level of creativity
 
java/maven.checkstyle/src/org/netbeans/modules/maven/format/checkstyle/config/configuration*.dtd
 
-###### test data: https://www.apache.org/legal/src-headers.html#faq-exceptions 
+###### test data: https://www.apache.org/legal/src-headers.html#faq-exceptions
 platform/api.search/test/unit/src/org/netbeans/modules/search/data/**
 platform/api.templates/test/unit/src/org/netbeans/modules/templates/utf8.xml
 platform/autoupdate.services/test/unit/**/data/**
@@ -159,7 +159,7 @@ 
java/selenium2.java/src/org/netbeans/modules/selenium2/java/SeleneseIT.java.temp
 java/testng.ui/src/org/netbeans/modules/testng/ui/resources/*.template
 
websvccommon/websvc.saas.api/src/org/netbeans/modules/websvc/saas/oauth/*.template
 
-###### do not natively support comments 
+###### do not natively support comments
 **/*.mf
 **/*.MF
 **/*.nib
@@ -168,7 +168,7 @@ 
websvccommon/websvc.saas.api/src/org/netbeans/modules/websvc/saas/oauth/*.templa
 harness/jellytools.platform/src/org/netbeans/jellytools/version_info
 **/*.npss
 
-######  generated test files 
+######  generated test files
 **/*.pass
 **/*.pass2
 **/*.pbxproj
@@ -183,14 +183,14 @@ 
harness/jellytools.platform/src/org/netbeans/jellytools/version_info
 
platform/openide.util.ui/test/unit/src/org/openide/util/UtilitiesTranslateEmpty.txt
 
platform/openide.util/test/unit/src/org/openide/util/LookupUsesRequestProcessorTest.resource
 
-######  external dependencies licences and notices 
+######  external dependencies licences and notices
 **/external/*-license.txt
 **/external/*-notice.txt
 
 ###### generated
-### signatures for past versions 
+### signatures for past versions
 **/nbproject/*.sig
-### generated, no degree of creativity 
+### generated, no degree of creativity
 **/nbproject/build-impl.xml
 **/nbproject/genfiles.properties
 **/nbproject/groovy-build.xml
@@ -202,7 +202,7 @@ 
websvccommon/websvc.saas.api/src/org/netbeans/modules/websvc/saas/model/wadl/*
 ### generated ANTLR
 
java/java.api.common/src/org/netbeans/modules/java/api/common/project/ui/customizer/vmo/gen/CommandLine.tokens
 
-###### license files 
+###### license files
 
apisupport/apisupport.installer/src/org/netbeans/modules/apisupport/installer/resources/licenses/**
 ### companion files for CDDL licensed binaries
 profiler/lib.profiler/release/lib/deployed/**/*.map


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to