Text editor for coding Julia: Atom vs Light Table vs Bracket

2,274 views
Skip to first unread message

Daniel Carrera

unread,
Nov 28, 2014, 11:39:43 AM11/28/14
to julia...@googlegroups.com
Hi everyone,

Can anyone here comment or share opinions on the newer text editors -- Atom, Light Table, Bracket -- that seem to be trying to supplant Sublime Text? A lot of the information you find online seems to be geared toward web development, but my interest is programming with Julia (and Fortran). That's why I asking for opinions on the Julia mailing list.

I currently use Sublime Text, and I am very happy with it. But I am curious about the others, since they seem to intentionally copy the most important features from Sublime Text. If you have experience with these editors and can tell me why you like one better than another, I would love to hear it.

Cheers,
Daniel.

Pileas

unread,
Nov 28, 2014, 11:54:33 AM11/28/14
to julia...@googlegroups.com
I use Atom. It resembles so much with Sublime (maybe the same people work there).

I tried Light Table. It is faster when it opens (this is a problem that Atom has so far: it is a little slow), but I find Atom easier to work with. Easy to install packages and themes. Supports many languages syntax (Fortran and Julia included).

I don't know about Bracket.

Pileas

unread,
Nov 28, 2014, 1:35:15 PM11/28/14
to julia...@googlegroups.com
Update: I am trying Brackets now, and I have to say I am very pleased with it. Seems more mature. If only I could open the terminal with it!

Jason Merrill

unread,
Nov 28, 2014, 2:08:13 PM11/28/14
to julia...@googlegroups.com
On Friday, November 28, 2014 10:54:33 AM UTC-6, Pileas wrote:
I use Atom. It resembles so much with Sublime (maybe the same people work there).

I tried Light Table. It is faster when it opens (this is a problem that Atom has so far: it is a little slow), but I find Atom easier to work with.

Sublime is really impressively fast. I wouldn't underestimate how nice that is when working on a large project. I used Textmate for a long time, and when I started working on larger projects, the beach ball showing up at random times started to feel like death by 1000 papercuts.

Zenna Tavares

unread,
Nov 28, 2014, 2:46:02 PM11/28/14
to julia...@googlegroups.com
Between LightTable and Sublime, Sublime is the superior text editor.  I use LightTable when I want to develop code interactively, and the Juno plugin works pretty well in this regard.  I believe there may be a similar plugin for Sublime but its complex installation procedure just put me off.

K Leo

unread,
Nov 29, 2014, 1:39:54 AM11/29/14
to julia...@googlegroups.com
Just tried Atom. It appears very good, but I am not sure what
advantages it has over Kate which is what I have been using?

Daniel Carrera

unread,
Nov 29, 2014, 4:14:17 AM11/29/14
to julia...@googlegroups.com
Hi Pileas,

Ok. So I installed Atom and I have now spent several hours playing with it. I am impressed, and I like it. I did hit an issue with font sizes which took a lot of effort to resolve. But moving past that, I think Atom will replace Sublime Text on my desktop. It has a similar look & feel (especially for me: multiple cursors and minimap) but I find Atom easier to configure, and I find it easier to discover new features. Atom already gives me several features that I do not currently have with Sublime:

1) Syntax highlighting for Julia and both modern Fortran and old Fortran. I actually need both. I use two different codes for my simulations. One is in F95 and the other is F77. Sublime gives me ZERO syntax highlighting for F77, which actually when I need it the most because F77 is quite difficult to read.

2) Spell checking, including spell check inside LaTeX files. I'm sure there is a way to get this in Sublime, but the fact that I do not yet have it at least indicates that the feature was less discoverable in Sublime than in Atom.


So I'm happy. I am still exploring Atom, but I think it has already replaced Sublime for me.

Cheers,
Daniel.


--
When an engineer says that something can't be done, it's a code phrase that means it's not fun to do.

Daniel Carrera

