{"id":13760628,"url":"https://github.com/rafaeldelboni/cajus-nvim","last_synced_at":"2025-05-10T11:30:46.427Z","repository":{"id":37012373,"uuid":"402874946","full_name":"rafaeldelboni/cajus-nvim","owner":"rafaeldelboni","description":"Basic config to transform your NVIM in a powerful Clojure IDE using fennel, clojure-lsp and conjure.","archived":true,"fork":false,"pushed_at":"2023-08-15T13:36:12.000Z","size":124302,"stargazers_count":163,"open_issues_count":1,"forks_count":21,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-11-09T01:03:50.342Z","etag":null,"topics":["aniseed","clojure","fennel","lsp","nvim","nvim-cmp","packer"],"latest_commit_sha":null,"homepage":"","language":"Fennel","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rafaeldelboni.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}},"created_at":"2021-09-03T19:14:37.000Z","updated_at":"2024-11-05T04:38:50.000Z","dependencies_parsed_at":"2024-01-15T04:12:33.589Z","dependency_job_id":null,"html_url":"https://github.com/rafaeldelboni/cajus-nvim","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaeldelboni%2Fcajus-nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaeldelboni%2Fcajus-nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaeldelboni%2Fcajus-nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaeldelboni%2Fcajus-nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rafaeldelboni","download_url":"https://codeload.github.com/rafaeldelboni/cajus-nvim/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224684655,"owners_count":17352585,"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":["aniseed","clojure","fennel","lsp","nvim","nvim-cmp","packer"],"created_at":"2024-08-03T13:01:14.674Z","updated_at":"2025-05-10T11:30:46.421Z","avatar_url":"https://github.com/rafaeldelboni.png","language":"Fennel","funding_links":[],"categories":["Fennel"],"sub_categories":[],"readme":"\u003cimg src=\"docs/cajus-nvim.png\" width=\"128\" align=\"right\"\u003e\n\n## Archiving this project\nThis project will be archived as the author of Aniseed is making a significant change to how Fennel is used and creating the [nfnl project](https://github.com/olical/nfnl).\n\nA new fennel based configuration based on this is being evaluated to in the future to replace this project.\n\nIf you want to test the new setup please check it on [cajus-nfnl](https://github.com/rafaeldelboni/cajus-nfnl)\n\n# cajus-nvim\nA curvy and juicy neovim configuration following the \"Keep it simple!\" design principle.\n\n## What is this?\nSetup config to transform your NVIM in a powerful Clojure IDE using fennel, clojure-lsp and conjure.\n\n## Prerequisites\nThings you need installed in your OS to use this setup\n- [git](https://git-scm.com/downloads)\n- [nvim](https://neovim.io/)\n- [rg](https://github.com/BurntSushi/ripgrep)\n- [clojure-lsp](https://github.com/clojure-lsp/clojure-lsp)\n- [nerd-fonts](https://www.nerdfonts.com/)\n\n## How to use\n\n**Make sure you backup your current configuration files in `$HOME/.config/nvim` BEFORE running this.**\n\nRun these commands in the root of this repo:\n```bash\n# Delete the current nvim config\nrm -rf $HOME/.config/nvim\n\n# Makes a symbolic link to the files in this repo\nln -sf $PWD/.config/nvim $HOME/.config/nvim\n```\nWhen you start nvim for the first time it will download packer and aniseed and show some errors, thats normal press enter to ignore and go to the nvim console pressing `:` and type `PackerInstall`.\nThis will install all plugins declared in `fnl/config/plugin.fnl`, after packer's panel showing all the plugins where installed, close nvim and open it again, no errors should show up this time.\n\n## Plugins\n - [packer](https://github.com/wbthomason/packer.nvim) *Plugin/package management*\n - [aniseed](https://github.com/Olical/aniseed) *Bridges between fennel and nvim*\n - [conjure](https://github.com/Olical/conjure) *Interactive repl based evaluation for nvim*\n - [telescope](https://github.com/nvim-telescope/telescope.nvim) *Find, Filter, Preview, Pick*\n - [treesitter](https://github.com/nvim-treesitter/nvim-treesitter) *Incremental parsing system for highlighting, indentation, or folding*\n - [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) *Quickstart configurations for the Nvim LSP client*\n - [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) *Autocompletion plugin*\n - [tokyonight-nvim](https://github.com/folke/tokyonight.nvim) *A clean, dark Neovim theme written in Lua*\n - [tpope-vim-sexp-bundle](https://github.com/tpope/vim-sexp-mappings-for-regular-people) *sexp mappings for regular people*\n - [lualine](https://github.com/nvim-lualine/lualine.nvim) *neovim statusline plugin written in pure lua*\n - [luasnip](https://github.com/L3MON4D3/LuaSnip) *Snippet Engine for Neovim written in Lua.*\n\n## Using with other languages\n - [Unity C# Scripts](https://gist.github.com/rafaeldelboni/f09c35e9538ef8510bb5b56a50ce9d82) How to use cajus-nvim as Unity C# Script editor.\n\n## Files\n\n### [init.lua](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/init.lua)\nWrapper responsible for two things:\n  - Download and setup our package manager ([packer.nvim](https://github.com/wbthomason/packer.nvim)) and our fennel helper/interface ([aniseed](https://github.com/Olical/aniseed))\n  - Set the entrypoint for NVIM read our config files, in our case `fnl/config/init.fnl`.\n\n### [fnl/config/init.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/init.fnl)\n- Set basic global vim configurations and general keymaps.\n- Load plugin configuration namespace.\n\n\u003e In this file among other settings I do set the leader key as `space` and local-leader as `,` for the sake of the examples of how use this configuration I will use this as basis for the commands.\n\n\n### [fnl/config/plugin.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/plugin.fnl)\nHere we define the plugins we want packer to download and load for us, we define here a private function called `use`\nwhich will search in the plugin map for the keyword `:mod` and load the namespace defined in its value.\n\nFor example in the line we define that we need telescope we have this map:\n```clojure\n  :nvim-telescope/telescope.nvim {:requires [:nvim-lua/popup.nvim\n                                             :nvim-lua/plenary.nvim]\n                                  :mod :telescope}\n```\nThis will state to packer download `nvim-telescope/telescope.nvim` and all the required plugins in `:requires` and search for the namespace `telescope`\nin file located in the following path `fnl/config/plugin/telescope`, where I usually add plugin specific configuration like keymaps and settings.\n\n### [fnl/config/plugin/conjure.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/plugin/conjure.fnl)\nConjure specifics settings, I like to remap the doc work keymap to be `\u003clocalleader\u003eK` instead the only `K`, to not conflict with the LSP docs `K`.\n\n### [fnl/config/plugin/telescope.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/plugin/telescope.fnl)\nSettings like ignore `node_modules` and everything in `.gitignore` to be listed in the file finder.\nKeymaps:\n - `\u003cleader\u003eff` open the find files\n - `\u003cleader\u003efg` open the fuzzy finder\n - `\u003cleader\u003efb` open the find open buffer\n - `\u003cleader\u003efh` open the nvim help fuzzy finder\n\n### [fnl/config/plugin/treesitter.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/plugin/treesitter.fnl)\nSettings to select which treesitter's features we want enabled and which language extension we want to ensure they will be always installed.\n\n### [fnl/config/plugin/lspconfig.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/plugin/lspconfig.fnl)\nAll about nvim's lsp settings and keymaps.\n\n#### Settings:\n\n- In the first session, we define which symbols to show for lsp diagnostics.\n- Later we describe which features and server settings we want to enable/customize.\n  - Handler defines features and how we want to render the server outputs.\n  - Capabilities we link with our autocompletion plugin (nvim-cmp), to say to the lsp servers that we have this feature enabled.\n  - On_Attach we customize our interaction with the LSP server, here we define the following keymaps:\n    - `gd` Go to definition\n    - `K` Show documentations\n    - `\u003cleader\u003eld` Function declarations\n    - `\u003cleader\u003elt` Type Definitions\n    - `\u003cleader\u003elh` Signature Help\n    - `\u003cleader\u003eln` Rename\n    - `\u003cleader\u003ele` Show line diagnostics\n    - `\u003cleader\u003elq` Show all diagnostics information\n    - `\u003cleader\u003elf` Auto format\n    - `\u003cleader\u003elj` Go to next diagnostic\n    - `\u003cleader\u003elk` Go to previous diagnostic\n    - `\u003cleader\u003ela` Open code actions menu (Using telescope plugin interface)\n    - `\u003cleader\u003ela` Open code actions menu for the selected text in **VISUAL mode** (Using telescope plugin interface)\n    - `\u003cleader\u003elw` Open workspace diagnostics list (Using telescope plugin interface)\n    - `\u003cleader\u003elr` Show all references list for item under the cursor (Using telescope plugin interface)\n    - `\u003cleader\u003elr` Show all implementations list for item under the cursor (Using telescope plugin interface)\n- Lastly we configure to use all settings above in clojure-lsp server instance.\n\n### [fnl/config/plugin/cmp.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/plugin/cmp.fnl)\nHere settings of which sources we want to show up in the autocomple menu like (conjure, lsp, buffer) and some mapping to navigate in the menu.\n\n### [fnl/config/plugin/theme.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/plugin/theme.fnl)\nTheme settings like style and comment style.\n\n### [fnl/config/plugin/sexp.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/plugin/sexp.fnl)\nSettings for vim-sexp like enabling it for another lisp languages like Fennel and Jannet\n\n### [fnl/config/plugin/lualine.fnl](https://github.com/rafaeldelboni/cajus-nvim/blob/main/.config/nvim/fnl/config/plugin/lualine.fnl)\nSettings for lualine status line like some theme overides and setting what will be shown in the line.\n\n## Features\nSome gifs showing how it works.\n\n### Telescope - Find Files\n![telescope-find-files](docs/telescope-find-files.gif)\n**`\u003cleader\u003eff`**\n\n### Lsp - Loading\n![lsp-loading](docs/lsp-loading.gif)\n**`on startup`**\n\n### Lsp - Syntax check\n![lsp-syntax-check](docs/lsp-syntax-check.gif)\n**`\u003cleader\u003ele`**\n\n### Lsp - Go to definition\n![lsp-go-to-definition](docs/lsp-go-to-definition.gif)\n**`gd`**\n\n### Lsp - Document/Signature Help\n![lsp-document](docs/lsp-document.gif)\n**`K`/`\u003cleader\u003elh`**\n\n### Lsp - Find definition/references\n![lsp-find-references](docs/lsp-find-references.gif)\n**`\u003cleader\u003elr`**\n\n### Lsp - Formatting\n![lsp-format](docs/lsp-format.gif)\n**`\u003cleader\u003elf`**\n\n### Lsp - Code actions\n![lsp-code-actions](docs/lsp-code-actions.gif)\n**`\u003cleader\u003ela`**\n\n### Lsp - Refactorings\n![lsp-refactorings](docs/lsp-refactorings.gif)\n**`\u003cleader\u003ela`**\n\n### Lsp - Rename\n![lsp-rename](docs/lsp-rename.gif)\n**`\u003cleader\u003eln`**\n\n### Conjure - Eval\n![conjure-eval](docs/conjure-eval.gif)\n**`\u003clocalleader\u003eer`**\n\n### Conjure - Repl\n![conjure-repl](docs/conjure-repl.gif)\n**`\u003clocalleader\u003elv`**\n\n### Conjure - Document\n![conjure-document](docs/conjure-document.gif)\n**`\u003clocalleader\u003eK`**\n\n### Completion\n![auto-complete](docs/auto-complete.gif)\n\n## Etymology\nCajus is the Portuguese for cashews, which is a fitting name because the format of its nuts reminded me of a parenthesis.\n\n## Contributing\nIf you find any dead links, misinformation or any improvements in this documents at all [Emails](https://github.com/rafaeldelboni), [PRs](https://github.com/rafaeldelboni/cajus-nvim/pulls) and [Issues](https://github.com/rafaeldelboni/cajus-nvim/issues) are highly encouraged.\n\n## License\nThis is free and unencumbered software released into the public domain.\nFor more information, please refer to \u003chttp://unlicense.org\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafaeldelboni%2Fcajus-nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frafaeldelboni%2Fcajus-nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafaeldelboni%2Fcajus-nvim/lists"}