{"id":13862838,"url":"https://github.com/sanel/monroe","last_synced_at":"2025-09-08T12:36:35.471Z","repository":{"id":20972592,"uuid":"24261542","full_name":"sanel/monroe","owner":"sanel","description":"Clojure nREPL client for Emacs","archived":false,"fork":false,"pushed_at":"2022-12-21T22:09:23.000Z","size":214,"stargazers_count":161,"open_issues_count":5,"forks_count":21,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-08-05T06:06:22.614Z","etag":null,"topics":["clojure","emacs","emacs-lisp","monroe","nrepl"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sanel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-20T11:51:03.000Z","updated_at":"2024-08-04T16:34:32.000Z","dependencies_parsed_at":"2023-01-11T21:02:36.316Z","dependency_job_id":null,"html_url":"https://github.com/sanel/monroe","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanel%2Fmonroe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanel%2Fmonroe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanel%2Fmonroe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanel%2Fmonroe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sanel","download_url":"https://codeload.github.com/sanel/monroe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224050918,"owners_count":17247379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","emacs","emacs-lisp","monroe","nrepl"],"created_at":"2024-08-05T06:01:53.759Z","updated_at":"2024-11-11T04:44:17.867Z","avatar_url":"https://github.com/sanel.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"# Monroe - Clojure nREPL client for Emacs\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.github.com/sanel/monroe/master/images/shot.png\"\n     alt=\"Monroe\" title=\"Monroe screenshot\"\u003e\n\u003c/p\u003e\n\nMonroe is [nREPL](https://github.com/nrepl/nrepl) client for\nEmacs, focused on simplicity and easy distribution primarily targeting\nClojure users.\n\nIf you are not familiar with nREPL, it is protocol for accessing\nClojure [REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop) over\nthe network.\n\nIn short, Monroe aims to have:\n\n* easy access to Clojure REPL via nREPL protocol\n* simple installation without any dependencies, except Emacs\n* REPL with colors and history support\n* generic approach - you can use it with other languages than Clojure\n* only REPL for interaction with shortcuts - no funny windows or buffers with errors,\n  messages and other distractions\n\nOn other hand, Monroe is not:\n\n* Clojure IDE like [Cider](https://github.com/clojure-emacs/cider)\n* Kitchen sink that will do Clojure work for you\n\n## Installation\n\nMake sure you have `clojure-mode.el` installed first. You can get it\nfrom Marmalade repository or directly from\n[here](https://github.com/clojure-emacs/clojure-mode).\n\nOfficial Monroe releases you can find on\n[releases](https://github.com/sanel/monroe/releases) page or you can\nget it from Marmalade repository of Emacs packages (you are familiar\nwith Emacs packages, right?).\n\nLatest (and maybe unstable) code you can always get from this\nrepository or MELPA repository of Emacs packages.\n\nIf you get Monroe by downloading official release or by cloning this\nrepository, you can install it by moving `monroe.el` file in\n`$HOME/.emacs.d` folder or any other location listed in Emacs\n`load-path` variable. Installing via Emacs package manager will do\nthis automatically.\n\nIn your\n[Emacs init file](https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html),\nput:\n\n```el\n(require 'monroe)\n(add-hook 'clojure-mode-hook 'clojure-enable-monroe)\n```\n\nThen, in Emacs:\n\n\u003ckbd\u003eM-x monroe [RET]\u003c/kbd\u003e\n\nand follow the question about nREPL server location and port.\n\n### Starting the nREPL server\n\nYou can start the nREPL server straight from Emacs by running:\n\n\u003ckbd\u003eM-x monroe-nrepl-server-start [RET]\u003c/kbd\u003e\n\nand then connect as above.\nBy default Monroe will start Leiningen REPL with command:\n\n`lein trampoline repl :headless`\n\nYou can override this by setting the following variables:\n\n- `monroe-nrepl-server-cmd` - defaults to `lein`\n- `monroe-nrepl-server-cmd-args` - defaults to `trampoline repl :headless`\n- `monroe-nrepl-server-project-file` - defaults to `project.clj` - this is used\n   for finding your project's root and launching the REPL process in that location\n\n#### Boot configuration\n\n(*Note*: these are not verified!)\n\nFor boot, set the following in your `init.el`:\n\n\n```elisp\n(setq monroe-nrepl-server-cmd \"boot\")\n(setq monroe-nrepl-server-cmd-args \"repl -S\")\n(setq monroe-nrepl-server-project-file \"build.boot\")\n```\n\n\n## Keys and shortcuts\n\n### Monroe shortcuts for code buffer\n\nThese shortcuts are valid from code buffer where you edit Clojure\ncode and where *monroe-interaction-mode* is activated.\n\nKeys                | Description\n--------------------|----------------------------\n\u003ckbd\u003eC-c C-c\u003c/kbd\u003e  | Evaluate expression at point.\n\u003ckbd\u003eC-c C-r\u003c/kbd\u003e  | Evaluate region.\n\u003ckbd\u003eC-c C-k\u003c/kbd\u003e  | Evaluate current buffer contents.\n\u003ckbd\u003eC-c C-l\u003c/kbd\u003e  | Load current file from disk.\n\u003ckbd\u003eC-c C-d\u003c/kbd\u003e  | Describe symbol at point, showing documentation in REPL window.\n\u003ckbd\u003eC-c C-n\u003c/kbd\u003e  | Evaluate namespace.\n\u003ckbd\u003eC-c C-b\u003c/kbd\u003e  | Interrupt running job.\n\u003ckbd\u003eM-.\u003c/kbd\u003e      | Jump to definition of var at point.\n\u003ckbd\u003eM-,\u003c/kbd\u003e      | Jump back to where you were before you did `M-.`\n\nNote the difference between \u003ckbd\u003eC-c C-k\u003c/kbd\u003e and \u003ckbd\u003eC-c C-l\u003c/kbd\u003e;\nthe former loads the contents of the buffer and sends them directly\nover the wire; this can differ from the state of the namespace on\ndisk, and doesn't always convey line number information. It loads each\ntop-level form in the file individually, and if one of them fails it\nwill continue compiling the rest. The second one tells the server to\nload the whole file from its disk, so if you are connected to a remote\nserver and have made changes to your local copy, they will not be\nloaded. However, a single exception will halt the whole thing.\n\n### Monroe shortcuts for REPL buffer\n\nThese shortcuts are valid in REPL buffer; also, most of the standard\n*comint-mode* shortcuts should work without problems.\n\nKeys                | Description\n--------------------|----------------------------\n\u003ckbd\u003eC-c C-d\u003c/kbd\u003e  | Describe symbol at point, showing documentation in REPL window.\n\u003ckbd\u003eC-c C-c\u003c/kbd\u003e  | Interrupt running job.\n\u003ckbd\u003eM-.\u003c/kbd\u003e      | Jump to definition of var at point.\n\n## Projects based on Monroe\n\n- [Miracle](https://github.com/Saikyun/miracle) - an Arcadia nREPL client\n\n- [Rail](https://github.com/Sasanidas/Rail)     - a Clojure-less nREPL client\n\n## Bug reports \u0026 patches\n\nFeel free to report any issues you find or you have suggestions for improvements.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanel%2Fmonroe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanel%2Fmonroe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanel%2Fmonroe/lists"}