Slide 1

Slide 1 text

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

Slide 23

Slide 23 text

WOULDN'T IT BE BETTER TO USE... go env ?

Slide 24

Slide 24 text

$ go env GOARCH="amd64" GOBIN="" GOCHAR="6" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/jfitzgerald/go" GORACE="" GOROOT="/usr/local/Cellar/go/1.3/libexec" GOTOOLDIR="/usr/local/Cellar/go/1.3/libexec/pkg/tool/darwin_amd64" CC="clang" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common" CXX="clang++" CGO_ENABLED="1"

Slide 25

Slide 25 text

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