This is a very pretty editor. That said, I have no freaking idea what I'm supposed to do. I've been messing around with it for around 15 minutes now, and I still don't understand it.
I added a PHP website folder and got no code hinting or anything else beyond "here is the match for your parenthesis" for either PHP or Javascript. This also resulted in my "navigate" tab being filled with SVN meta-files. I am quite confused.
Looking around on the site and some of the comments here, it appears you're using Clojure. Does this IDE only support Clojure?
Think of LT as something more akin to an editor in spirit - you won't see watch windows and all the craziness you often see in "big" IDE's. In that regard, you use it like you use any editor. If you're working with Clojure, ClojureScript, or Javascript code, however, you can evaluate a block inline by pressing Cmd-Enter (or Ctrl-Enter).
Now that we have an experience we plan to stick with more documentation and getting started content will be coming in the next few days. :)
EDIT: I didn't think about SVN, we do filter out Git, but this should just be customizable. Added an issue for it [1].
The first two languages it will support are Javascript and Clojure, but the application will be written in such a way that adding new languages can happen through plugins."
Same here. I really WANT to use this, but I added a PHP project and it doesn't seem to do anything. I can't even Ctrl+F to find something in the file. I'm looking everywhere for hotkeys to do things, but there's no documentation I can find. I was expecting some kind of awesome interface like "Ctrl-Left Arrow" to bring up the left bar, then type in your command and press enter and it does magic and hides the bar. But I guess at this point I'd take a find hot key.
To the creator: I love the idea and got enthusiastic after watching the video. Keep up with the hard work! This is a huge undertaking.
Edit*
OK, so Ctrl+Space enters the command window. From there you can type "Key" and press enter to view the key bindings. I'm not sure why I had to go three layers deep into a google groups conversation to get that though.
The website definitely could use a little more info. I had never heard of lighttable until now. Figuring out what it was and what problems it was solving took longer than it should have, imo. I don't want to watch a video. Give me a breakdown, time is precious!
This is exactly my experience as well. It's not obvious how to get started with it and there is no tutorial that I found explaining how I would go about using it.
At the very least you should record screencasts of you using LT to build LT with you talking people through what you are doing.
I really want to give this a shot, but it needs to be easy to get started.
Besides your feature and bug backlog, I would map out the user journey (i.e. create an experience map) for LT to discover all the pain and frustration points people may have with using LT.
I have completely the opposite opinion. Clojure is not as widely used as some other languages. Python springs to mind; I know it was part of the Kickstarter pledge.
Support for compiled languages would be nice, although I realise this is difficult.
Every time a new version of LT playground gets released I feel like a kid in a candy store, looking for all the cool new stuff Chris and the rest of the team put in :). Awesome work, and it just keeps getting better. To be honest, since there weren't any updates in a while, I started having doubts about whether they'll be able to deliver, but I'm glad to see that the project is alive and well.
Judging by the comments I see that there's a lot of people who haven't yet heard of Light Table, which surprised me a bit because posts about LT frequently hit the front page of HN. If you're one of those people, you should take a look at their kickstarter page: http://www.kickstarter.com/projects/306316578/light-table
Finally, while there's a lot of people bemoaning the fact that some more popular languages (than Clojure) aren't supported out of the box, I, for one, am glad that somebody's developing such an awesome tool with Clojure in mind.
The current version of LT seems very different from what I see on that Kickstarter page.
I'm going to have to join the people who simply don't understand how to use this. It doesn't help that it seems heavily biased towards Clojure and I have no interesting Clojure codebases to play around with.
It is, but that's because we have to have a solid editing experience for the "simple" stuff before we can do the more interesting things. What good is it to have these awesome function oriented editors when you can't even modify a file efficiently? :)
We use tabs as a simple way of wrapping up a context. In the future they will include all sorts of neat things - and they aren't limited in any way. If we want, we can drop an infinite canvas into one, or a codex (a document made of many parts of different files). So yes, right now we wanted something beautiful and efficient to use while live coding, but as I said in my bit about 0.4.0, the really interesting semantic-oriented stuff (functions and the like) is what's next!
Seconded. If you're going to have any success in converting people who write Clojure code away from Emacs, you're going to need to copy its good parts.
"If you're going to have any success in converting people who write Clojure code away from Emacs"
I'd say it would already be great if they could bring newcomers to Clojure: people who are rebutted because of Emacs.
As to me I'd need, at least: ace-jump-mode, paredit, the powerful macro system and the ability to create my own rules for highlighting / overlaying text as easily as from Emacs.
Short of that I'll keep using Emacs. Now what I think: it's probably easier to add LT's "instarepl" to Emacs than to add one million lines of elisp code to LT so...
I fully expect someone to hack a "Clojure instarepl" Emacs mode one of these days.
I for one am glad you're nailing the editor part first. Because if this is ever to replace my usage of emacs, you have to at least get that part right. This hasn't yet replaced my emacs, but i'm more optimistic now. Some editing features missing are paredit, viewing source code of a clojure core function. (Alt-. in emacs.) When you eval something and it never terminates, you need a way to kill that thread. For IDE like features, #1 on my list is refactoring clojure code quickly, e.g. renaming symbols. As someone who's anal about prioritizing time, I don't ever customize the themes, etc, I just want killer useful features that save me time and "just work".
I'd absolutely love to see ruby in Light Table, how are plans looking for this? If there was a kickstarter for adding ruby I'd pony up in a flash. I realise manpower is probably going to be the main issue though...
Manpower is an issue, but we've gotten a lot of requests for Ruby in the future. When and where Ruby support will come is still unknown, but do know that we hear you! :)
I think this would be the right place to bring this up: Is language support backed in or can everyone write a plug-in for his language? Implementing highlighting, completion and repl for all the different languages users could want seems like an enormous task. At the same time this is where Emacs shines: supporting a new language rudimentary is easy to do, adding more advanced support isn't too hard either. Will users be able to define new language modes?
Would be nice if font size changed by control+scrolling mouse wheel, most code editors do that. I can't imagine really needing (or wanting) to evaluate things in realtime (like the videos demonstrate) unless I was writing cryptic, mind-numbing algorithms all day every day. I like the idea in one of your videos, every function can have its own little window, but I wouldn't want that to create new files for me automatically in the background and it would have to be more useful than a straightforward "split window" editor function, which is already something I rarely use. The colors are cool but not as cool as my hacked Crunchbang+Geany colors. Maybe one day Light Table will be like a more graphical, user-friendly Emacs? I don't know. The videos are really eye-catching but realistically I can't imagine why I'd use Light Table. I realize there's already a lot of interest in this, but I would like to see more videos showing how this is actually more useful than Gedit or whatever.
What going back over the old demo and looking at this post did was remind me of how nice jsfiddle is when it isn't insanely slow, which then led me to wonder how hard it would be to create something like jsfiddle that lived on top of github would be, or something like jsfiddle that lived inside my favorite editor, or just in a static html page on my desktop.
If you get frustrated with jsfiddle, try out http://cssdeck.com/labs It's nominally oriented toward CSS and all the CSS preprocessors, but it handles JS just fine (and CoffeeScript, too!). I like its layout a lot more than jsfiddle -- it's more aesthetically appealing to me. It also features the ability to do codecasts. I can't recall if jsfiddle has that, but it's a nice feature for demonstrating code to someone.
I used to be a huge proponent of JSFiddle but it's got so slow and temperamental recently that I've started moving over to codepen.io. It gives instant results (every change is evaluated in real time), supports LESS and SASS on the CSS side, and CoffeeScript on the scripting side. And it's got a nicer UI, giving more space to the output pane and allowing quick switching/expanding of the code panes
Small bug I found: When I change the editor theme to something other than `default`, the next time I start up the editor, the theme isn't loaded. Instead, I just get some light grey text on a dark grey background.
UX Annoyance: When clicking on an exception, there's no visual indication that it's been clicked on. I found that Shift+Tabbing brings you back to the editor pane (other than using the mouse).
A couple more things that could just be me being stupid. When I try to eval using Ctrl+Shift+Enter, nothing happens. Instead, I have to eval each line one-by-one. I tried creating a new key binding, but couldn't figure out how to delimit my keys to allow modifiers. I also can't figure out how to pop up documentation or data flow as demo'd in the original light table (this is my first time using any version of light table). I tried `(doc <foo>)`, but it just evaluates to `nil`.
Anyways, hope these comments might be useful in terms of my user experience as a first time user.
Not sure about the ctrl+shift+enter not working, I'll see if I can come up with a repro. Keys are delimited with -, so Ctrl-Shift-Enter
For (doc ..) take a look at the bottom console, click the little arrow which should be blue when there's new content in there. All prints go to that console.
the little arrow is white on a grey button. If I click it opens up something grey that it's empty. I cannot write or anything it's just a grey box.. :s
It looks like the same method I'm using in emacs/ido, which is to turn "la/clj" into
"(l).*?(a).*?(/).*?(c).*?(l).*?(j).*?"
I've found this technique gives inferior results to whatever SublimeText is doing. For example, in your hits with "langs", such as "lt/objs/langs/js.cljs" I think "lt/objs/langs/js.cljs" is more intuitive than the result you give of "lt/objs/langs/js.cljs". (Sorry for the hard to read italics)
For another example, on a search of "completions" I think your technique will highlight "hacks-completions" as "hacks-completions" instead of "hacks-completions".
Does anyone know if there's an easy way to modify the regex (not LightTable) and get the user-friendly results of Sublime Text?
If you don't want to treat slashes specially and want to allow "ab" to match "aqqqb" then I don't think you can do it without creating a giant regex. You can go for a modified longest common subsequence algorithm.
Edit: here's how you can do it:
// gives one point for each letter matched
// plus an extra point if the next letter is also a match
let rec scorematch = function
| true::true::r -> 2 + scorematch (true::r)
| true::r -> 1 + scorematch r
| false::r -> scorematch r
| [] -> 0
// find the match with best score
let rec search xs ys =
match (xs,ys) with
| (x::xr, y::yr) ->
let matches = [false::search xr ys; false::search xs yr]
let matches = if x=y then (true::search xr yr)::matches else matches
matches |> List.maxBy scorematch
| _,ys -> List.map (fun _ -> false) ys
let underline xs ys = search (List.ofSeq xs) (List.ofSeq ys)
|> List.map (fun b -> if b then "-" else " ")
|> String.Concat
for x in ["foobarbaz"; "foobaXrbaz"; "foobXaXrbaz"; "foobXaXrbazr"] do
Console.WriteLine x
Console.WriteLine (underline "bar" x)
All files in Clojure require a namespace form at the top:
(ns foo.bar)
Since you don't have one, clojure.core isn't available and it freaks out. I'll look into setting the default namespace of file so that it's a little nicer for newcomers :)
It's not a problem when using 'clj' from the command line.
Here are some other issues I ran into (FWIW):
- println works, but print doesn't.
- I was expecting cmd+A and then cmd+enter to evaluate everything.
- Why are there (seemingly) no shortcuts for the command bar?
- Activating 'Make current editor and instarepl' twice in a row, clears all the text in the editor… that's weird
- The text cursor got confused at some point
So how do you see these inline results? I'm told cmd-enter or cmd-shift-enter will evaluate code; on Windows 7, for me, none of ctrl-enter, alt-enter, or windows-enter seem to do anything. ctrl-shift-enter in a .js file creates a checkmark next to my first line, 2+3; (though not the lines I'd written after it). Trying to create a .clj or .cljs file, by 'Create a new file' and then 'Save file', it remains as 'untitled', and ctrl-shift-enter doesn't seem to do anything.
Anyone else on Windows at the moment with tips?
(The 'bindings' command lists things like Cmd Enter; since it lists Ctrl for other keybindings, I'm guessing that's meant to mean Alt.)
Looks like Ctrl+Enter and Ctrl+Shift+Enter start to work after saving the file with a recognised extension. You'll have to use the mouse, as pressing Enter cancels, despite the 'Save' button being highlighted as if it were the default.
Unfortunately, even just (defn id [x] x) gets me "java.lang.RuntimeException: Unable to resolve symbol: defn".
I've been playing with this editor, except it seems Syntax Highlighting doesn't work (Linux x64). Which is kind of a killing point for me. Does anybody know of a forum / mailing list I can get on to figure out configuration and such? I have heard so much about this IDE, but it kills me that it doesn't seem to be working properly.
I love these updates, the tool is looking more awesome every day.
I'm wondering if there's a roadmap for Light Table's release, specifically if there's a point where the code will be available? I have a programming language in progress and I'm interested in potentially hacking LT to support the language. It seems like it would be a good fit.
I'm a web designer (PSD -> WordPress) and I started learning programming around the time Light Table was funded on KickStarter. It's been nice to see the project grow with my programming skills. Although I still don't feel like a decent programmer, it's nice to see what my small $15 investment has helped create. :)
If you're going to make it vi-like, please put some effort into introducing the modal-concept, and lots of help for new users. There are reasons that many people avoid vi. You may not think that you need to make it a teaching tool, but everything else about lighttable makes it well-suited as a teaching tool.
This looks great! It's getting more and more usable.
It would be nice if, when a computation is running in the instarepl, the computation indicator would display inline e.g. with the previous result - perhaps graying the result out?
How would I go about implementing this myself? Or is LightTable reflection not yet publicly available?
It's not going to be more useful to a Java developer than Eclipse is currently, but that's because we're going after a very different end goal. FWIW, all our work is done in LT and it is far more efficient than I used to be with Vim.
You gotta be kidding on the sideways text as an important part of the UI. Also adding the vim integration is a waste of time as long as you don't have buffers, registers, ranges and can't parse my .vimrc nor use my modules you might as well not do it.
Well parsing the vimrc might be too much as it would require a full compatibility layer and I highly doubt it'll ever happen. Using vanilla lighttable config wouldn't bother me, even if I have to rewrite most of it. It's a different editor after all.
But yeah, all the "vim" layers around are basically just the bindings, in normal and insert mode which just half of vim. If we can't change buffers with :b, :A or anything, it's just painful as a vim user. Same goes for what you listed.
I have great respect for the guys at code mirror, it's just that I view it as just a quick hack to add vim bindings that a real vim like solution. If LightTable advertises about being vim friendly, there should be an implementation that keeps the vim workflow, not just small bindings.
As a vim user, I'll just skip the "vim" mode if it's done like that (and sadly I'll stick to Vim even if I really crave for a modern "vim" with a decent scripting language).
As a game dev guy, I'm looking at the two new Open game platforms, Ouya and GameStick, and thinking that LT might be a great way to get kids into coding.
Getting kids to code games is so much easier than any other project, even if the game is extremely simple.
Does anyone know what Light Table is programmed in? It seems to be cross platform, how does it achieve that? I assume some kind of mix between Clojure and using browser technology as a UI, but does anyone know specifics?
Small drag and drop problem.... On OSX I can drag the divisor for files/texteditor OVER the option of tabs (left options)... if I drop the editor there I cannot resize the view anymore and have to restart the program.
What is the project direction in relation to complex JS apps?
i.e.: How do you guys expect the instarepl idea to be used in apps made of serveral node.js modules/libs or several files meant to be loaded together via RequireJS ?
There's something weird going on when using the trackpad on OS X. My trackpad is set to "natural scrolling", but if I scroll really fast the editor seems to scroll in the other direction.
in the command bar, type "skin" and press enter. You can change it to a light skin. :) You can also change the editor theme, by using the "change editor theme" command.
It depends on the monitor. Some cheaper displays don't have the contrast to make light on dark work; also color bleeding...
Given a non-IPS display, my older eyes prefer dark on light, even if I think light on dark looks better. Also, light on dark is almost impossible to project for demos and presentations!
But I'm sure grandparent is just referring to the fact that light table looks different enough from the workplace norm to make it standout and his activities more known (but even visual studio has a dark mode these days).
This is OSX's gatekeeper going crazy because our codesign included the icns file (which then got compressed and no longer verifies). I'm uploading a new package right now. As a workaround you can go to security in system settings, set it to allow anything to run, open LightTable.app, close it and then re-enable the old gatekeeper setting. LT will open fine thereafter. Or you can just redownload in about 2 minutes.
it actually uses neither, and doesn't rely on any specific implementation. You could fairly easily wrap a swank client to make it work, or an nrepl one (which is something we'll probably get to soon). One of the nice things about the way we architected it is that there are very few assumptions when it comes to "clients" and that will allow a ton of freedom in using established stuff when it exists.
I added a PHP website folder and got no code hinting or anything else beyond "here is the match for your parenthesis" for either PHP or Javascript. This also resulted in my "navigate" tab being filled with SVN meta-files. I am quite confused.
Looking around on the site and some of the comments here, it appears you're using Clojure. Does this IDE only support Clojure?