[slime-devel] (slime-compilation-finished) doesnt help solving stated goal.

Helmut Eller heller at common-lisp.net
Fri Oct 22 18:45:35 UTC 2010


* Tobias C Rittweiler [2010-10-22 16:24] writes:

> In article <m37hha9w0v.fsf at leonis4.robolove.meer.net>,
>  Madhu <enometh at meer.net> wrote:
>
>> |
>> | So what are you criticizing? that you need to use C-c C-k or that you
>> | can't be bothered to press y?
>> 
>> I wish to use slime-compile-and-load-file to compile and load and a
>> file.  Period.  If I just want to load a file, I'd use slime-load-file.
>> If I just wanted to see warnings/errors I'd use `slime-compile-file'.
>
> The short discussion which eventually resulted in the current 
> behaviour can be viewed here:
>
>   http://thread.gmane.org/gmane.lisp.slime.devel/9905
>
> So there are at least 3 ways of doing things:
>
>   1) C-c C-k compiles and loads the resulting fasl file
>      unconditionally.
>
>      You can compile-only a file (C-c M-k), look at warnings
>      and then explicitly load the file (C-c C-l), too.
>
>      This kind of was the original behaviour except it was not
>      entirely clear to me that all backends actually really
>      implement that behaviour.
>
>
>   2) C-c C-k compiles a file, and loads the resulting fasl
>      IF AND ONLY IF the compilation was successful.
>
>      You can then look at warnings, and explicitly load
>      the file via (C-c C-l) as an explicit after step.
>
>
>   3) C-c C-k compiles a file, and loads the resulting fasl
>      IF AND ONLY IF the compilation was successfull.
>
>      If compilation failed, the user is queried if the
>      resulting fasl should be loaded, or not.
>
>      That's the current behaviour. Using Y-OR-N-P makes it
>      impossible to look at warnings. Using YES-OR-NO-P would
>      kind of allow for that but would still make it a bit
>      awkward (as you're kind of inside a recursive input loop)
>
> Is that an accurate description?

Another way to say it: 1 and 2 are the same except that 1 uses a non-nil
fasl file as success indicator and 2 uses the third return value of
COMPILE-FILE.  There is also an abort restart to return the current
compiler messages to Emacs.

> Are there more viable options?

Perhaps variant 0: try to load non-existing fasl files when COMPILE-FILE
didn't create one.

> For me, it's 2) that sounds most reasonable. I don't like
> 1) because I am totally entrenched in using C-c C-k.
> OTOH, 2) might annoy people who're deeply used to the
> unconditionally loading bit -- in which case 3) is a compromise
> except it makes looking at warnings somewhat unwieldly.

3 does in fact display the warnings buffer; so if the important warning
is (one of) the first there's no need to scroll.  And of course it's
possible to look at warnings simply by pressing n and use C-c C-l later
as in 2.

>
> I also find it surprising that C-c C-c does /not/ do the query
> bit at the moment. Unconditionally loading is annoying in case
> you're working with precious image state (running application),
> and then render your application useless (and lose your state)
> because you recompiled a crucial function with, say, a typo in
> it.

In my mind C-c C-c means compile-to-memory without fasl file.  The
compile-to-temp-file meaning probably also makes sense, but it's not
what C-c C-c was originally intended for.  It's probably also bit tricky
to load a temp-file with C-c C-l.

> In these precious-state circumstances I seldomly use C-c C-k
> in the first place, though, but rather use C-c C-c on a few
> key parts.
>
> What about you?

Make no typos?  Don't write crucial apps?  Or more realistically: complain
to compiler writers not to create/load fasl files for input with read
errors?

Helmut





More information about the slime-devel mailing list