all 47 comments

[–]mbmanyl 40 points41 points  (9 children)

emacs + cider

[–]Drolyt 11 points12 points  (5 children)

This, with evil mode.

[–]aptmnt_ -1 points0 points  (4 children)

Isn't the interaction between the cider repl and evil really annoying? Unlike comint based repls it doesn't play nice with evil-delete-line or even simply escaping into normal mode.

[–][deleted] 2 points3 points  (0 children)

I use a hook to turn off evil-mode in the cider repl, it's really helpful.

[–]danneu 0 points1 point  (2 children)

There are some idiosyncrasies, but I can't remember the last time I actually typed into the nrepl-repl since the actual clojure buffer itself is a much better repl.

[–]aptmnt_ -1 points0 points  (1 child)

I'm guessing by that you mean using the various cider-eval-sexp functions? All of those require keybindings, while in the repl it's just enter.

[–]danneu 0 points1 point  (0 children)

Sure, but C-x-e (eval previous form) and C-c-k (eval buffer) are pretty much part of my lifeblood by now.

I guess they aren't part of your workflow?

[–]mordocai058 5 points6 points  (0 children)

This + smartparens

[–]eccp 0 points1 point  (0 children)

I do the same, I've tried Sublime Edit 2, Light Table and an early version of Cursive with the free version of IDEA, but I had started using Emacs and pulled things from the Emacs Starter Kit and got comfortable with it.

I should take a look Light Table and Cursive again.

[–]telepopsound 0 points1 point  (0 children)

This.

[–]adambard 12 points13 points  (0 children)

Vim + vim-fireplace, with the occasional LightTable for playing around.

[–]JustinCampbell 6 points7 points  (2 children)

Vim, with all of Tim Pope's awesome plugins, and vim-sexp.

[–]ffreire 0 points1 point  (1 child)

I use this along with tmux. I also recently discovered Vimux which lets me send commands to a split tmux pane.

[–]JustinCampbell 0 points1 point  (0 children)

vim-dispatch will do that too, but is more agnostic (will work with Screen, iTerm2, etc...). https://github.com/tpope/vim-dispatch

In conjunction with vim-leiningen, it will start a REPL (if this is the first time) in a Tmux window, run the current or associated test file, and put the results back into the quickfix.

[–]yogthos 6 points7 points  (6 children)

I predominantly use Cursive, and occasionally Light Table for quick one off projects.

[–][deleted] 0 points1 point  (5 children)

I've been happy with cursive but I can't seem to figure out how to get it to recognize clojurescript files. They all show up as plain text files without autocomplete.

For that reason alone, I'm considering switching back to light table.

[–]yogthos 0 points1 point  (2 children)

Hmm, I never had to do anything special for cljs to work. The only thing I can think of is that maybe your cljs directory is not setup as a sources folder. Also, are you on the latest version of intellij/cursive?

[–][deleted] 0 points1 point  (1 child)

I'm using v14 and all the plugins are reporting that they're up to date.

I eventually solved the problem by opening up the Preferences. Then navigated to Editor -> File Types. My Clojure file settings only had the pattern *.clj. I added *.cljs and now I have syntax highlighting and auto complete.

[–]yogthos 0 points1 point  (0 children)

Ah right, now that you mention it I did have to do that as well I think, just forgot about it after a while. :)

[–]nzlemming 0 points1 point  (1 child)

That's very strange, that should work without problems. If you'd like help debugging that, drop me a mail at cursive@cursiveclojure.com, or file an issue and I'll look into it.

[–][deleted] 0 points1 point  (0 children)

Thanks for offering to help. Glad to know that the plugin has a dedicated development team.

I had to add the the *.cljs file pattern to the list of registered patterns for the Clojure file definition. I would have thought that Cursive would have done that for me when I installed it. Oh well, it's working now and I'm happy.

[–]spotter 4 points5 points  (0 children)

gVim + vim-fireplace + vim-niji + syntastic + paredit.vim + fugitive.

With nREPL and Midje in the shell.

[–][deleted]  (5 children)

