Any plans for Clojure support?


#1

I’m just trying Atom out now, and so far I love it! Major kudos. The design is impeccable, I love how open to extension it is, and it seems to have a lot of really handy features already built in.

I would consider switching over immediately, were it not for the fact that Clojure isn’t a supported language. :stuck_out_tongue: I do almost all of my coding in Clojure, so this is a must-have for me. I’m hoping this is just a case of needing to iron out all the kinks with the “base languages” before starting to add support for less popular ones.

Right now I’m using Light Table, which is a fantastic IDE with heavy Clojure integration. In fact, I would say that Light Table is kind of cornering the market right now in terms of full-featured IDEs with Clojure support (there aren’t a whole lot of those around, with Clojure being such a new language). But I think if Clojure were added to Atom as a supported language, Atom could definitely be a worthy contender in that arena.


#2

Are you asking about syntax highlighting, snippets and such? Or are you asking about support for using Clojure to write packages for Atom?

If the former, there is a Language Clojure package already. It just doesn’t come pre-installed :smiley:


#3

Yes! Thanks for pointing that out – I should have looked in the packages first.

Syntax highlighting is a big part of it, but it would also be cool to see some support for interactive development with a live REPL. Light Table even has a kind of REPL built into the buffer windows – you can highlight a snippet of code and press a key combination to evaluate it off to the side.

This is just wishful thinking, of course. The fact that there’s already a package for Clojure syntax highlighting is great, though! I’m sure as more Clojurians discover Atom, more and more useful Clojure packages will be written.


#4

You’re welcome! I’m glad I could help out :sunglasses:

I played around a bit with LightTable and I was pretty impressed with the built-in REPL capabilities. I think, given the technological basis of Atom, that hoping for similar capabilities to be added via a package in Atom isn’t outside the realm of possibility.

Speaking of which … have you seen Atom Runner?


#5

Atom Runner looks awesome! It will definitely come in handy for Ruby, my other language of choice. Add something like that for Clojure (or even Clojure support for Atom Runner) and I’m sold :smiley:


#6

I’m just a guy that spends a scary amount of time on the boards because I like helping people :laughing: And, sadly, I’m not an expert on Clojure (wouldn’t know where to start right now). But I’m pretty sure @lsegal would be open to a PR if you wanted to add Clojure support to Atom Runner. (If anything needs to be done beyond adding something to your config, it looks pretty simple.)


#7

Clojure should indeed be just a matter of registering your file extension with a binary to execute. See: https://github.com/lsegal/atom-runner#configuring


#8

I am not sure if my intervention is justified so lately, but I found a way to support Clojure evaluation into Atom.io with Atom Runner.

  1. Of course, install Atom Runner

  2. Download clojure jar to, let’s say $CLOJ_PATH for the absolute path to the jar (dir and file => /home/me/clojure-1.7.0.jar)

  3. Add the following lines to your config.cson (find it with CTRL+SHIFT+P on linux and type “Open your config”) and add indent from the beginning of the line whenever you see [add ident]

    [add ident]‘runner’:
    [add ident][add ident]‘extensions’:
    [add ident][add ident][add ident] ‘clj’: 'java -cp $CLOJ_PATH clojure.main -e ’

  4. Now you can run a file single command with Alt+R if on linux (I don’t remember the command for Windows). Unfortunately I don’t find the command for running text selection under Ubuntu

, so I can’t say if this method works also (the command Alt+Shift+R does not works on my Ubuntu 15.04).

Sorry if the procedure seems ridiculously descriptive, but I want the reader to avoid the headaches I could have taken when solving this problem.

Test successfull by appending

(println (+ 1 2 3 4))
(println (* 1 2 3 4))
(-main)

to the end of the core.clj of a project generated by Leiningen.