Skip to content
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

Support for REPLs (irb, ipython, psql, node, mongosh, etc.) #4082

Open
dannyneira opened this issue Jan 17, 2024 · 26 comments
Open

Support for REPLs (irb, ipython, psql, node, mongosh, etc.) #4082

dannyneira opened this issue Jan 17, 2024 · 26 comments
Labels
Feature requests Feature Requests

Comments

@dannyneira
Copy link
Member

dannyneira commented Jan 17, 2024

Describe the solution

** Support for the running list of non-shell based REPLs without Warp features ( i.e. Blocks, Autocomplete) **

irb, ipython, pipenv, psql, node, mongosh, rails, julia, iex, nix-shell, etc.

How does this Feature request thread work?

We've included comments below for each of the REPLs that has been requested, please 👍 each comment to signal interest in that REPL.

If the REPL isn't on the list, please add a comment for it along with a brief description of the REPL in a similar format (e.g. "Support REPL command: REPL description")

Subscribe to get updates on the status of this request, the Warp team will post any comments if one of the REPLs support is being worked on.

Please avoid commenting with the same REPLs, or comments like "+1 for ipython" as they create spam on the thread.

Note this is a different issue than support for shell-based "subshells", which we launched and you can learn more about here.

@dannyneira dannyneira added the Feature requests Feature Requests label Jan 17, 2024
@dannyneira
Copy link
Member Author

dannyneira commented Jan 17, 2024

Support irb: Interactive Ruby (IRB) is a REPL for the Ruby programming language. It allows you to interactively execute Ruby code and see the results immediately.

@dannyneira
Copy link
Member Author

dannyneira commented Jan 17, 2024

Support ipython: IPython is an enhanced interactive shell for Python. It provides additional features and improvements over the default Python REPL, such as syntax highlighting, tab completion, and support for running shell commands.

Show support for ipython REPL on the dedicated issue #4400

@dannyneira
Copy link
Member Author

Support pipenv: pipenv is a tool for managing Python virtual environments and package dependencies. It combines the functionality of pip (the package installer for Python) and virtualenv (a tool for creating isolated Python environments) into a single command-line interface.

@dannyneira
Copy link
Member Author

Support psql: psql is the interactive terminal for PostgreSQL, a popular open-source relational database management system. It allows you to execute SQL queries, manage databases, and interact with the PostgreSQL server.

@dannyneira
Copy link
Member Author

Support node: node is the command-line interface for running JavaScript code using Node.js. It provides an interactive environment where you can execute JavaScript code and experiment with Node.js modules.

@dannyneira
Copy link
Member Author

Support mongosh: mongosh is the official MongoDB Shell, which provides an interactive environment for working with MongoDB databases. It allows you to execute queries, perform CRUD operations, and interact with the MongoDB server.

@dannyneira
Copy link
Member Author

Support rails: Rails is a web application framework written in Ruby. It provides a set of tools and conventions for building web applications, including a command-line interface (CLI) that allows you to generate code, run migrations, and start a development server.

@dannyneira
Copy link
Member Author

Support nix-shell: nix-shell is a command-line tool for creating and managing isolated development environments using the Nix package manager. It allows you to define a set of dependencies and configurations in a Nix expression, and then launch a shell with those dependencies available.

@dannyneira
Copy link
Member Author

dannyneira commented Jan 17, 2024

Support julia: Julia is a high-level, high-performance programming language for technical computing. It is designed to be fast and efficient while providing a syntax that is familiar to users of other technical computing environments. Julia also comes with its own REPL, which is called the Julia REPL. It allows you to interactively write and execute Julia code.

@dannyneira
Copy link
Member Author

dannyneira commented Jan 17, 2024

Support iex: iex stands for Interactive Elixir. It is the REPL for the Elixir programming language. It provides an interactive environment for writing and executing Elixir code. IEx is specifically designed for Elixir and offers features like code evaluation, tab completion, documentation lookup, and shell command execution.

@mib32
Copy link

mib32 commented Jan 18, 2024

Hopefully, it includes support of REPLs inside of subshells (e.g. calling irb when inside k8s instance)

@JonathanDCohen
Copy link

JonathanDCohen commented Jan 18, 2024

Support duckdb: it's based on the SQLite command line shell, so CLI-client-specific functionality is similar to what is described in the SQLite documentation although DuckDB’s SQL syntax follows PostgreSQL conventions.

@kennyjwilli
Copy link

Support clojure / clj: the official REPL for the Clojure programming language. It provides an interactive environment for executing Clojure code.

@rgbkrk
Copy link

rgbkrk commented Feb 16, 2024

Hey there, I'm an IPython dev. I'd love to learn how to make IPython work well with warp (protocols, etc.).

@paperdave
Copy link