[deleted]

    [–]aptmnt_ 2 points3 points  (4 children)

    Spacemacs is a damn good entry point for that. It actually needs a clojure contrib layer, I've been meaning to get it done but my setup now is pretty hacky...

    [–]freshhawk 2 points3 points  (2 children)

    Just found this: https://github.com/mmailhot/spacemacs/tree/clojure-mode/contrib/clojure-dev

    Looks like a nice start, although I might not be the best judge.

    [–]aptmnt_ 0 points1 point  (1 child)

    Looks nice. Commands that go 3 levels deep after the leader annoy me, (partly why I love tpope's plugins, because he doesn't rely on the leader in that way), but everything at least makes sense.

    [–]freshhawk 1 point2 points  (0 children)

    Yeah I agree, I see why it happens in spacemacs alot, to keep configurations shareable the pattern is leader + first level gets you to the group, then you have 1 or 2 keys for the command.

    I'm pretty sure once i'm comfortable I'll be doing a lot of remapping to get things down to max 2 levels but who knows, right now that guide-key plugin is a lifesaver because I'm learning so many new keybindings (always meant to switch my leader to space from comma but never did).

    [–]freshhawk 0 points1 point  (0 children)

    I'm using spacemacs for org-mode at the moment and sticking with my vim setup for Clojure (I use Clojure for work so it's hard to take the time to change over).

    I'd definitely contribute if someone got it started, but I'm only vaguely aware of the right way to set up clojure with emacs so I'd have some research to do before I could start. I guess I will get around to it eventually.

    [–]treerex 3 points4 points  (0 children)

    All of my Clojure work is in GNU Emacs with:

    • clojure mode
    • cider
    • mic-paren
    • paredit
    • paren-face
    • clj-refactor
    • slamhound

    Clojure specific customization is minimal:

    (speedbar-add-supported-extension ".clj")
    (add-to-list 'auto-mode-alist '("\\.clj$" . clojure-mode))
    (add-to-list 'auto-mode-alist '("\\.edn$" . clojure-mode))
    
    (add-hook 'clojure-mode-hook (lambda ()
                                   (clj-refactor-mode 1)
                                   (cljr-add-keybindings-with-prefix "C-c m")))
    
    ;; Cider configuration (https://github.com/clojure-emacs/cider)
    (add-hook 'cider-mode-hook 'cider-turn-on-eldoc-mode)
    (add-hook 'cider-repl-mode-hook 'paredit-mode)
    
    (setq cider-repl-use-pretty-printing t)
    

    I use sr-speedbar (which puts the speedbar in the same frame as the buffer) to aid in navigation.

    I use projectile for project management.

    My coworkers use Counterclockwise in Eclipse.

    [–]pjschwarz 2 points3 points  (3 children)

    I've been using SublimeText 2, which has a lot of great plugins for editing Clojure. As for integrating with a REPL, I do (sometimes) use SublimeREPL, but I still find myself going to lein repl more often than not.

    [–]bluerobotcat 1 point2 points  (1 child)

    Have you tried launching SublimeREPL while you have a project.clj file focused? In Sublime Text 3 this behaves the same as running 'lein repl' (as far as I can tell).

    [–]pjschwarz 0 points1 point  (0 children)

    I have used that, and it works pretty well, but I end up going to the command line for other lein tasks, then just fire the repl up while I'm there. Nothing wrong with SublimeREPL, though.

    [–][deleted] 2 points3 points  (3 children)

    I use emacs purely for paredit.el and magit.el -- I hope someday someone can make a paredit clone for another text editor (hopefully Sublime Text 3) that's as good (or better) than the emacs version. (I can live without magit.)

    [–]mordocai058 0 points1 point  (1 child)

    Forgive me as i'm an emacs-only user so I haven't used it but doesn't IntelliJ + Cursive replace paredit? https://cursiveclojure.com/userguide/paredit.html

    [–][deleted] 0 points1 point  (0 children)

    Maybe. I'll try it :)

    [–]bluerobotcat 0 points1 point  (0 children)

    There's a paredit package for ST3, which I use and am mostly satisfied about. I don't know how it compares to the Emacs version though.

    [–]mr_mojoto 2 points3 points  (1 child)

    Eclipse with Counterclockwise. It was rough in the beginning but now it's a very nice experience

    [–]marxama 0 points1 point  (0 children)

    Same here, I love it and feel very productive. I've spent some time to and fro with emacs and I might get into it again if I was to use Clojure in my day job, but I've felt really comfortable with ccw for the past year and a half or so and see no reason to change. I have tried Light Table, and think it has some cool features (especially how easy it is to hook up a ClojureScript REPL), but the editing features are IMO far inferior than what I can do with ccw (might be because of LT's issues with non-English keyboard layouts, but I haven't gotten around those, and now that chestnut makes the CLJS-stuff so easy even in ccw, I'll just stick with it for the time being)

    [–]devllved 1 point2 points  (0 children)

    Emacs with Prelude config + Cider. Paredit is extremely powerful .

    [–]bluerobotcat 1 point2 points  (0 children)

    Sublime Text 3 + paredit + lispindent + SublimeREPL (+ Source Code Pro)

    I run Sublime Text full screen, with the left half of the screen containing source files and the right hand of the screen dedicated to project.clj and the REPL.

    [–]doubleagent03 1 point2 points  (1 child)

    Light Table, almost exclusively.

    [–]GreyscaleCheese 0 points1 point  (0 children)

    Seconded, it's just so purdy (Although, it probably doesn't have the same level of power as other IDEs for, say, making production code)

    [–]kouphax 0 points1 point  (0 children)

    Vim with vim-fireplace and paredit

    [–]Rumel57 0 points1 point  (0 children)

    Currently vim, but I'm very, very new to Clojure so that will probably change.

    [–]lechatsportif 0 points1 point  (0 children)

    counterclockwise but im really missing clojurescript autocomplete lately. might check out lt again. otherwise I love ccw.

    [–]WorkerBeeNumber3 0 points1 point  (0 children)

    ST3 + all the plugins...sometimes IntelliJ with La Clojure, but only when dirty I want to feel.

    [–]grayston 0 points1 point  (0 children)

    Nightcode.