unread,
Nov 29, 2014, 4:26:06 AM11/29/14
to julia...@googlegroups.com
Kate already has a lot of features, so maybe for you there is no reason to switch. Personally, for me, the main feature I would miss in Kate is multiple cursors. With Sublime Text (and Atom, LT, and Brackets) you can have multiple cursors so you can edit multiple lines of text at the same time. In my code, I often have several lines of text that look similar. For example:

    const r_sun     = 695500.0KiloMeter; export r_sun    
    const r_jupiter =  69173.0KiloMeter; export r_jupiter
    const r_saturn  =  57316.0KiloMeter; export r_saturn 
    const r_neptune =  24553.0KiloMeter; export r_neptune
    const r_uranus  =  25266.0KiloMeter; export r_uranus 
    const r_earth   =   6367.4KiloMeter; export r_earth  
    const r_venus   =   6051.9KiloMeter; export r_venus  
    const r_mars    =   3388.5KiloMeter; export r_mars   
    const r_mercury =   2439.7KiloMeter; export r_mercury
    const r_pluto   =   1184.0KiloMeter; export r_pluto  
    const r_ceres   =    476.0KiloMeter; export r_ceres  
    const r_vesta   =    265.0KiloMeter; export r_vesta  


This is the physical radius of various solar system bodies. Suppose I also want to have the mass of these bodies (m_sun, m_jupiter, etc...). Then I have to replace "r_" with "m_" and KiloMeter with KiloGram in every line, and then change the numbers. I find it convenient to put the cursor on the first line, press Shift+Alt+Down eleven times and have 12 cursors going at the same time.

I know that this is not a critical feature, but it is the feature I would miss the most if I moved to Kate. So it might be the best answer to your question.

Cheers,
Daniel.



Hans W Borchers

unread,
Nov 29, 2014, 7:59:31 AM11/29/14
to julia...@googlegroups.com
One thing I need quite often is the "block selection mode".
For instance adding the same characters in front of several lines, or deleting or adding commas in all lines of a data table.
I know how to do this with TextMate or Kate, but generally have difficulties finding it in a new editor.
For example how to do this with Atom, Sublime, or Brackets? Thanks.

J Luis

unread,
Nov 29, 2014, 8:32:31 AM11/29/14
to julia...@googlegroups.com
I once installed Atom but when I realized that it was eating me 200 Mb of RAM without even a file loaded I uninstalled it right away. I'm not buying  (expensive) laptop RAM to be wasted that way.

Pileas

unread,
Nov 29, 2014, 9:27:00 AM11/29/14
to julia...@googlegroups.com
Yes Daniel. I agree with you. I use Atom as my main editor and I am quite happy.

With each release it becomes better and I am sure that it will approach Sublime's speed once it matures a little bit more. I am sure that people who worked with Sublime Text work in Atom now. And it appears to me that there are no new releases for Sublime (as far as I know).

Best,
"Pileas"

Mike Innes

unread,
Nov 29, 2014, 10:30:05 AM11/29/14
to julia...@googlegroups.com
One good reason to use Light Table is that it has pretty good support for using Julia interactively. Things like eval'ing the current code block in the editor, highlighting and linking to lines that cause errors, support for eval in modules, inline Gadfly plots etc. See here if you're interested. Plus, no one else supports highlighting for string interpolation, so far as I know ;)

The downside of LT is that it really lacks the maturity and familiarity and Sublime, Atom and friends. If you're used to really powerful text editing features you'll have to relearn some tools and forgo others. For some the tradeoff here is worthwhile, for some not; personally, going without it (and back to reloading modules in the terminal) feels a lot like banging rocks together, but YMMV.

It's a shame the Atom developers didn't opt to use CodeMirror – for one thing it supports files > 2mb just fine, and for another we could have implemented Juno on top of it. But there you go.

Massive disclaimer: I wrote Julia's LT integration so I'm not exactly unbiased.

(PS Hans: You can do block selection in LT by dragging with the alt key)

Daniel Carrera

unread,
Nov 29, 2014, 12:37:52 PM11/29/14
to julia...@googlegroups.com
On 29 November 2014 at 15:27, Pileas <phoebus....@gmail.com> wrote:
I am sure that people who worked with Sublime Text work in Atom now. And it appears to me that there are no new releases for Sublime (as far as I know).

I am pretty sure that that is not true. Sublime Text is a one-man project. It is written by Jon Skinner. Atom is made by GitHub, and one of its core features is supposed to be integration with GitHub. So no, they are not the same developers.

Development of Sublime has slowed down, but it has not stopped, and the project is not dead. Jon has been working on other tasks in recent months. I would also argue that Sublime is pretty mature as it is, so a slow-down is not too unreasonable. Or maybe Jon is just bored and wants to take a break.

Cheers,
Daniel.


Daniel Carrera

