{"id":32196740,"url":"https://github.com/clojure-vim/neovim-client","last_synced_at":"2025-10-22T02:41:57.079Z","repository":{"id":31040538,"uuid":"34599165","full_name":"clojure-vim/neovim-client","owner":"clojure-vim","description":"Neovim plugin client library for Clojure","archived":false,"fork":false,"pushed_at":"2021-04-13T20:59:45.000Z","size":4963,"stargazers_count":115,"open_issues_count":3,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-20T16:07:44.152Z","etag":null,"topics":[],"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/clojure-vim.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}},"created_at":"2015-04-26T05:25:42.000Z","updated_at":"2025-04-03T10:04:49.000Z","dependencies_parsed_at":"2022-09-05T02:30:34.218Z","dependency_job_id":null,"html_url":"https://github.com/clojure-vim/neovim-client","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/clojure-vim/neovim-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojure-vim%2Fneovim-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojure-vim%2Fneovim-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojure-vim%2Fneovim-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojure-vim%2Fneovim-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clojure-vim","download_url":"https://codeload.github.com/clojure-vim/neovim-client/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojure-vim%2Fneovim-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280368238,"owners_count":26318939,"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","status":"online","status_checked_at":"2025-10-22T02:00:06.515Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-10-22T02:41:51.956Z","updated_at":"2025-10-22T02:41:57.071Z","avatar_url":"https://github.com/clojure-vim.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# neovim-client\n\nA client library for creating Neovim plugins written in Clojure.\n\n[![Repling Neovim](http://img.youtube.com/vi/pCuEDiKXV5Q/0.jpg)](https://www.youtube.com/watch?v=pCuEDiKXV5Q)\n\n## Dependencies\n\n* [Neovim](https://github.com/neovim/neovim)\n\n* [Java Development Kit](http://www.oracle.com/technetwork/java/javase/overview/)\n  (JDK) Standard Edition (SE) version 8\n\n## Usage\n\n### Repl\n\nLaunch Neovim, explicitly setting the `NVIM_LISTEN_ADDRESS`\n\n```\nNVIM_LISTEN_ADDRESS=127.0.0.1:7777 nvim\n\n```\n\nFrom the repository directory:\n\n```\n$\u003e lein repl\nuser=\u003e (def c (tcp-connection))\nuser=\u003e (require '[neovim-client.1.api :as api])\nuser=\u003e (api/command c \":echo 'Hello Neovim!'\")\n...\n```\n\nAlternatively, if you've got tmux installed, you can use run the script\n`./tmux-run-dev.sh`, which will start Neovim, a repl, and execute similar\nsetup code.\n\n### Examples\n\n#### Included Sample Plugin\n\n##### Installation\n\nOne way to install the sample plugin is by running `./deploy-local.sh` script,\nincluded, which copies the sample plugin to `~/.vim/bundle`, and then ensure\nNeovim's runtimepath is set correctly by adding `set\nruntimepath^=~/.vim/bundle/sample-plugin` to `.vimrc`.\n\n##### Running\n\nThis plugin stays running, and maintains state. Additionally, it shows how\nplugins are actually servers, which Neovim can make requests to via\nrpcnotify().\n\n```\n:echo SamplePluginCount()\n```\n\n#### Socket Repl Plugin\n\nA simple alternative to vim-fireplace. Send code in vim buffers to a built-in\nClojure socket repl.\n\nhttps://github.com/jebberjeb/clojure-socketrepl.nvim\n\n## Neovim API Versions (Levels)\n\nNeovim's RPC API is\n[versioned separately](https://github.com/neovim/neovim/pull/5535) from\nNeovim itslef, using a monotonically increasing integer. The API's version is\ntracked using a value called `api_level`, which can be found by examining the\noutput of `:echo api_info()`.\n\nCurrently, levels 0 - 1 are supported.\n\nIn the future, this library can be updated to support a new level by:\n\n* Updating the API metadata `$\u003e nvim --api-info \u003e resources/api-info.mp`\n\n* Generating code from the metadata using `neovim-client.parser/generate`\n\n## Changes\n\n### Version 0.1.0\n\n* Generate code for api_level 0 - 1 from metadata generated using Neovim\nversion 0.2.0\n\n* Hand-written functions moved to `-ext` namespaces\n\n* Added unit tests which use `nvim --embed` process\n\n* Support Unix Domain Sockets\n\n* Verify api_level available on connection\n\n## Future\n\n### Tighter Integration with Neovim\n\nNeovim's strategy for [remote plugins](http://neovim.io/doc/user/remote_plugin.html#remote-plugin) says that it's ok to create a remote plugins as \"arbitrary programs that communicate directly with the high-level Nvim API and are called via [msgpack-rpc]\". That's exactly what the included sample-plugin does (utilizing neovim-client).\n\nHowever, it goes on to outline a better approach, utilizing a \"plugin host\". While neovim-client could potentially fill that role, considerably more work is needed.\n\n### Performance\n\nIndividual plugins can be distributed as jars using AOT compilation. Additionally, porting this client library to Clojurescript would facilitate a fast startup time, via Node.\n\n## License\n\nDistributed under the same license as Neovim.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojure-vim%2Fneovim-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclojure-vim%2Fneovim-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojure-vim%2Fneovim-client/lists"}