Skip to content

Commit 81c66cc

Browse files
committed
starting a Go lang extension for Komodo
0 parents  commit 81c66cc

File tree

7 files changed

+133
-0
lines changed

7 files changed

+133
-0
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
*.pyc
2+
*.egg-info
3+
tmp/
4+
build/

README.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Komodo (activestate.com/komodo) extension to add support for the Go language
2+
(golang.org).
3+

components/koGo_UDL_Language.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
"""Komodo Go language service"""
3+
4+
import logging
5+
from koUDLLanguageBase import KoUDLLanguage
6+
7+
8+
log = logging.getLogger("koGoLanguage")
9+
#log.setLevel(logging.DEBUG)
10+
11+
12+
def registerLanguage(registry):
13+
log.debug("Registering language Go")
14+
registry.registerLanguage(KoGoLanguage())
15+
16+
17+
class KoGoLanguage(KoUDLLanguage):
18+
name = "Go"
19+
lexresLangName = "Go"
20+
_reg_desc_ = "%s Language" % name
21+
_reg_contractid_ = "@activestate.com/koLanguage?language=%s;1" % name
22+
_reg_clsid_ = "e97cb498-5c50-4d60-95f4-eaa6cda6e877"
23+
defaultExtension = '.go'
24+
lang_from_udl_family = {"SSL": "Go"}

install.rdf

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0"?>
2+
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3+
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
4+
<Description about="urn:mozilla:install-manifest">
5+
<em:id>[email protected]</em:id>
6+
<em:name>Maya</em:name>
7+
<em:version>1.1.0</em:version>
8+
<em:description>MEL language support for Komodo (UDL-based)</em:description>
9+
<em:creator>Todd Whiteman</em:creator>
10+
<em:homepageURL></em:homepageURL>
11+
<em:type>2</em:type> <!-- type=extension -->
12+
13+
<em:targetApplication> <!-- Komodo IDE -->
14+
<Description>
15+
<em:id>{36E66FA0-F259-11D9-850E-000D935D3368}</em:id>
16+
<em:minVersion>4.1</em:minVersion>
17+
<em:maxVersion>6.*</em:maxVersion>
18+
</Description>
19+
</em:targetApplication>
20+
<em:targetApplication> <!-- Komodo Edit -->
21+
<Description>
22+
<em:id>{b1042fb5-9e9c-11db-b107-000d935d3368}</em:id>
23+
<em:minVersion>4.1</em:minVersion>
24+
<em:maxVersion>6.*</em:maxVersion>
25+
</Description>
26+
</em:targetApplication>
27+
</Description>
28+
</RDF>

templates/All Languages/Go.go

Whitespace-only changes.

templates/Common/Go.go

Whitespace-only changes.

udl/go-mainlex.udl

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# UDL (Komodo language lexing) for the Go language.
2+
3+
language Go
4+
5+
family markup
6+
initial IN_M_DEFAULT
7+
8+
# Need to get into a state with keywords -- use SSL
9+
state IN_M_DEFAULT:
10+
/./ : redo, => IN_SSL_DEFAULT
11+
12+
family ssl # client-side language
13+
14+
# We have to specify the min and max styles we'll be referring to
15+
16+
start_style SSL_DEFAULT
17+
end_style SSL_VARIABLE
18+
19+
# If the language has keywords, specify which style needs to be transformed
20+
21+
keyword_style SSL_IDENTIFIER => SSL_WORD
22+
23+
keywords [
24+
# Keywords
25+
"break",
26+
"default",
27+
"func",
28+
"interface",
29+
"select",
30+
"case",
31+
"defer",
32+
"go",
33+
"map",
34+
"struct",
35+
"chan",
36+
"else",
37+
"goto",
38+
"package",
39+
"switch",
40+
"const",
41+
"fallthrough",
42+
"if",
43+
"range",
44+
"type",
45+
"continue",
46+
"for",
47+
"import",
48+
"return",
49+
"var",
50+
]
51+
52+
# Some info on the styles we're using here
53+
54+
pattern NMSTART = '_a-zA-Z\x80-\xff' # inside cset
55+
pattern NMCHAR = '$NMSTART\d' # inside cset
56+
pattern CS = '\w\d_\x80-\xff' # inside cset
57+
pattern WS = '\s\t\r\n' # inside cset
58+
pattern OP = '!\#%&\(\)\*\+,-\.\/:;<=>\?@\[\]\^\{\}~|'
59+
60+
61+
state IN_SSL_DEFAULT:
62+
63+
# One-line comments end at either end-of-line or '?>'
64+
# This is a hard-wired transition
65+
66+
'//' : paint(upto, SSL_DEFAULT), => IN_SSL_COMMENT_1
67+
68+
'/*' : paint(upto, SSL_DEFAULT), => IN_SSL_COMMENT_2
69+
/\$[$NMSTART][$CS]*/ : paint(upto, SSL_DEFAULT), paint(include, SSL_VARIABLE)
70+
71+
/[$WS]+/ : #stay
72+
73+
'"' : paint(upto, SSL_DEFAULT), => IN_SSL_DSTRING
74+
'\'' : paint(upto, SSL_DEFAULT), => IN_SSL_SSTRING

0 commit comments

Comments
 (0)