unread,
Nov 29, 2014, 12:46:16 PM11/29/14
to julia...@googlegroups.com
I had a look at LT. It looks like a very powerful editor, but with a steep learning curve. I had a hard time figuring out how to configure it. Maybe I'm just too dumb for LT. I liked Sublime a lot. Although everything is done in config files, the features in the file are very "discoverable". That is actually one place where Sublime still beats Atom. I would say that editor features are more discoverable in Atom, but editor settings are more discoverable in Sublime. And both are more discoverable than LT, though LT feels like it could be more powerful if I could learn it.

Cheers,
Daniel.

Petr Krysl

unread,
Nov 29, 2014, 12:48:25 PM11/29/14
to julia...@googlegroups.com
Hi Mike,

I installed LT and ran it on my toy Julia project. I tried to make the connection to Julia, but I couldn't find it on the list.  What do I do?

Thanks,

Petr

Mike Innes

unread,
Nov 29, 2014, 1:06:59 PM11/29/14
to julia...@googlegroups.com
Daniel: I think your hunch is probably correct; LT's internal architecture is very powerful and very flexible, but that comes at a cost of complexity which (for now at least) isn't hidden from the end user as well as it could be. It's interesting to hear that perspective on Sublime vs. Atom – I'll have to take a look at how configuration is handled in both.

Petr: You shouldn't need to connect to Julia explicitly, just `C-Enter` on something you want to evaluate and a client will boot up for you. If you've got the Juno plugin installed, a Julia client will boot up for you at start up which speeds things along. If you want to test this just try `C-N` for a new file and evaluate `2+2` or something simple like that, but opening up an existing file should work just as well. I'm working on a mini tutorial that should soften the learning curve here a bit.

Jeff Waller

unread,
Nov 29, 2014, 1:19:54 PM11/29/14
to julia...@googlegroups.com


    const r_sun     = 695500.0KiloMeter; export r_sun    
    const r_jupiter =  69173.0KiloMeter; export r_jupiter
    const r_saturn  =  57316.0KiloMeter; export r_saturn 

....

I have a semi-related question.  Why this way?  Why not read these values from a database
at startup or at least a file of HDF5 or JSON. Do you find yourself cutting-and pasting
constants all over the place?  

Petr Krysl

unread,
Nov 29, 2014, 1:33:01 PM11/29/14
to julia...@googlegroups.com
Mike,

Thanks for getting back to me.  I installed the Juno plug-in, but selecting 2+2 and hitting control-return does nothing. In fact the console does not allow for any input to be entered and does not show anything else but some errors as shown in the attached.

P
ScreenHunter_58 Nov. 29 10.30.jpg

Mike Innes

unread,
Nov 29, 2014, 1:42:18 PM11/29/14
to julia...@googlegroups.com
The errors there are from installing the plugins (a known issue with LT) – I recommend restarting after doing that. To clarify, the console isn't the input – the file itself is. So you should be able to select `2+2` within one of those .jl files and have `4` come up. Happy to help if you see further problems, but it might be a good idea to open an issue or start a new thread here.

Daniel Carrera

unread,
Nov 29, 2014, 1:47:16 PM11/29/14
to julia...@googlegroups.com
What is the benefit of an HDF5 or JSON file versus just having a module with the constants I want? The module is loaded in my ~/.juliarc.jl file so I have it automatically when I start the REPL. To answer your other question: No, I don't find myself copy-pasting constants a lot. This is just the first example that came to mind. I do often like to line up my code vertically because I feel that it helps me catch errors. Here are other code samples:

Ax = - (1-u)*(x+u) / rho1^3  -  u*(x+u-1) / rho2^3
Ay = - (1-u) * y   / rho1^3  -  u*y       / rho2^3
Az = - (1-u) * z   / rho1^3  -  u*z       / rho2^3

Or

CJ = method == 1 ? CJ_method_1 : CJ_method_2
df = method == 1 ? df_method_1 : df_method_2
Ht = method == 1 ? Ht_method_1 : Ht_method_2


Of course, these examples are a lot less transparent than my first example. But it doesn't matter. I have always been happier with code where all the columns line up nicely. Another use of multiple cursors is to select a bit of text and pressing Ctrl+D to select additional instances of that code.


Cheers,
Daniel.


Daniel Carrera

unread,
Nov 29, 2014, 1:51:27 PM11/29/14
to julia...@googlegroups.com
Atom can do this too, in its own way. If you add the "Script" package, you can select any block of code in Julia (or Python, or whatever) and press Ctrl+Shift+B to run it. The main difference that I can see is that LT shows you the answer in a pop-up while Atom shows the answer in a little split window at the bottom of the screen.

Cheers,
Daniel.

Petr Krysl

unread,
Nov 29, 2014, 2:05:59 PM11/29/14
to julia...@googlegroups.com
Sorry, I figured it out. Julia was not in the path (which I found out upon opening a new window).

All I can say is, wow! LT with Juno is FANTASTIC.  It does all that I wanted to play with Julia.  And probably much more!

Thanks a lot!

Petr

PS: it certainly does things differently.  I will have to dig deep for instance to figure out how to find out the command names do certain things to tweak my key bindings (I use voice recognition to drive my PC, and the key bindings are used to execute commands that I say).  So I can see how the learning curve can seem pretty steep!

Mike Innes

unread,
Nov 29, 2014, 3:39:54 PM11/29/14
to julia...@googlegroups.com
Glad you like it! I'm always happy to help if you need to customise anything in particular about LT.

Petr Krysl

unread,
Nov 29, 2014, 3:50:01 PM11/29/14
to julia...@googlegroups.com
Gee, that's awfully nice of you!

So here goes: From the list of commands that I can pick from in the window on the right, how do I find out what it's called in the user.keymap file?
For instance, one command says "Smart indent line (s)".  What would it be here to get a key binding?

[:editor "ctrl-3" :editor.???]

Thanks!

Petr

Mike Innes

unread,
Nov 29, 2014, 4:02:13 PM11/29/14
to julia...@googlegroups.com
The way to find this is to start typing part of the name of the command, e.g.

[:editor "ctrl-3" smart|]

It should fuzzy search through the available commands and give you an autocomplete prompt with the command you want. Then you can just press `tab` to select it and it will enter `:smart-indent-selection` for you.

Petr Krysl

unread,
Nov 29, 2014, 4:25:48 PM11/29/14
to julia...@googlegroups.com
Wonderful!  That is really nice (hard to discover though).

Thanks,

Petr

K Leo

unread,
Nov 29, 2014, 5:51:02 PM11/29/14
to julia...@googlegroups.com
I also found it very resource hungry. I have 7 tabs open. When the
cursor is not in it it uses about 20% of CPU (on one core I think).
When the cursor is in it, it uses about 50% of CPU. In total it uses
600MB of memory. Not sure what is wrong?

Hans W Borchers

unread,
Nov 30, 2014, 12:49:46 AM11/30/14
to julia...@googlegroups.com
Thanks, Mike, but in Linux ALT will drag the whole window, not the cursor.

Mike Innes

unread,
Nov 30, 2014, 3:06:05 AM11/30/14
to julia...@googlegroups.com
Ah ok, well this page says you can use Shift + Right drag on Linux for Sublime. Atom is probably the same but I don't know for sure about LT.

Andreas Lobinger

unread,
Nov 30, 2014, 5:42:44 AM11/30/14
to julia...@googlegroups.com
I just updated my linux box to a recent ubuntu and thought: Hey let's give it a try. What is this issue with LT and the cmd key or non-working bindings? I tried (one of the first things in the tutorial) crtl+Space to open a command window: Nothing. I tried cmd/ctrl-shift-o and recognized, i do not have a cmd key and ctrl-shift-o: Nothing. Linux topics in the docs? Nothing.





Christoph Ortner

unread,
Nov 30, 2014, 6:45:00 AM11/30/14
to julia...@googlegroups.com
Why does nobody mention EMACS as an alternative?

Pileas

unread,
Nov 30, 2014, 9:56:53 AM11/30/14
to julia...@googlegroups.com
VIM and Emacs have steeper learning curves. The new ones are quite good to do the job and frankly speaking more modern and fun to use.

Hans W Borchers

unread,
Nov 30, 2014, 1:00:07 PM11/30/14
to julia...@googlegroups.com
Yes, I found that link about Sublime Text, too. Here is my summary.

Sublime Text

  - Shift-Left will give you "column selection" mode --
    even if you have reset the primary mouse button from right to left hand
    (which is a bit irritating).

  - Select a block of text and press Control-Shift-L, this will also provide
    parallel editing on all lines of the selection.

Atom Editor
All this does *not* work in Atom, at least not for me. Instead:

  - The command "select lines" is what I wanted. I could even bind it to
    the key maps Alt-Shift-up resp. Alt-Shift-down. Nice and helpful.