i've been working on rewriting bun repl (javascript repl). something i've been wondering about from the perspective of a TUI application developer, is possible to integrate into warps subshell into it, where my terminal application can send and recieve events for things like auto-completion.

i noticed that for bash there is this special message warp can use to activate a subshell

print '\eP$f{ "hook": "SourcedRcFileForWarp", "value": { "shell": "bash" } }\x9c'

which triggers some magic internally, likely specifically designed for warps integration with bash.

it would be very cool if this could be used by a TUI application developer to deeply integrate the blocks and autocomplete feature into the application. but unfortunately, i dont think it is yet possible to do any custom integrations. the warp docs do not seem to have any technical information about what "warpify" actually does; it seems to be a private protocol that outsiders are not meant to use.

it would be very cool to have something like:

print '\eP$f{ "hook": "InitShell", "value": { "shell": "custom" } }\x9c'

along with many other input and output escape sequences to communicate rich terminal features like blocks and request.

is something like this in scope for this issue? or should i raise a separate issue for this "custom" shell integration.

@rodbecc
Copy link

rodbecc commented Feb 25, 2024

Support mycli: a command line interface for MySQL, MariaDB, and Percona with auto-completion and syntax highlighting.

@dannyneira
Copy link
Member Author

dannyneira commented Feb 28, 2024

Support bun repl: Bun is an all-in-one toolkit for JavaScript and TypeScript apps.

Show support for bun REPL on the dedicated issue #4401

@dannyneira
Copy link
Member Author

Hey @rgbkrk & @paperdave, Thanks for reaching out and offering to help support ipython and bun repl on Warp!

We do have plans to support REPLs and a more explicitly designed and thought-out extensibility effort on the roadmap. We plan to dedicate resources to work on this later this year.

We’d love to work with you on them and we’ve opened separate issues to track support for each REPL here. ipython and bun.

We’ll also link them in the meta issue for REPL support so that users can track the progress. Please feel free to reach out with any comments or concerns on the respective issues.

@mcmahanp
Copy link

mcmahanp commented Mar 5, 2024

Support radian: an alternative console for the R program with multiline editing and rich syntax highlight. One would consider radian as a ipython clone for R, though its design is more aligned to julia.

@marius311
Copy link

marius311 commented Mar 6, 2024

Its not clear to me the scope of the REPL support imagined in this issue, but I could imagine some fairly fancy and awesome options. But with the "later this year" time scales, I wonder whether there is not some very simple and quick stopgap that would make things 90% usable at least? The only problem with the two I've played with (ipython and julia) is basically simply that the clear screen keyboard shortcut ("Ctrl+L") scrolls the REPL to the wrong spot, or leaves it covered up, whch is unfortunately a serious usability killer. Conversely, an explicit clear is fine, as is everything else. Maybe it would be possible to fix that in the short-term and leave more serious integration to later?

@dingtang2008
Copy link

How about https://orbstack.dev/ which using orb commad to enter docker or vm?

@natebrunette
Copy link

If this will take a while to implement, could we at least disable blocks while a REPL is active? If you accidentally select a block (which I do all the time) it's really hard to be able to input again because the input block is selected when you click on it. I think double clicking usually works, but it's hard to remember to do that.

@dannyneira dannyneira changed the title Support for REPLs Support for REPLs (irb, ipython, pipenv, psql, node, mongosh, etc.) Jun 4, 2024
@dannyneira dannyneira changed the title Support for REPLs (irb, ipython, pipenv, psql, node, mongosh, etc.) Support for REPLs (irb, ipython, psql, node, mongosh, etc.) Jun 12, 2024
@ridgeworks
Copy link

Support swipl: SWI-Prolog is a popular, open source implementation of Prolog.

@dannyneira
Copy link
Member Author

Support sqlite3: I'd love to use the full power of Warp to work with sqlite databases on remote machines. Today I can 'warpify' sqlite3, but this does not separate blocks for each SELECT, does not allow me to graphically edit the SQL statement, does not help me use built-in autocomplete features of sqlite3.

@dannyneira dannyneira pinned this issue Sep 5, 2024
@frazze-jobb
Copy link

frazze-jobb commented Oct 2, 2024

Support erl: erl is the REPL for the Erlang programming language. It provides an interactive environment for writing and executing Erlang code. Erl is specifically designed for Erlang and offers features like code evaluation, tab completion, documentation lookup, and shell command execution.
Feel free to reach out to me if you need something from us, the Erlang maintainers @dannyneira

@c0des1ayr
Copy link

Support cling: Cling is an interactive C++ interpreter, built on the top of LLVM and Clang libraries. To have the ability to test C++ code for performance without having to (re)compile constantly would make iterating through CI/CD workloads much more effective.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature requests Feature Requests
Projects
None yet
Development

No branches or pull requests