golab: go local application builder - a web-based golang ide

Related tags

Editor lab
Overview

golab

golab was a Go IDE for Linux.

This project is no longer maintained and might not build due to chganges in dependency projects.

The author (mb0) does use neovim and is quite happy with it, while missing the convenient auto install and test facilities. The ot (operation transformation) package is worth a look and a good start for any collaborative text editing project, there is also a utf-8 based version with js client that can be shared.

golab screenshot

Install

Requires Linux and Go 1.1.

go get github.com/mb0/lab/golab
echo 'yay! magic!'

Basic Usage

golab watches all files under your goroot and gopath (go help gopath). It automatically installs and tests a list of packages specified by the -work flag and prints colored reports to stdout.

Flag -work specifies a path list to the packages you are working on. Multiple paths can be seperated by a colon :. The default ./... uses the current directory and all it child packages.

Example:

cd $GOPATH/src/github.com/mb0
golab -work=../garyburd/go-websocket/websocket:./lab/...

Html5 UI

golab -http starts a web interface for reports and collaborative editing of text files.

Flag -addr=localhost:8910 specifies the http address.

Example:

cd $GOPATH/src
golab -http -addr=:80 -work=github.com/mb0/lab/...

Features:

  • Report view for go errors and test failures with links to sources.
  • Ace editor with gentle highlights and error markers for go, js and css.
  • Document collaboration with operational transformation.
  • External filesystem changes to open documents are merged.
  • godoc Ctrl+Alt+Click on imports in go source files opens the doc view.
  • gofmt Ctrl+Shift+F changes the document (does not save to disk)
  • gocode Ctrl+Space shows gocode completion proposals if installed.

I recommend using the Chrome browser, because the visual feedback seems faster than other browsers.

Feedback

Yes please!

License

golab is BSD licensed, Copyright (c) 2013 Martin Schnabel

Server code attributions

  • Go (c) The Go Authors (BSD License)
  • go-websocket (c) Gary Burd (Apache License 2.0)

Client code and asset attributions

  • require.js (c) The Dojo Foundation (BSD/MIT License)
  • json2.js by Douglas Crockford (public domain)
  • Underscore (c) Jeremy Ashkenas (MIT License)
  • Zepto (c) Thomas Fuchs (MIT License)
  • Backbone (c) Jeremy Ashkenas (MIT License)
  • Ace (c) Ajax.org B.V. (BSD License)
  • Font Awesome by Dave Gandy (SIL, MIT and CC BY 3.0 License)
  • Qunit (c) jQuery Foundation and others (MIT License)

Recycled code attribution // was easier than adapting to golab

  • ot.js (c) Tim Baumann (MIT License)
Issues
  • -work argument seems to be being overridden/ignored

    -work argument seems to be being overridden/ignored

    As it's said above

    [[email protected] IntaLancer]$ golab -http -addr=:8910 -work="/home/asa/dev/Go/"
    2013/06/17 02:31:11 found gocode at: /home/asa/go/bin/gocode
    2013/06/17 02:31:11 starting http://:8910/
    starting lab for: [/home/asa/go/src/pkg /home/asa/gopath/src]
    

    The lab isn't started for the area I specify in -work and within the browser the areas it does look at aren't shown within the document browser window.

    Here shown if I look in the documents tab it just shows the tray icon with the work documents

    capture1

    but then if I manually enter my home directory after #file in the url it shows me some more options but crucially still ignores the one I specified

    capture

    opened by Chownie 7
  • Uninstall

    Uninstall

    How do I uninstall golab. Even when I do not start it, it seems to be using the port I previously started it with and there does not seem to be a running process listening on the port when I use netstat -tulpn

    opened by bennAH 3
  • Missing repository github.com/garyburd/go-websocket

    Missing repository github.com/garyburd/go-websocket

    The respository github.com/garyburd/go-websocket is 404 now

    github.com/garyburd/go-websocket (download)
    Username for 'https://github.com': kokizzu
    Password for 'https://[email protected]': 
    # cd .; git clone https://github.com/garyburd/go-websocket /home/kyz/Dropbox/go/src/github.com/garyburd/go-websocket
    Cloning into '/home/kyz/Dropbox/go/src/github.com/garyburd/go-websocket'...
    remote: Repository not found.
    fatal: repository 'https://github.com/garyburd/go-websocket/' not found
    package github.com/mb0/lab/golab
            imports github.com/garyburd/go-websocket/websocket: exit status 128
    
    opened by kokizzu 7
  • communication

    communication

    this issue is a declaration of intent. even though a simple chat box is the first thing that comes to mind when thinking about a collaborative workspace this or similar features are not going to be part of golab.

    my reasoning is that any effort in that direction will ultimately be too big for this project and in any way lacking the features you are used to. instead use your preferred way of communication like jabber, mumble, voip or carrier pigeons.

    wontfix 
    opened by mb0 0
  • file management

    file management

    it would be useful if golab has the ability to create, rename and delete files. not a hard problem in general the one thing holding me back are interface considerations. but i come more and more to the conclusion that context menus and modal dialogs are the way forward.

    enhancement 
    opened by mb0 2
  • gdb interface

    gdb interface

    looking at the github.com/sirnewton01/godbg project by chris mcgee gbd integration with golab seems feasible.

    i have not often had the need for debugging but in some cases it is very much called for and then often obstructed by the the unwieldy usage of gdb.

    so i want to add this as a long term goal to collect ideas and considerations.

    the first substantial one is that golab needs some kind of lockdown mode. so files and document buffers cannot be changed during the debug run. because golab is a shared and collaborative workspace there needs to be initialization sequence for the lockdown other collaborators can object to.

    that reveals other questions of which aspects of the ui and control are shared.

    enhancement 
    opened by mb0 0
  • suspending computer can result in golab silently failing to update files

    suspending computer can result in golab silently failing to update files

    I tend to suspend my computer rather than shutting it off. I left golab open in my browser, and when I resumed I had to click the reconnect icon in the upper left. I edited a file that I had left open. It seemed to work - console output showed that packages were being rebuilt when I pressed ^s. However, behavior of the modified code did not change.

    I didn't realize what the problem was until I opened the file in a text editor and found that the last changes were ones I made before putting my computer to sleep.


    I think an error should be displayed to the user if any OT transform fails to apply.

    opened by mpictor 1
Owner
Martin Schnabel
Martin Schnabel
A Golang plugin collection for SublimeText 3, providing code completion and other IDE-like features.

GoSublime Intro GoSublime is an IDE-like plugin for Sublime Text 3 mainly, but not limited to, providing integration for most of your Go/Golang develo

null 3.4k Jul 21, 2022
gide is an IDE framework in pure Go, using the GoGi gui. It extensively adopts emacs keybindings.

