A new Light Table experience
chris-granger.com
chris-granger.com
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?
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].
[1]: https://github.com/Kodowa/Light-Table-Playground/issues/266
I've opened a python file, typed 1 + 1 and hit Ctrl+Enter and it doesn't seem to do anything.
I'm doing my best to bring my IDE demo up to speed, it's just a month left now but still so much to do... >.<
ICSE 2013 http://2013.icse-conferences.org/
http://www.kickstarter.com/projects/306316578/light-table
"What languages will it support?
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."
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.
Why not spending a bit of time releasing a simple tutorial, showcasing the differences with normal editors ?
Right now it's really too "metaphysic".
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.
Support for compiled languages would be nice, although I realise this is difficult.
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.
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.
I'll download and play with it a bit anyway, to see what i get from it.
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!
Speaking of which, are Emacs keybindings coming any time soon?
Nice redesign though.
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.
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.
Thanks for the report! :)
[1]: https://github.com/Kodowa/Light-Table-Playground/issues/281
http://www.chris-granger.com/images/030/navigate.png
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?
.*?(/).*?
and leave the rest alone?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)
For search term "bar" this outputs: foobarbaz
---
foobaXrbaz
-- -
foobXaXrbaz
- - -
foobXaXrbazr
-- -
You'll want to memoize this or apply dynamic programming.Oh boy this one we're going to hear for a long time ain't we!?
I code, Robert makes sure I'm just coding.
E.g. if I do Cmd+Enter on a definition, I get this:
clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to
resolve symbol: defn in this context, compiling:…
If I click 'Make current editor and instarepl' I get errors like this: clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to
resolve symbol: subs in this context, compiling:(NO_SOURCE_PATH:9)
It's all rather confusing. Maybe there's a manual somewhere I should read, but I couldn't find it. (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
But I guess it's an alpha version. :)
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.)
Unfortunately, even just (defn id [x] x) gets me "java.lang.RuntimeException: Unable to resolve symbol: defn".
EDIT: Restarting twice seemed to fix the problem.
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.
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?
Agreed. I closed the tab as soon as I saw that.
I don't think he ever actually says it is. Also, "... if your preference is for something else, you have complete freedom when writing your own skin."
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).
Is there any plan to address that in the future ?
Getting kids to code games is so much easier than any other project, even if the game is extremely simple.
Anyone care to comment?
Aside from that: neat! :)
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 ?
EDIT: tracking in this issue: https://github.com/Kodowa/Light-Table-Playground/issues/271
Thanks very much for Light Table! I'm loving it.
[1]: https://github.com/Kodowa/Light-Table-Playground/issues
Could you explain that?
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).
"LightTable.app" is damaged and can't be opened.
I'm running OSX 10.8.2.
Anyone else having the same problem?
Are there any dependancies I need to have installed before running the app?
<Error> <Code>AccessDenied</Code> <Message>Access Denied</Message> ...
Update: OK, it works now.
Would love to switch to light table, but I need paredit. Can't switch without paredit.
Seems to me like it's becoming emacs (which is a good thing, you should poach more ideas from it).
I would be interested in experimenting with it for Common Lisp, you see. :)
BUT could do with some more documentation.