Closed shosti closed 8 years ago
:+1: I would love if cider repl could behave similarly to comint buffers and would use comint customization variables.
Why exactly cider decided not to base its repl on comint?
The REPL code was originally copied from SLIME. It'd be a huge improvement if we switched to comint, but I don't have time to work on that. Help welcome!
I'd be happy to take a look at moving the repl code to comint, although it might take a little while (I'm a little busy right now and I'm not an expert in comint).
geiser's and ielm's source code can used as reference I guess, as they both currently employ comint
.
Using comint would also solve issues like #326.
@vitoshka I think you can find some useful ideas about the comint implemenation here. Sly is a new fork of SLIME using comint based REPL buffers.
Thanks for the pointer. I will have a look at it when I move to comint next week. There are still a couple things I would like to push to CIDER before getting to comint.
Another quality of life improvement if this were to happen would be interaction with evil-mode
. Currently, actions such as escaping out of insert mode into normal mode place the cursor at the start of the REPL prompt. This is a problem when you then send snippets of code from the clojure buffer, it gets inserted before the prompt. Commands like evil-delete-line
do not work, while comint based packages like monroe
or inf-clojure
handle this just fine.
Yes, integration with evil-mode
in repl would be awesome.
Rebasing cider-repl-mode
on top of comint-mode
should solve your problems. I don't think we'll need any more evil-specific support.
This important ticket is still looking for a volunteer to tackle it.
@vspinu did you have any unfinished work on this I should look at if I decide to take a crack at this? Or should I start by looking at ielm source and the comint documentation?
What about @shosti the OP who promised a PR?
I think that nobody actually got anywhere with this task, so @GordonGustafson can definitely start from scratch.
@GordonGustafson, I haven't done anything concrete.
@GordonGustafson yeah, never got around to looking at this (as you can probably surmise).
I think basing it off of comint is a great idea, but for the record, for the main complaint, I added a defcustom in January, cider-repl-scroll-on-output, which can be set to nil to avoid the irritating scrolling. I didn't see this issue at the time.
Is any work ongoing here to use comint?
To my knowledge no one is working on this, so without a volunteer to push it forward it's not going to happen any time soon.
I am not even convinced that it's worth anymore Comint is old and rigid which makes it hard to build a richer interfaces on top of it. So, IMO, if there is ever an effort in this direction, it should be better spent on building a new comint system from scratch.
I would agree it doesn't seem worth reimplementing. I think your (@vspinu) original message made more sense, i.e., "use comint customization variables." I would think we could use the variables and emulate the behavior without sharing implementation.
OK, I'll close this ticket then. We've got more important tasks to do anyways.
This is a really small thing, but the current behavior for the CIDER repl is to always scroll to show maximum output. I don't really like this behavior, and it would be nice if it were configurable (I'm currently hacking around it by redefining
cider-repl--show-maximum-output
—let me know if there's already another way to turn this behavior off). Acider-repl-show-maximum-output
variable would probably be enough, although it might be nice to have some more configuration options à lacomint
—what are your thoughts? (Also, are there any plans to eventually basecider-repl-mode
off ofcomint-mode
?) I'd be happy to put together a PR for this.