{"id":15405076,"url":"https://github.com/razum2um/cljsh","last_synced_at":"2026-01-24T08:32:12.298Z","repository":{"id":102201599,"uuid":"104577264","full_name":"razum2um/cljsh","owner":"razum2um","description":"REPL is the best IDE","archived":false,"fork":false,"pushed_at":"2019-07-19T06:56:33.000Z","size":31,"stargazers_count":15,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-02T02:42:04.331Z","etag":null,"topics":["clojure","ide","repl"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/razum2um.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-23T15:20:29.000Z","updated_at":"2025-03-31T10:42:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"50da4d1f-4787-469c-8daa-9abdb67ab0bf","html_url":"https://github.com/razum2um/cljsh","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":0.06896551724137934,"last_synced_commit":"b2ebe284fea5dce618786111524735c73ff1be63"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/razum2um/cljsh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razum2um%2Fcljsh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razum2um%2Fcljsh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razum2um%2Fcljsh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razum2um%2Fcljsh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/razum2um","download_url":"https://codeload.github.com/razum2um/cljsh/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razum2um%2Fcljsh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28720771,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T08:27:05.734Z","status":"ssl_error","status_checked_at":"2026-01-24T08:27:01.197Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clojure","ide","repl"],"created_at":"2024-10-01T16:14:56.821Z","updated_at":"2026-01-24T08:32:12.284Z","avatar_url":"https://github.com/razum2um.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cljsh\n\nA library which makes your REPL the best IDE ever and promotes totally \"editorless\" approach.\n\nThe ambitious goal is eliminate the code editor at all. REPL should be full autonomous: any declaration should be properly synchronized into the filesystem including proper dependency tree. The runtime is our friend. The code should be self-aware.\n\nIn the future you'll start a repl (even without a project), start hacking, compose your `-main` function and *just* have your project in the fs properly saved, ready to be compiled to jar :)\n\nNote, this is proof of concept for now. Everything will change :)\n\n## Done\n\n- `cljsh.repl/defnc` (define-code) macro allows you preserve fn definition\n- `cljsh.repl/save` fn dumps the code and updates it properly\n- `cljsh.namespaces/add-requires-from-var` fn to patch fn's namespace with required imports\n- `cljsh.deps/install!` fn to add dependency dynamically and update project dependencies inside the lein's project\n\n## Usage\n\n```sh\n(ns cljsh.example)\n(use 'cljsh.repl)\n\n;; define fns using this macro instead of defn\n(defnc f1 [] (println (str \"Any crazy code\" (or true \"even macros\" \"(you know 'or' is a macro)\"))))\n(defnc f2 [] (println (str \"Now use f1:\" (f1))))\n\n;; at some point just save it to the filesystem\n(-\u003e f1 var save)\n(-\u003e f2 var save) ;; no dependency management right now, sorry, note the dependency-first order\n\n;; now hack on any fn\n(defnc f1 [] \"Refactored\")\n\n;; and just save the function again!\n(-\u003e f1 var save)\n\n;; check filesystem contents:\n(-\u003e f2 var var-\u003esym-filename slurp println)\n```\n\nthe output and the content of `src/cljsh/example.clj` should be like this:\n\n```clj\n(clojure.core/ns cljsh.example)\n\n(clojure.core/defn f1 [] \"Refactored\")\n\n(clojure.core/defn f2 [] (println (str \"Now use f1:\" (f1))))\n```\n\nOf course this ns is ready to be used. Check like this:\n\n```\n(require 'cljsh.example :reload)\n(f2)\n;; This will print:\n;; Now use f1:Refactored\n```\n\n## Known limitations\n\nReader macros are written already expanded by repl reader (e.g. `#(pr %)` -\u003e `(fn* [foo#] (pr foo#))`, also `'` -\u003e `quote`, `#'` -\u003e `var`).\nUse function, not reader macros to get pretty dumped fns (expanded are saved also correctly, but look ugly)\n\n## Is this any good?\n\nYes. This library is being developed *absolutely without any editor*.\n\nI started with `clojure` and `com.cemerick/pomegranate` adding dependencies on the fly. Nothing else. Even no shell commands (used `lucid.git` to commit \u0026 push)!\n\n## License\n\nCopyright © 2017 Vlad Bokov\n\nDistributed under the Eclipse Public License either version 1.0 or (at\nyour option) any later version.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazum2um%2Fcljsh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frazum2um%2Fcljsh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazum2um%2Fcljsh/lists"}