#clojure logs

2011-10-22

00:00Raynesjodaro: Ping.
04:00kab3wmAnyone here familiar with redis-clojure? I'm having trouble grasping something..
04:03amalloy~anyone
04:03clojurebotJust a heads up, you're more likely to get some help if you ask the question you really want the answer to, instead of "does anyone ..."
04:07kab3wmAs soon as I hit enter I thought of that.. So from the redis-clojure tests, I see all of the get/set/etc operations being called within the (redis/with-server) function. This seems wrong to me. So my question is, is it possible to use (redis/with-server) purely as a connection setup function and have (redis/set "foo" "bar") wherever I want them? So far in my testing it's not working.
04:12amalloykab3wm: this is a fairly standard way to use dynamic scope, if i understand your question
04:13amalloy(defn do-actual-work [] (...redis/set ...)) (defn prepare [] (redis/with-server (do-actual-work)))
04:13amalloyyou don't need to be lexically within the with-server block, you just have to set before that block exits. if you want, wrap your whole event loop in with-server and you'll have it whenever you need it
04:14amalloypersonally i prefer the way aleph-redis does it, but this way is a common pattern
04:15kab3wmamalloy: maybe I just don't understand the protocol, but with-server is what makes the connection to the redis server. I would think it would be better to connect once and pass commands as needed instead of a new connection for every db operation.
04:17kab3wmamalloy: I'll give your example a try, that looks like it might work.. I'm new to clojure, so I'm sure I just don't know the right way to do things. :)
04:53maxalwingsHello, technomancy_ I have installed leiningen using brew on mac, but when I run lein repl or lein swank within my clojure projct i get an exception like this | http://pastebin.com/bkhQW7YB
04:59ejacksonmaxalwings: you don't need brew (i'm on a mac using lein and have no idea what brew is)
05:16maxalwingsejackson brew is just a package manage, but I have successfully installed lein, it seems that I don't have some java/clojure classes?
05:16ejacksonif you try lein help does it work ?
05:17ejacksonthereafter try create a now project with lein new myproject, cd into that dir, and try lein deps.
05:18ejacksonthat will let you know whether lein or perhaps your project.clj are at fault
05:18ejacksons/now project/new project/
05:20maxalwingsejackson all these steps works fine
05:20ejacksonok, did you run lein deps in your project ?
05:20maxalwingsejackson yes
05:21ejacksonbummer.
05:22ejacksonI'm outta ideas, sorry. Perhaps your project.clj is incomplete or malformed ?
05:22maxalwingsthis is what I have in project.clj "(defproject clojure "1.0.0-SNAPSHOT"
05:22maxalwings :description "FIXME: write description"
05:22maxalwings :dependencies [[org.clojure/clojure "1.2.1"]])
05:22maxalwings:
05:22Raynesgist.github.com
05:22ejacksonwell, its hard to go wrong with that.
05:24ejacksonI'd try pulling my code to pieces, and rebuilding it step at a time to identify where it blows up.
05:24ejacksoni've not seen that error before, so dunno what has gone wrong.
05:26maxalwingsthanks for your help, I am going to re install lein make without
05:26maxalwingsinstall lein without brew
05:29kjeldahl;(= {:a {:b {:c 1}}} {:a {:b {:c 2}}})
05:29kjeldahl,(= {:a {:b {:c 1}}} {:a {:b {:c 2}}})
05:29clojurebotfalse
05:29kjeldahl,(= {:a {:b {:c 1}}} {:a {:b {:c 1.0}}})
05:29clojurebotfalse
05:29kjeldahl,(= {:a {:b {:c 1}}} {:a {:b {:c 1}}})
05:29clojurebottrue
08:24fliebelAre there any native speakers around who'd like to proof read a blog post? I usually don't do that, but I saw cemerick do it once, and I'm curious what'll come out of it.
08:38fliebelOk, I'm going ahead and publish the post.
08:42fliebelDone. after-the-fact corrections still welcome. http://pepijndevos.nl/2011/10/22/the-origin-of-language.html
08:54joegalloBull5h!t
08:54joegallodammit
08:54joegallowrong window
08:54joegalloignore me
09:54hugodfliebel: leuk - I would argue that one of the ways natural language differs from programming languages is that it has words with different levels of abstraction, for the same concept.
09:56hugodand that is what allows you to have a conversation in English with a 500 word vocabulary, but makes, say, Martin Amis much more interesting to read
10:26fliebelhugod: Interesting though. Thanks.
10:29fliebel*thought
10:31fliebelAlmost like polymorphism... Or maybe not... Hm
10:42jodaroRaynes: sup
11:20djpowellSome gclosure functions return NodeLists - how can I deal with those in clojurescript
11:59robermannquick question: what does -> mean in the context of http://blip.tv/clojure/stuart-halloway-simplicity-ain-t-easy-4842694 , at time 25:13 ?
11:59robermannI reported here the example: http://pastebin.com/nvR1wAi3
12:01robermannThere -> isn't a call - it seems an attribute access
12:02devnrobermann: I'm not sure actually -- it's not contained within (keys (ns-publics *ns*))
12:03devnrobermann: perhaps it was meant to be an ;=> ?
12:04robermanndevn: mmm I can't understand "inputStream->reader"
12:07djpowelli guess it might be some custom function
12:07djpowellclojure.java.io/reader will probably do the same thing?
12:08djpowell-> in the middle of a function name has no special meaning, it is just part of the function name
12:10devnrobermann: you're looking at "naming a la carte"
12:11robermanndevn: implementation reuse
12:12robermanndjpowel: that could be, make sense - I this the only option IMHO :)
12:12robermannI this -> it is
12:21devnrobermann: "I think this is the only option IMHO" is I think what you meant. Correct?
13:22robermanndevn: yes you are correct
13:31ziltiHmm. For me swank-clojure still doesn't work... damn it.
13:33robermannwhy zilti?
13:33ziltirobermann: Still getting those errors each time I use the slime REPL
13:34robermannon windows?
13:34ziltion Linux
13:35ziltiI don't have any manual slime installation. Only clojure-mode. Then I use clojure-jack-in (which is supposed to fetch the correct SLIME I've been told).
13:38robermannhaving emacs + slime should be a mandatory prerequisite
13:39ziltiI removed the manually installed slime because I thought that would solve the problem.
13:43zilti"error in process filter: Wrong type argument: characterp, nil" and then "error in process filter: Variable binding depth exceeds max-specpdl-size"
13:43ziltiAnd then emacs is totally broken and unusable.
13:45robermannI don't konw. I think you 've already seen guides as http://riddell.us/ClojureSwankLeiningenWithEmacsOnLinux.html
13:45lazybotThe riddell.us tutorials are much more highly-ranked on Google than they deserve to be. They're old and way too complicated. If you're trying to install Clojure...don't! Instead, install Leiningen (https://github.com/technomancy/leiningen/tree/stable) and let it manage Clojure for you.
13:52ziltiYes, I have everything set up as it should, except that it doesn't work
13:58moogatroniczilti: what OS are you running?
13:58robermannzilti: mm I cannot give much help here, sorry. I installed it on windows
13:58moogatronicnm… i scrolled back and saw. =)
14:00moogatronicI actually followed some instructions from Sam Aaron / Overtone to get my setup working.
14:01moogatronicDoes anyone know of a "room-share" board or anything of the like for the Conj? I am looking for a potential roommate to split the hotel costs.
14:02moogatronic<--- (poor'ish PhD student)
14:31theignoratiI'm controlling an piece of hardware with Clojure through midi, so I have something like this (set-control 10 15) and that will generate a list of 4 numbers that I can then make a midi shortmessage with (something like this (176 0 10 15), and send to the device. I can also change controls on the device and I will get (176 0 10 15) from it, is there a clever way of going from that back to (set-control 10 15)?
14:32AWizzArd~seen lpetit
14:32clojurebotTitim gan éirí ort.
14:32AWizzArd,seen lpetit
14:32clojurebot#<CompilerException java.lang.RuntimeException: Unable to resolve symbol: seen in this context, compiling:(NO_SOURCE_PATH:0)>
14:42TimMc$seen lpetit
14:42lazybotlpetit was last seen quitting 1 week and 2 days ago.
14:43TimMctheignorati: A way to get from '(1 2 3 4) to '(3 4)?
14:45theignoratifrom the result of (function param1 param2) being (1 2 3 4) back to (function param1 param2) for several functions)
14:46TimMcAre they invertible functions?
14:48theignoratithey're functions that look like this: (defn f [level] (list 176 0 61 level))
14:55AWizzArdAnybody here who has experience with OSGi+Clojure?
16:46lynaghkHas anyone gotten the ClojureScript browser REPL working nicely with Emacs?
16:47lynaghkI've been following David's instructions on the ClojureScript Github wiki, but after a few commands I always seem to end up hanging the repl.
16:48amalloytheignorati: that's something that i think is usually pretty simple in logic programming, but i don't know much more about it. you might have a look at dnolen's core.logic
16:48dnolenamalloy: nice one ;)
16:49amalloydnolen: i hit the mark, then?
16:49dnolenlynaghk: some kinds of errors will hang the repl.
16:49dnolenlynaghk: but really that shouldn't happen so much.
16:49lynaghkUndefined functions?
16:49dnolenlynaghk: that doesn't usually hang the REPL for me.
16:50lynaghkI am just playing around with console.log, which is implemented as native code
16:50lynaghkin the browser. Maybe that's an issue
16:51dnolenlynaghk: perhaps. but that doesn't sound right. I've used (. js/console (log …)) a bit, rarely do something that hangs the REPL.
16:51lynaghkHmm. I'm just thinking there is a bit of strangeness there;
16:51dnolenlynaghk: but it's possible to hang the REPL - haven't look closely at what it take to prevent that more often.
16:51lynaghk(def p (.log js/console)) doesn't work
16:51lynaghk(defn p [x] (.log js/console x))
16:51lynaghkbut that does
16:52dnolenlynaghk: known issue, there no way to differentiate property access w/ method calls.
16:52dnolenw/ -> from, I mean.
16:53dnolenlynaghk: good chance that (.log js/console) will work in the future, and property access will look different than it does now.
16:53lynaghkyeah, I understand that issue. Shouldn't you be able to say (p "hello") after either of those definitions regardless though?
16:53lynaghksince (.log js/console) should be getting the function-as-a-property
16:55amalloylynaghk: if those two don't behave the same, i'd guess the difference is that the former is called with the wrong "this" binding
16:57lynaghkI'm not sure if console.log relies on `this`. Can't say, since it's native code on Chrome.
16:57dnolenlynaghk: it doesn't work even if you do that in JS
16:57dnolenvar p = console.log; p("foo"); results in an Error
16:58lynaghkAh, good observation.
17:00lynaghkI guess that's just not-quite-a-js-function.
17:06pandeiroyou can't just assign native functions to other variables in js... document.getElementById for another example
17:07pandeiroso the idiom is function p(q) { console.log(q); } or function $(id) { return document.getElementById(id); }
17:09pandeirodnolen: i get a ton of funky output when i initialize my repl (namely when i do the necessary refresh of the browser)... but the repl performance afterwards is pretty stable compared to when i first started
17:10dnolenpandeiro: yeah, it takes a while for the REPL to get going. one enhancement I would like to see is browser REPL relying on WebSockets when available.
17:11pandeiroyeah the REPL is also slow if you try to println a chunk of data into an inferior lisp buffer
17:11pandeirothe combo of datatype conversion and no proper templating also makes working with the DOM feel 1000x slower than jquery
17:12dnolenpandeiro: yes printing back to the REPL would benefits from WebSockets I think.
17:12dnolenpandeiro: you can use jQuery
17:12pandeirosure i know but jquery and closure?
17:12dnolenpandeiro: yup
17:13pandeiroi would like to build out the functionality with closure if possible... i do see the performance win with the compiler and stuff
17:14pandeiroi think a lot of it is just the proper abstractions havent been built out
17:14pandeiro(i did your enlive tutorial and if something like that could exist for cljs, that would be fantastic)
17:15dnolenpandeiro: yeah datatype conversion stinks, but that's mostly when working w/ other libraries - there's a ticket for emitting JS literals.
17:15pandeiroisn't a lot of the power of clojure in the datatypes though?
17:15pandeiroi am really loving it for grabbing and processing couchdb docs with crazy nesting
17:15dnolenpandeiro: yes, I prefer Clojure's datatypes.
17:16pandeirodnolen: dont mean to complain btw, awesome fing work youre doing
17:16dnolenpandeiro: but working with other libraries that expect objects is a bit of work.
17:16dnolendnolen: haha, my contribution so far has been minor compared to everyone else :)
17:16dnolenoops pandeiro
17:16scodeWith interop, is it idiomatic to use (Integer. xxx) to force use of Integer? (int xxx) gives me a Long in Clojure 1.3.
17:16pandeirocollective you
17:17dnolenscode: yes
17:17scodednolen: Thanks!
17:28TimMcscode: What is xxx here?
17:28TimMcJust some number?
17:28scodeTimMc: yes
17:28scodeTimMc: (.getClass (int 5))
17:29scodeTimMc: (yields Long)
17:29TimMc,(list (.getClass (int 5)) *clojure-version*)
17:29clojurebot(java.lang.Long {:major 1, :minor 3, :incremental 0, :qualifier nil})
17:29TimMc&(list (.getClass (int 5)) *clojure-version*)
17:29lazybot⇒ (java.lang.Integer {:major 1, :minor 2, :incremental 0, :qualifier ""})
17:29scodeNice bot.
17:31TimMc,(doc int)
17:31clojurebot"([x]); Coerce to int"
17:32scodeI was kinda surprised. Could it be a bug rather than intended behavior?
17:32TimMcIt is kind of odd.
17:32scodelong (the function) certainly still exists.
17:34gfredericksI think it's intended
17:34gfredericksI witnessed a conversation about this earlier
17:34gfredericksmight be able to find it in the irc archives actually...
17:35amalloyit's intended. people complain about it whenever they find out though
17:35amalloythere's a(nother) long discussion on the mailing lists going on right now
17:35scodeFTR: I am not complaining, just thought it might be a bug :)
17:35TimMcclojure.lang.RT/intCast vs. longCast -- so the distinction is in RT
17:35TimMcThe doc might be a bug.
17:36amalloyTimMc: no, int does coerce to int
17:36TimMcOh, then autopromotes?
17:36scodeAh...
17:36scode*int*, not Integer
17:36amalloyautoboxes, anyway
17:36amalloy(and 1.3 introduces auto-promoting boxing, so yeah, i guess)
17:36scodeHmmm. Why are int:s promoted to Long:s rather than Integers I wonder?
17:37TimMc1.3 standardizes on Long for some reason
17:37scodeOk.
17:40gfredericks&(list (.getClass (int 6)) (.getClass (long 4)))
17:40lazybot⇒ (java.lang.Integer java.lang.Long)
17:40bartjwhich is the recommended clojure library to parse HTML
17:40bartjenlive ?
17:40gfredericksyeah
17:40gfredericksat least that's what everybody always says when somebody asks that question
17:40gfredericksI assume they're not joking
17:40bartjI am trying to do some information extraction work
17:41bartjwhich also involves getting the HTML width, height, location, color, ec. of elements
17:41bartjof the web page
17:41gfredericksthat...sounds like a hell of a lot more than parsing.
17:41bartjI suppose that this can be done only after plugging in to the rendering engine
17:42bartjsay maybe Webkit (or) Gecko
17:42llasramI kind of feel like people would find the autopromotion less confusing if Clojure didn't try to be a *little* helpful w/ Java interop by keeping unmolested ints as ints. If ints -> longs as soon as Clojure found them, I think no-one would be complaining that the semantics didn't make sense
17:42bartjI would be really really grateful if someone can point me how to use
17:43bartjor hook onto a rendering engine like Webkit / Gecko
17:43llasrambartj: Hoo boy. That's kind of tricky. Last time I looked into it (from Python, for the calibre project) there wasn't really a good way to do it
17:43llasramAs in, at all
17:43gfredericks,(for [num [(long 5) (int 5) (short 5)]] (.getClass num))
17:43clojurebot(java.lang.Long java.lang.Long java.lang.Short)
17:43gfredericks^ the unexpected behaviors keep piling up
17:44llasrambartj: Qt's WebKit bindings get you some of what you need, but it's pretty thoroughly munged. Depending on what you're doing, it may be enough, but I don't think you can get at that info from the JVM
17:45bartjllasram, any pointers sir ?
17:47llasrambartj: It's been a while, but you can look at the Qt webkit api: http://doc.qt.nokia.com/latest/qtwebkit.html But obviously you'd need to then use a language with Qt bindings
17:48bartjwhich would be mostly python I think
17:48llasram,(.getClass ((fn [x] (inc x)) (short 0)))
17:48clojurebotjava.lang.Long
17:48gfrederickso_o
17:49llasramI think the short -> Short boxing behavior is more arguable the bug
17:55gfredericks,(.getClass (byte 4))
17:55clojurebotjava.lang.Byte
17:56gfredericks,(.getClass (inc (byte 4)))
17:56clojurebotjava.lang.Long
18:00daniel___,(byte 4)
18:00clojurebot4
18:00daniel___,(byte s)
18:00clojurebot#<CompilerException java.lang.RuntimeException: Unable to resolve symbol: s in this context, compiling:(NO_SOURCE_PATH:0)>
18:04llasramWhoa, crazy-town. There's *are* Java Qt bindings: http://qt-jambi.org/
18:05ziltillasram: But they're outdated and deprecated.
18:05zilti*not deprecated, but outdated
18:05llasramzilti: Ah, ok.
18:09ziltillasram: iirc trolltech stopped supporting it after Qt 4.5. Recently a small group tried to continue it (the link you posted) but it seems it's too much for them to bite. I mean, click on the Documentation > API link - it links to Qt 4.5.0 API
18:41ejacksondnolen: are these your little Byrds again ? :P
18:41dnolenejackson: ha!
19:12simardI've just pushed [org.clojars.gsimard/lwjgl "2.8.1"] because [org.lwjgl/lwjgl "2.7.1"] is too old. I used org.clojars.gsimard there, because I was wondering if org.lwjgl has anything "reserved" about it.
19:12simardwhat is the ethics of choosing a name when pushing to clojars ?
19:13scottjI think the norm is don't use someone else's prefix w/o permission. I don't know if the system enforces it
19:14simardyeah, that's why I didn't use org.lwjgl, also, I didn't want to break anything .. :)
19:16duck1123so do you always have to use literals when defining match patterns? I tried defining some of my values in vars and it's failing oddly
19:17simardfrom the clojars wiki "You can’t create a group with the same name as an existing group or user."
19:17simardso no, it's not possible to push to some group that you don't belong to
19:17simardthe other user has to add you first
19:49gfredericksactually...
19:49gfredericksyou _can_ create a group with the same name as an existing user
19:49gfredericksand once you've done that, that user cannot update their profile (password, keys, etc).
19:55gfredericksI should just stop whining about it and get a replacement account.
20:01dnolencemerick: I don't believe it.
20:01cemerick?
20:01dnolenhttps://twitter.com/cemerick/status/127895772120363008
20:02cemerickdnolen: https://twitter.com/#!/cemerick/status/127896015272554496 :-)
20:02dnolencemerick: whew. world was upside down there for a second.
20:02cemerickMy job is done here.
20:03cemerickPhil is going to facepalm when he sees that though. He'll be my first tech support /msg if necessary.
21:38ozatamanhey all. when using a simple folder with a couple of clojure files, emacs and slime, the slime repl can't find one of the files in its classpath when trying to load the other file that depends on the first. any simple solutions to this?
21:39ozatamanI've started a swank-clojure inside this folder and used slime-connect
21:44amalloyozataman: probably the wrong directory structure
21:45cemerickDoes emacs/slime provide an equivalent to a file outline?
21:46amalloycemerick: it's been a while since i used eclipse, but i remember several features that might be described as a file outline. which one are you asking about?
21:46amalloy(note: i don't know the answer either way, b/c i've never gone looking for an outline in emacs. but if you clarify what you want someone else might know)
21:47cemerickamalloy: a panel separate from the main buffer that maintains an updated listing of all top-levels in that buffer.
21:48cemerickusually with graphical indicators of each one's characteristics (defn/def, private or not, etc)
21:51amalloyi remember that being mostly in the Package Explorer. some quick googling turned up http://ecb.sourceforge.net/ but no idea if it's any good
21:52cemerickoh, I remember that from my last emacs foray. JDEE. *shiver*
21:52cemerickYeah, that's the ticket.
21:52duck1123ecb has gotten pretty good
21:52cemerickI think your mode needs to produce ctags or something similar in order for ECB to work…
21:53duck1123now that it's in elpa
21:53cemerickduck1123: does it work with Clojure?
21:53cemericker, SLIME, whatever?
21:53duck1123pretty well, but you can jump to fns even without it
21:53duck1123it has a fn list, file list, and recent buffers
21:54cemerickgood to know, thanks :-)
21:54duck1123you can also configure it to keep the compile buffers at the bottom
21:55cemerickThen my other question would be, is there a namespace browser somewhere? That is, something like a wildcard apropos view, but organized by namespace, and filterable in-place?
21:57duck1123cemerick: http://dl.dropbox.com/u/270347/Screenshot%20at%202011-10-22%2021%3A54%3A31.png
21:58cemerickduck1123: sorry; is that ECB on the left?
21:59duck1123yes, the lower left shows all the symbols
22:04cemerickoh, I see, that's the current buffer outline
22:04cemerickpresumably a namespace browser would be a SLIME feature…
22:05ozatamanamalloy: FYI, swank-clojure script in .lein/bin needed to be tweaked to add "." to the classpath. that was the problem.
22:07duck1123If you want all the namespaces C-c M-p <tab>
22:24amalloyozataman: no, the problem was you wanted . to be in the classpath :P
22:26amalloylein projects are "supposed" to (though you can customize layout in project.clj) have their source code under the src/ directory, which is on the classpath
22:26hugodcemerick: it would be relatively simple to add a buffer for browsing namespaces in slime - not sure it is worth it
22:27cemerickhugod: yeah, it's not a hard problem; I'm just surveying the current state of things.
22:28cemerickThe degree of utility is perhaps a potential point of debate. ;-)
22:29scottjperhaps filtering a namespace browser is akin to slime-apropos-package
22:30hugodscottj: that seems to fit the bill
22:31hugodscottj: btw, have you seen the exception filtering in ritz 0.2.0?
22:31cemerickThat's M-x slime-apropos-package then?
22:31scottjhugod: I saw the commit and was excited about it but I haven't actually tried it yet
22:32hugodit's pretty basic at the moment - but will hopefully be enough to provoke some feedback
22:32scottjcemerick: yeah not sure if works on swank-clojure though failed for me
22:32cemerickscottj: Yeah, seems like a no-op
22:33hugodworks for me in ritz
22:33duck1123C-c C-d C-p is slime-apropos-package
22:48ozatamanduck1123: what is that folder/tree package that you're using?
22:48duck1123That's ecb
22:48ozatamanamalloy: I don't want a lein project; this needs to be a minimal folder. it's actually for google AI challenge
22:48ozatamanduck1123: thank you
22:49ozatamanduck1123: and the history box?
22:49duck1123ozataman: that's all ecb. That's what I was trying to demonstrate with that screenshot
22:50ozatamanduck1123: very cool, I'm reading the project info page now.
22:50duck1123it's in elpa now, so it's much easier to install than it used to be
22:51technomancycemerick: the file outline thingy that I use is M-x imenu
22:51technomancy(within a single file)
22:52technomancyfor namespace listing, I just use the tab-completion in M-.
22:53duck1123I have C-x <tab> for ido-imenu. Should be default in starter kit
22:55ozatamanduck1123: just used elpa to install, but getting an error with ecb-activate. says stack-trace-on-error is void
22:56duck1123ozataman: try ecb_snap instead
22:56duck1123despite how you may feel about that underscore
22:57cemerickwhat are the 3 most compelling things about emacs w.r.t. Clojure programming, aside from the basics (REPL, paredit)?
22:58duck1123excluding all of slime, or just the repl? Because that's a very big part of it
22:58technomancycemerick: the fact that M-. for jump-to-definition works on code whether it's your own or in a jar is definitely top-3 material
22:58technomancycemerick: C-c S-i for the slime inspector is slick too
22:59technomancybecause it's hyperlinked; you can jump around from inspecting an instance to inspecting its class to inspecting each method and the return types thereof
22:59technomancyto some degree it can function as a javadoc replacement
22:59duck1123(inc technomancy)
22:59cemerickduck1123: excluding REPL basics, I mean
23:00technomancyprobably for #3 I would list the in-buffer test runner (C-c C-, inside a test file with clojure-test-mode activated)
23:00technomancysince that will highlight failing/errored tests red/yellow and let you see details about the failures with C-c C-'
23:00scottjhttp://www.youtube.com/watch?v=dio__Qylp-s screencast on using ac-slime as a namespace browser
23:00duck1123Truthfully, C-c C-k to load the whole file is the biggest feature for me
23:01cemerickI think that's "basics" :-)
23:01technomancy(the last of those being the only feature I actually personally implemnted, heh.)
23:01cemericktechnomancy: I've internalized jump-to-definition; I'll have to noodle with the inspector though. This clojure-test-mode sounds interesting.
23:01ozatamanduck1123: still getting the same error :(
23:01alandipertbeing able to configure the editor with emacs lisp is fun and compelling for me
23:02ozatamanecb-activate-internal: Symbol's value as variable is void: stack-trace-on-error
23:02technomancythe inspector is not very well-known, but it's handy
23:03cemerickI'm surprised no one mentioned the debug stuff. :-)
23:03duck1123ozataman: remove the entire directory for the other one and restart emacs. What version are you running?
23:03ozatamanduck1123: did that already. emacs 24
23:04technomancycemerick: locals-clearing makes the debug-repl less useful than it could be, though it sounds like hugod is on the job.
23:04technomancyhugod: total crickets from core about that patch though, huh? too bad.
23:04duck1123I haven't had much luck with debugging. Not enough for it to replace dropping a logging macro and running a test
23:05cemerickscottj: isn't that just code completion / show-docs?
23:06cemerick("just" not meant derogatorily — just not what I think of as a namespace browser)
23:06ozatamanduck1123: got it working! needed to remove the perspective package I had and added a (setq stack-trace-on-error t)
23:06scottjcemerick: pretty much, it knows what code's loaded. what else does a namespace browser do?
23:06hugodtechnomancy: some sort of comment would be nice, even if just to say that it is never going to happen
23:06technomancywell the full on cdt debugger is one thing, but the swank.core/break to pull up the debug repl with locals access is built-in to swank and thus a lot easier to use.
23:06duck1123ozataman: nice
23:07cemerickhugod: the locals-clearing stuff is squarely in the realm of the "debug builds" issue, which is long-standing and a high priority AFAIK
23:07hugodcemerick: not really - it can be accomplished with a two line patch
23:08hugodin a much more selective way than a debug build could provide
23:08cemerickscottj: "browser" implies to me a persistent, constantly-updated view of the loaded namespaces and vars
23:09cemerickhugod: "debug builds" is a catch-all for alternative compilation modes as well as potentially different packages. I doubt any patch on that topic would be taken until the powers that be settle on a strategy in general.
23:10cemericke.g. *assert* is also just a binding, but has sorta-broken semantics IMO, and that's in scope for "debug builds"
23:11cemerickOK, so what about emacs/SLIME is absolute hell when it comes to Clojure programming?
23:11hugodcemerick: sure - some discussion would still be welcome
23:11scottjnothing
23:12technomancycemerick: on OS X, the $PATH for GUI-launched programs doesn't match the configured $PATH for the shell
23:12technomancyso you get a lot of confused users who can't launch swank servers
23:12technomancythe other huge remaining pain point is attempting to maintain a config that works for CL and Clojure at the same time
23:13cemerickmmm, that's super out of scope IMO :-)
23:13scottjwhich I've done pretty easily for years
23:13alandipertcemerick: is this for the book?
23:13technomancyscottj: ok, I'll start referring folks to you =)
23:13cemerickalandipert: ostensibly :-)
23:13alandipertit may be worth noting that emacs is still quite useful even with just inferior-lisp + paredit
23:14alandipertthat's what i tend to recommend to people i show stuff, knowing they'll stumble into slime later
23:14cemerickI'm still not sure if I want to write the (short) section on emacs. I might just punt to Brian, but I want to know the lay of the land in any case.
23:14technomancyyeah, inf-lisp is underrated
23:14technomancycemerick: I'd be happy to review either way
23:15cemerickalandipert: Point taken; I'd like to make sure the emacs road is presented in its fullest glory in any case though.
23:15alandipertcemerick: be sure to have a little break-out at the corner of a page that shows off nyan-cat mode
23:15scottjyou can easily setup clojurescript to use inf-lisp and clojure to use slime and with browser-repl C-x C-e to eval code backend or frontend
23:15cemericktechnomancy: Noted. Once the section is drafted, I'll send you a PDF. Thanks. :-)
23:15cemerickalandipert: :-)
23:15cemerickWe're a meme-free book, I think.
23:16cemerickaside from the "WTF are you doing not using Clojure" meme, of course
23:17scottjAn emacs feature that hasn't been mentioned is clojure-refactoring which has been dorment for a long time but recently got several patches
23:17cemerickscottj: that's editor-independent, no?
23:17scottjI don't know it has a emacs UI
23:18scottjI know it's part clojure and part emacs lisp, not sure if anyone's hooked the clojure part into another editor
23:19technomancythat might be a bit too edge for the book
23:21technomancybut it would be cool if it were better-known
23:21cemerickYeah, we're not going in-depth with the tool-specific stuff; just a page or two for emacs and eclipse to give people a flavor of each so they have an idea of what to dig at first.
23:22cemerickWe do go deep with foundational REPL techniques, principles, etc.
23:22cemerickThe chapter is titled "REPL-oriented programming", actually.
23:23scottjI agree making it an emacs slime tutorial does't make sense, but if you say "Eclipse has debugging, refactoring, etc." I didn't want you to leave off refactoring from the EMacs list :)
23:23cemerickEclipse doesn't have Clojure refactoring. :-)
23:23scottjmaybe you should point that out so they know where to look :)
23:24scottjEclipse has debugging stepping through clojure and java code right?
23:24alandipertcemerick: good luck on book, looking forward to it nyan or not
23:24alandipertg'night all
23:24cemerickalandipert: Thanks. It'll be done-done-done this month.
23:24technomancyoh wow; that's great
23:24alandipertrockin!
23:25cemerickscottj: Yeah; every JVM debugger should be able to do that.
23:25scottjdone-done-done-not-really-done-meaning-not-edited-right? :)
23:26cemerickscottj: Not edited by the publisher's people, but I'm too much of a perfectionist for there to be that much to do.
23:26cemerickThat sounded more egotistical than I intended. :-P
23:26scottjcemerick: after joy of clojure I don't think I'll buy another non-edited book unless I really must have it now
23:26cemerickoh?
23:28scottjI posted maybe 10 things about chapter 2 (not sure exact chapter) and then said wtf why am I working as an editor for free
23:28cemerickoh, via the MEAP, etc.
23:28scottjyeah. published version is much better
23:29technomancycemerick: is that a sand piper on the cover?
23:29cemerickRight. Well, I'm sure they'll have their way with it — but I'm happy enough to close the book on the project mentally once I hand the thing over.
23:29cemericktechnomancy: painted snipe
23:30cemerickvery similar, IIRC
23:30technomancyoh, like from the movie Up =)
23:31cemerickhrm, perhaps, don't remember the bird's name
23:32cemerickI need to re-watch that at some point; it was only afterwards that I decided I liked it.
23:33technomancyI think it's my favourite of Pixar's. great pathos.
23:34cemerickWall-E has been my favorite so far, I think.
23:34cemerickMore because of the Wall-E/Eva connection than the rest of it.
23:35technomancyyeah. if you counted the first half on its own it would probably be my favourite.
23:36cemerickIf they hadn't used the live-action bits for the taped messages from earth, I wouldn't need to qualify my preference. :-/