Skip to content

Instantly share code, notes, and snippets.

@mikeananev
Created December 2, 2018 21:09
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikeananev/f5138eeee12144a3ca82136184e7a742 to your computer and use it in GitHub Desktop.
Save mikeananev/f5138eeee12144a3ca82136184e7a742 to your computer and use it in GitHub Desktop.
simple Jline3 clojure demo
(ns jline3.demo
(:gen-class)
(:import (org.jline.terminal TerminalBuilder Terminal$SignalHandler Terminal)
(org.jline.reader LineReaderBuilder LineReader LineReader$Option)
(org.jline.reader.impl LineReaderImpl)
(org.jline.utils InfoCmp$Capability)))
(defn new-terminal
"creates new JLine3 Terminal.
returns terminal object"
^Terminal [term-name]
(let [terminal (-> (TerminalBuilder/builder)
(.system true)
(.name term-name)
(.encoding "UTF-8")
(.signalHandler (Terminal$SignalHandler/SIG_IGN))
(.build))]
terminal))
(defn new-line-reader
"creates new terminal line reader.
returns ^LineReader object."
^LineReader [terminal]
(let [line-reader (-> (LineReaderBuilder/builder)
(.terminal terminal)
(.build))]
line-reader))
(defn -main
"entry point to program."
[& args]
(println "starting terminal...")
(let [t (new-terminal "jline demo")
prompt "prompt> "
lr (new-line-reader t)
continue? (atom true)]
(while @continue?
(let [line (.readLine lr prompt )]
(.redrawLine ^LineReaderImpl lr)
(when (= "quit" line)
(reset! continue? false))))))
{:paths ["resources" "src"]
:extra-paths ["resources"]
:deps {org.clojure/clojure {:mvn/version "1.10.0-RC2"}
org.jline/jline {:mvn/version "3.9.0"}}
:aliases {:test {:extra-paths ["test"]
:extra-deps {org.clojure/test.check {:mvn/version "RELEASE"}}}
:build {:extra-deps {luchiniatwork/cambada {:mvn/version "1.0.0"}}
:main-opts ["--main" "cambada.uberjar"
"--main" "jline3.demo"
"--app-group-id" "com.middlesphere"
"--app-artifact-id" "jline3-demo"
"--app-version" "0.1"
"--aot" "jline3.demo"
"--no-copy-source"]}
:runner {:extra-deps {com.cognitect/test-runner
{:git/url "https://github.com/cognitect-labs/test-runner"
:sha "76568540e7f40268ad2b646110f237a60295fa3c"}}
:main-opts ["-m" "cognitect.test-runner"
"-d" "test"]}}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment