- Dec 15, 2011
-
-
Christophe Rhodes authored
Check for a zero-element character vector return from readChar. (This is not documented as the EOF return value, no, but it makes sense). Also commit bug reports #18 and #19, and some README rearrangement.
-
- Dec 09, 2011
-
-
Christophe Rhodes authored
Calculate the length of the output to emacs using nchar(type="bytes") This makes help files sort-of work again
-
Christophe Rhodes authored
Allows slime-repl to start again. I've said "utf-8-unix" but that is almost certainly a lie; I have no real idea how R handles encodings of text. Simply passing in "ë" to the R slime repl breaks things without too much effort.
-
- Oct 23, 2011
-
-
Christophe Rhodes authored
This is important because e.g. the repl evaluation happens in the global environment, so errors on code called from the repl will pull up a backtrace with that evaluation frame, which can be inspected for locals. But printing out all the locals is a hugely expensive and not helpful thing to do.
-
Christophe Rhodes authored
editing thinko: need tmp$value (not just value)
-
- Sep 19, 2011
-
-
Christophe Rhodes authored
tryCatch is R's handler-case. (Spent some time wondering why withCallingHandlers wasn't working, but that's handler-bind.)
-
- Sep 13, 2011
-
-
Christophe Rhodes authored
otherwise extended regexp metacharacters, particularly ".", get interpreted as those metacharacters rather than literals. (bug #12)
-
- Sep 10, 2011
-
-
Christophe Rhodes authored
It's easy really; just iterate over expressions. Resolves bug #10.
-
Christophe Rhodes authored
Makes C-c C-r substantially less painful, and also produces slightly fewer surprises at the REPL. (resolves #5)
-
- Aug 20, 2011
-
-
Christophe Rhodes authored
depends on swank.R itself being source()d with chdir=TRUE, but doesn't break any previously-working use case.
-
- Apr 06, 2011
-
-
Christophe Rhodes authored
There's a race condition, I think, in between writing the socket port and running the socket server; it might be as simple as reordering the writing and the socket opening, but strange things happened once when I did that.
-
Christophe Rhodes authored
Because of our vaguely dodgy heuristic for finding the "defun" to evaluate, C-c C-c is not terribly useful. This allows at least C-c C-r to be used without thinking.
-
Christophe Rhodes authored
also retain source information in swank:load-file for maximum emacs goodness.
-
Christophe Rhodes authored
Parse them into TRUE and FALSE in the lisp->R translator
-
Christophe Rhodes authored
-
Christophe Rhodes authored
-
- Oct 08, 2010
-
-
Christophe Rhodes authored
This fixes bug #1. It is somewhat on the risky side given that there are current known protocol problems in the presence of non-ASCII encodings, but it does make working in the slime repl much more pleasant.
-
Christophe Rhodes authored
Wow, this was hard. parse() constructs a vector with mode "expression", consisting of multiple, possibly nested calls. Scattered throughout this structure are srcrefs with absolute locations. This means that we need to walk the parsed data structure and adjust every srcref that we can find, giving it an offset based on the location information passed to compile-string-for-emacs (which requires bleeding-edge 2010-10-08 slime, because earlier versions don't pass line/column information in the position argument). But we can't simply adjust the "srcref" attribute on our parsed data structure, because R tries very hard to be pure. Instead we need to return a copy with the right modifications (but preserving everything else of importance). It's straightforward once you know how, but there were many painful missteps to get to this point. Still, now M-. works on function names assigned with C-c C-c in source buffers.
-
- Oct 07, 2010
-
-
Christophe Rhodes authored
In particular, include enough of a kludge to be able to handle both relative and absolute paths.
-
Christophe Rhodes authored
-
Christophe Rhodes authored
Firstly, only parse, don't source, as that seems to be the protocol (the emacs side is responsible for requesting a load if desired). Secondly, the protocol is also to return a compilation-result structure rather than just TRUE, so do that too.
-
- Oct 01, 2010
-
-
Christophe Rhodes authored
Easy, peasy. The only trick here is to use parse() in the case that compile-file-for-emacs is not being asked to load the `compiled' file.
-
Christophe Rhodes authored
It was surprisingly hard to intuit getwd() and setwd(), what with apropos("dir") and apropos("cwd") failing. Nevertheless, they exist and function, so use them for the interface (but not slimefun) functions.
-
Christophe Rhodes authored
R has capture.output as equivalent to with-output-to-string, so use it. printToString, used by the slime-repl, now reverts back to calling print. New function prin1ToString, used by swank:interactive-eval and swank:eval-and-grab-output, uses deparse.
-
- Sep 16, 2010
-
-
Christophe Rhodes authored
default makeReplResult function doing the standard (:write-string value :repl-result) thing for the REPL.
-
- Sep 12, 2010
-
-
Christophe Rhodes authored
Reified environments make quite a lot of this fairly easy...
-
Christophe Rhodes authored
-
Christophe Rhodes authored
Stands a chance of making the inspector not utterly annoying
-
- Sep 11, 2010
-
-
Christophe Rhodes authored
It took me quite some time to remember that parse returns a list of expressions rather than just a single expression...
-
- Sep 10, 2010
-
-
Christophe Rhodes authored
Wow, nearly working. There's some way of causing R to get into the proper debugger; not sure how to reproduce it yet.
-
- Sep 09, 2010
-
-
Christophe Rhodes authored
-
Christophe Rhodes authored
Use an environment for istate rather than a list implement swank:inspector-nth-part and swank:inspect-nth-part
-
Christophe Rhodes authored
-
Christophe Rhodes authored
Implement enough that C-c I begins to work, at least for values like list(1,2,3). The resulting inspector on the emacs side apparently has no features, and an error message results on quitting the inspector because I've only implemented `swank:init-inspector`, and not `swank:quit-inspector`. Still, good enough to checkpoint.
-
- Sep 07, 2010
-
-
Christophe Rhodes authored
Use it in swank:interactive-eval and swank:eval-and-grab-output
-
Christophe Rhodes authored
Possibly, anyway. I think the semantics are right. Use it in printToString and in swank:eval-and-grab-output.
-
- Sep 03, 2010
-
-
Christophe Rhodes authored
These are (in principle, at least) really, really easy.
-
Christophe Rhodes authored
instead of using print(), use str(). Also, be even more cautious about cleaning up in printToString; previously, errors in printing would lead to a sink to a closed fifo... Printing is still not really right, and I forsee that we will end up writing our own printer to get something more lispy. But at least this approach tends not to dump huge tables into the REPL.
-
Christophe Rhodes authored
in readPacket, call socketSelect() before actually trying to read on the connection. This seems to allow R to update graphics windows and other such niceties. It would be nice to be able to preserve the (inferior) R REPL as well, but I haven't yet discovered whether that's possible.
-
- Sep 01, 2010
-
-
Christophe Rhodes authored
A simple implementation, only looking for a single function definition (no methods, whether S3 or S4, or indeed anything else). Enough to support M-., though.
-