Comments (2)
Hi, thanks, I'm glad you like it.
I actually use primarily clojure main and deps. Boot is only used for compiling and bundling into the final jar file. It is used mostly for historical reasons. If I find a good library that uses clojure main with deps and works well, I would replace Boot.
To start REPL you can run following from the project directory:
clojure -Sdeps "{:deps {nrepl/nrepl {:mvn/version \"RELEASE\"}}}" -m nrepl.cmdline
It will print out nREPL port to which you can connect from your favorite clojure-enabled editor. Then you can require and evaluate namespaces like usual.
I have a global alias for it so I just type clojure -Anrepl
.
When you run the bundled jar it runs the rebel frontend. You can run it from sources with clojure -m closh.zero.frontend.rebel
. Even simpler frontend is closh.zero.frontend.main
which does not have the fancy interactive mode. So you could start there and follow functions top-to-bottom from there to get an idea how things are put together. Another helpful thing might be to look at the unit tests to see how the functions are called and what are their inputs.
The interactive editing is done using rebel-readline which does all the heavy lifting. It internally uses jline library which is written in Java, so it is not so nice to hack on.
For more advanced things like structural editing I keep my eyes on liquid which is a pure clojure text editor implementation. It is very customizable since everything is just function composition, so I think it should be possible to hook it into closh and implement all the editing features one could imagine. It sound like integrating liquid and closh might be an interesting project to you ;)
I am pretty busy preparing for a talk I will give at ClojureD conference at the end of February. But after that I suppose I could reuse some diagrams from it and write down more detailed documentation.
from closh.
Hey thanks for the reply and the links. I didn't even know there are those key bindings (with scroll-able documentation?! ). Okay, I'll take all these info in and tinker with the code and liquid - my gut tells me I can finish it or at least have some progress before for your talk ;)
from closh.
Related Issues (20)
- Adjacent symbols and strings considered as two tokens
- cd into directory just by typing the name
- Glob not properly expanding in JVM version HOT 1
- shell completion bugs HOT 2
- Redirects do not work correctly when reassigning std descriptors
- Support `cd - to` go to previous directory
- How to set PATH ? HOT 3
- Tab-complete issues with bash integration HOT 1
- SCI/GraalVM port reports wrong line numbers on error
- rebel-readline does not work when compiled with Graal native-image
- Auto-complete woes on macOS 10.12 HOT 1
- Closh requires node version 9, but your version is v12.18.3 HOT 1
- init file use let set multiple value will hang
- Suggestion: structured commands with renderers HOT 3
- Fail fast
- How could I require closh in another environment? HOT 2
- Feature request: nix instructions + nix package integration HOT 1
- depstar is deprecated and archived; switch to tools.build
- Consider upgrading SCI HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from closh.