Light Table

  - Using Control-Space and then in the command tab (Control-Space)
    "Editor: Select lines upward/downward with multiple cursors".

Unfortunately, the command tab closes when clicking a command (How can
I avoid this?). I have to learn how to assign a key combination to it.

Gedit

  - The gedit plugin "multi edit" needs to be loaded. Enter/leave this mode
    with Control-Shift-C. Then edit points will be inserted with Control-E
    at quite different places in the file.

Kate

  - Block selection mode will be enabled with Control-Shift-B. The a block
    region will be selected with the mouse.

Conclusion: It's not recommended to use too many editor, otherwise the
different key mappings will drive you crazy.

Sorry to all for so much fuss about a tiny editing feature.

Valentin Churavy

unread,
Nov 30, 2014, 3:05:03 PM11/30/14
to julia...@googlegroups.com
So one argument feature wise for Juno/Lightable is the good integration of profile(). You get an inline view of how expensive each line is that you can directly jump from the call tree to the appropriate line.

Petr Krysl

unread,
Dec 2, 2014, 12:38:47 PM12/2/14
to julia...@googlegroups.com
Could you please explain where to find profile()?  I run LT on Windows 7, and there is no mention of profile view anywhere.

Thanks,

Petr

Petr Krysl

unread,
Dec 2, 2014, 12:42:16 PM12/2/14
to julia...@googlegroups.com
Mike,

I'm not sure I use Juno /LT correctly, but I cannot run an example that "uses" a module.  The module file is in the workspace, but control-shift-enter results in the message of

  • Error evaluating C:\Users\pkrysl\Documents\Research\Software folder\FEA software folder\jfineale\Poisson_FE_example.jl:
    FESetModule not found
     in require at loading.jl:47
I can run the code in any of the module files w/o problems. 

What should I do?

Thanks,

Petr

Valentin Churavy

unread,
Dec 2, 2014, 1:23:29 PM12/2/14
to julia...@googlegroups.com
Julia is in this regard not like Matlab. In Matlab a function file is  with the right name is picked up by the interpreter and loaded. In Julia you first have to include your file [1] and the you can call using A.

The profile function is a bit hidden but an explanation can be found here [2]


Best Valentin

Jutho

unread,
Dec 3, 2014, 10:18:57 AM12/3/14
to julia...@googlegroups.com
I remember reading somewhere that Codebox might support Julia in the near future. Does anybody have any comments or information about this?

Op vrijdag 28 november 2014 17:39:43 UTC+1 schreef Daniel Carrera:

cdm

unread,
Dec 3, 2014, 12:00:29 PM12/3/14
to julia...@googlegroups.com

over at https://www.codebox.io, it says that accounts have sudo access in terminals on virtual machines,
so technically this can be accomplished; similar has been done at koding.com ...

currently, codebox.io is not advertising an off the shelf Julia stack, so it is not obvious what might be
involved with getting their cloud IDE paired up with Julia running on a machine you physically have
access to.

somewhat concerning: dead blog link, zero twitter activity since July, github quiet for 3 months and

good luck,

cdm

cdm

unread,
Dec 3, 2014, 2:43:38 PM12/3/14
to julia...@googlegroups.com

looks like Project Jupyter (http://jupyter.org/) has a text editor under development

per recent twitter action:



could yield a flexible yet powerful IDE ...

certainly interesting.

best,

cdm

Todd Leo

unread,
Dec 3, 2014, 10:19:17 PM12/3/14
to julia...@googlegroups.com
Hey Mike,

I've been used Juno for about a month, and I love it! Coding julia interactively is awesome, exactly how I feel when I was using RStudio! Big thanks!

Yesterday I had to regretfully upgrade my project on julia v0.4, with no surprise that Juno doesn't seem to be working(the little grids kept spinning and no evaluation result came out). This morning I updated Juno and Julia plugin and it solved this problem, bravo! 

But I still lost auto-completion, it might still caused by conflicts with Emacs plugin, I think I will live with it for now :-)

Cheers,
Todd Leo

James Dang

unread,
Dec 4, 2014, 3:51:55 AM12/4/14
to julia...@googlegroups.com
I've been working quite productively with LightTable, as I specifically need to interact with my data. It even allows interactive plotting using PyPlot with the ability to show the plots in a separate window or inline.
Reply all
Reply to author
Forward
0 new messages