Skip to content

Rework the REPL to use comint #709

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
shosti opened this issue Aug 7, 2014 · 20 comments
Closed

Rework the REPL to use comint #709

shosti opened this issue Aug 7, 2014 · 20 comments

Comments

@shosti
Copy link

shosti commented Aug 7, 2014

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). A cider-repl-show-maximum-output variable would probably be enough, although it might be nice to have some more configuration options à la comint—what are your thoughts? (Also, are there any plans to eventually base cider-repl-mode off of comint-mode?) I'd be happy to put together a PR for this.

@vspinu
Copy link
Contributor

vspinu commented Aug 7, 2014

👍 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?

@bbatsov
Copy link
Member

bbatsov commented Aug 7, 2014

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!

@shosti
Copy link
Author

shosti commented Aug 7, 2014

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).

@bbatsov
Copy link
Member

bbatsov commented Aug 7, 2014

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.

@bbatsov bbatsov changed the title Make repl auto-scrolling configurable Rework the REPL to use comint Aug 7, 2014
@bbatsov
Copy link
Member

bbatsov commented Sep 15, 2014

@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.

@vspinu
Copy link
Contributor

vspinu commented Sep 15, 2014

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.

@sooheon
Copy link

sooheon commented Dec 11, 2014

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.

@antonyshchenko
Copy link

Yes, integration with evil-mode in repl would be awesome.

@bbatsov
Copy link
Member

bbatsov commented Dec 13, 2014

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.

@bbatsov
Copy link
Member

bbatsov commented Aug 11, 2015

This important ticket is still looking for a volunteer to tackle it.

@GordonGustafson
Copy link
Contributor

@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?

@johnbendi
Copy link

What about @shosti the OP who promised a PR?

@bbatsov
Copy link
Member

bbatsov commented Aug 13, 2015

I think that nobody actually got anywhere with this task, so @GordonGustafson can definitely start from scratch.

@vspinu
Copy link
Contributor

vspinu commented Aug 13, 2015

@GordonGustafson, I haven't done anything concrete.

@shosti
Copy link
Author

shosti commented Aug 13, 2015

@GordonGustafson yeah, never got around to looking at this (as you can probably surmise).

@johnv02139
Copy link
Contributor

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?

@bbatsov
Copy link
Member

bbatsov commented Aug 26, 2016

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.

@vspinu
Copy link
Contributor

vspinu commented Aug 26, 2016

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.

@johnv02139
Copy link
Contributor

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.

@bbatsov
Copy link
Member

bbatsov commented Oct 2, 2016

OK, I'll close this ticket then. We've got more important tasks to do anyways.

@bbatsov bbatsov closed this as completed Oct 2, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants