BUILDING AN EDITOR
PLUGIN PACKAGE FOR GO
Joe Fitzgerald, DIRECTOR, CLOUD FOUNDRY
SERVICES @ PIVOTAL
Slide 2
Slide 2 text
MEET JOE
▸ I work @ (http://pivotal.io)
▸ I sell and deliver professional services for
▸ You can find me at:
▸ : @joefitzgerald
▸ : @joefitzgerald
▸ : [email protected]
Slide 3
Slide 3 text
AND...
SINCE MARCH
I'VE BEEN WORKING ON A GO PACKAGE FOR ATOM
Slide 4
Slide 4 text
I KNOW WHAT YOU ARE THINKING...
Slide 5
Slide 5 text
YOU ARE CRAZY
BECAUSE I :
Vim, Emacs, Sublime, IntelliJ, Eclipse, LiteIDE... Acme (?)
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
YOU'RE RIGHT
I'M NOT HERE TO CHANGE YOUR MIND
Slide 8
Slide 8 text
SO WHY'D YOU DO IT?
Slide 9
Slide 9 text
IT WAS MARCH
AND IT SOUNDED LIKE A GOOD IDEA (?)
Slide 10
Slide 10 text
MEET ATOM
▸ Built By:
▸ Find It At: atom.io
▸ License: MIT – Yes, It's Open Source!
Slide 11
Slide 11 text
BUT...
+
= SLOW, RIGHT?
Slide 12
Slide 12 text
REACT
THE DEFAULT EDITOR VIEW
AS OF JULY 23, 2014
= Much Faster
Slide 13
Slide 13 text
I CREATED A PACKAGE
IT'S CALLED: go-plus
Slide 14
Slide 14 text
RIGHT NOW IT SUPPORTS:
▸ Formatting source using gofmt
▸ Formatting and managing imports using goimports
▸ Code quality inspection using go vet
▸ Linting using golint
▸ Syntax checking using go build and go test
▸ Display of test coverage using go test -coverprofile
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
A TOUR OF
VERSION 1:
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
I MADE SOME ROOKIE MISTAKES
(BUT I'M NOT SO SURE OTHERS HAVE REALIZED IT)
(BECAUSE THESE SEEM LIKE COMMON EDITOR MISTAKES)
Slide 22
Slide 22 text
WHY SHOULD SOMEONE HAVE TO CONFIGURE THE PATH TO TOOLS?
LIKE gofmt
GOBIN=""
+
GOEXE=""
+
GOPATH="/Users/jfitzgerald/go"
+
GOROOT="/usr/local/Cellar/go/1.3/libexec"
+
GOTOOLDIR="/usr/local/Cellar/go/1.3/libexec/pkg/tool/darwin_amd64"
IS EVERYTHING YOU NEED TO FIND GO TOOLS
(PLUS $PATH / %Path%)
Slide 26
Slide 26 text
SO WE JUST NEED TO FIND
go
Slide 27
Slide 27 text
WHERE IS GO, YOU ASK?
1. Start With $PATH / %PATH% Segments, Then:
2. OSX: /usr/local/go/bin (Package Installer)
3. OSX: /usr/local/bin (Homebrew)
4. Windows: C:\Go\bin (Package Installer)
Slide 28
Slide 28 text
SO NOW WE CAN FIND:
1. go
2. godoc
3. gofmt
4. vet
5. cover
Slide 29
Slide 29 text
BUT WHAT ABOUT:
1. goimports
2. golint
3. oracle
4. And Other $GOPATH / %GOPATH% Bin Executables?
They aren't in GOTOOLDIR or GOROOT...
Slide 30
Slide 30 text
THEY BE HERE, SOMEWHERE:
1. Start With $PATH / %PATH% Segments, Then:
2. Look In $GOBIN / %GOBIN%
3. Look In $GOPATH / %GOPATH% Segments In The bin Directory
Slide 31
Slide 31 text
AND THEN IF YOU CAN'T FIND THEM, OFFER TO:
go get -u
THE REQUIRED TOOLS!
(THERE IS NO MAGIC, THIS CAN BE DISABLED)
Slide 32
Slide 32 text
THIS REVELATION LED TO go-plus V2
(PLUS A LOAD OF OTHER INTERNAL AWESOMENESS)
TO PREPARE FOR THE ADDITION OF:
Slide 33
Slide 33 text
AUTOCOMPLETE
(POWERED BY gocode)
Slide 34
Slide 34 text
ORACLE
(POWERED BY oracle) ;)
Slide 35
Slide 35 text
GO TO DEFINITION
(POWERED BY godef)
Slide 36
Slide 36 text
GO TO DOCUMENTATION
(POWERED BY godoc)
Slide 37
Slide 37 text
AND ctags SUPPORT
(POWERED BY gotags)
Slide 38
Slide 38 text
ALSO
THE PACKAGE IS WRITTEN IN COFFEESCRIPT
(Yeah, I Made A Few Mistakes As I Learned CoffeeScript)
IS THIS AS IRONIC TO YOU AS IT IS TO ME?
Slide 39
Slide 39 text
AND ON THAT BOMBSHELL...
Goodnight
GOT ANY QUESTIONS?
TWITTER: @JOEFITZGERALD