Gide Gide is a flexible IDE (integrated development environment) framework in pure Go, using the GoGi GUI (for which it serves as a continuous testing

GoKi 116 Aug 4, 2022
Eclipse IDE for the Go programming language:

Project website: http://goclipse.github.io/ As of 2017, Goclipse is no longer actively maintained, see this blog post for more information. If you are

null 843 Jul 29, 2022
The Fyne IDE

DEFyne This repo contains the work-in-progress Fyne IDE. Features Embedded terminal TODO Various types of editor Syntax highlighting Standard run/test

Fyne.io 69 Jul 27, 2022
A modern and intuitive terminal-based text editor

micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals.

Zachary Yedidia 19.9k Aug 6, 2022
A terminal based game that teaches you how to use Vim.

VimMan Learn how to use Vim in its natural environment, the Terminal! About VimMan is terminal program that's a semi editor and a semi game. The purpo

Ozan Kaşıkçı 143 Jul 10, 2022
Vim compiler plugin for Go (golang)

Vim compiler file for Go (golang) Compiles Go files in the background and usefully underlines and reports errors to the QuickFix window: Installation:

Richard Johnson 87 Jun 30, 2022
Data-builder - Data builder with golang

databuilder import "github.com/go-coldbrew/data-builder" Index Variables func Is

Coldbrew 0 Feb 5, 2022
Go-Postgresql-Query-Builder - A query builder for Postgresql in Go

Postgresql Query Builder for Go This query builder aims to make complex queries

Samuel Banks 4 May 24, 2022
Web-based IDE for the Go language

Welcome to godev! The aim of this project is to develop a premier Go language IDE hosted in a web interface. This was inspired by the way that the god

Chris McGee 348 Jul 7, 2022
Web based, Go IDE.

Strukture IDE Beta II Go lang IDE. Built with GopherSauce About project IDE runs as a server and is accessed via web browser. Being a web server, the

The Strukture IDE 347 Jul 29, 2022
A Golang plugin collection for SublimeText 3, providing code completion and other IDE-like features.

GoSublime Intro GoSublime is an IDE-like plugin for Sublime Text 3 mainly, but not limited to, providing integration for most of your Go/Golang develo

null 3.4k Jul 21, 2022
LiteIDE is a simple, open source, cross-platform Go IDE.

LiteIDE X Introduction LiteIDE is a simple, open source, cross-platform Go IDE. Version: X37.3 (support Go modules) Author: visualfc Features Core fea

null 6.9k Aug 4, 2022
gide is an IDE framework in pure Go, using the GoGi gui. It extensively adopts emacs keybindings.

Gide Gide is a flexible IDE (integrated development environment) framework in pure Go, using the GoGi GUI (for which it serves as a continuous testing

GoKi 116 Aug 4, 2022
Eclipse IDE for the Go programming language:

Project website: http://goclipse.github.io/ As of 2017, Goclipse is no longer actively maintained, see this blog post for more information. If you are

null 843 Jul 29, 2022
The in-browser IDE for Go

Go Wasm Go Wasm is a Go development environment with the essentials to write and run code entirely within the browser, using the power of WebAssembly

John Starich 435 Jul 27, 2022
A tool that helps you write code in your favorite IDE: your word processor!

WordIDE Have you ever wondered: How would it feel like to write code in a word processor? Me neither. But after months minutes of planning, I present

unsafecast 35 Jul 21, 2022
Lens - The Kubernetes IDE

Lens - The Kubernetes IDE ("Lens IDE") is a distribution of the OpenLens repository with Team Lens specific customizations released under a traditional EULA.

Lens - The Kubernetes IDE 19.1k Aug 6, 2022
Go Wasm is a in-browser IDE for Go

Go Wasm Go Wasm is a Go development environment with the essentials to write and run code entirely within the browser, using the power of WebAssembly

John Starich 435 Jul 27, 2022
The Fyne IDE

DEFyne This repo contains the work-in-progress Fyne IDE. Features Embedded terminal TODO Various types of editor Syntax highlighting Standard run/test

Fyne.io 69 Jul 27, 2022
Go lang IDE. Built with GopherSauce

IDE runs as a server and is accessed via web browser. Being a web server, the IDE boasts a web (HTML) interface is accessible from any device on your network.Compared to Microsoft VS Code and Eclipse CHE, this IDE is very minimalistic

The Strukture IDE 346 Jul 27, 2022
The open-source collaborative IDE for your databases.

The open-source collaborative IDE for your databases in your browser. About Slashbase is an open-source collaborative IDE for your databases in your b

Slashbase 322 Jul 25, 2022
ide-gen is a tool for development workspace prepare automation by automatic VCS repositories discovery and clone and project generation for supported IDEs.

ide-gen is a tool for development workspace prepare automation by automatic VCS repositories discovery and clone and project generation for supported IDEs.

null 8 May 8, 2022
A command line tool that builds and (re)starts your web application everytime you save a Go or template fileA command line tool that builds and (re)starts your web application everytime you save a Go or template file

# Fresh Fresh is a command line tool that builds and (re)starts your web application everytime you save a Go or template file. If the web framework yo

null 0 Nov 22, 2021
gosq is a parsing engine for a simplicity-focused, template-based SQL query builder for Go.

gosq is a parsing engine for a simplicity-focused, template-based SQL query builder for Go.

Sang-gon Lee 49 Apr 26, 2022
Open-Local is a local disk management system composed of multiple components.

Open-Local is a local disk management system composed of multiple components. With Open-Local, using local storage in Kubernetes will be as simple as centralized storage.

Alibaba 223 Aug 1, 2022
Local Storage is one of HwameiStor components. It will provision the local LVM volume.

Local Storage Module English | Simplified_Chinese Introduction Local Storage is one of modules of HwameiStor which is a cloud native local storage sys

HwameiStor 164 Jul 29, 2022
Help developer to sync between local file and remote apollo portal web since portal web is so messy to use

apollo-synchronizer Help developer to sync between local file and remote apollo portal web since portal web is so messy to use Features download names

yeqown 3 May 16, 2022
A web-based testing platform for WAF (Web Application Firewall)'s correctness

WAFLab ?? WAFLab is a web-based platform for testing WAFs. Live Demo https://waflab.org/ Architecture WAFLab contains 2 parts: Name Description Langua

Microsoft 22 Jul 12, 2022