/vim-iced

Clojure Interactive Development Environment for Vim8/Neovim

Primary LanguageVim ScriptMIT LicenseMIT

vim-iced

logo
Clojure Interactive Development Environment for Vim8/Neovim.

GitHub release GitHub license Powered by vital.vim
GitHub Actions for vim/neovim workflow GitHub Actions for dependencies workflow Codecov

Warning

This project is in maintenance mode. New features will not be added.

Now I’m developing vim-elin as the main project, so please look forward to it.

Requirements

  • Vim 8.1.0614 or later, Neovim 0.4.0 or later.

  • Clojure 1.8 or later.

    • 1.10 or later is recommended.

  • No python! (boost possible with if_python3)

Features

⚑

Asynchronous evaluation

powered by channel in Vim8 / Neovim

πŸ”₯

Testing

Run test under cursor
Run tests in namespace
Re run failed/last test
Also supports kaocha by vim-iced-kaocha

πŸš€

Refactoring

Clean namespace
Add missing
Thread first/last
Extract function
Move to let
Rename symbol

πŸ’­

Auto completion

Provided by following external plugins.
- vim-iced-coc-source for coc.nvim
- vim-iced-asyncomplete for asyncomplete.vim
- cmp-iced for nvim-cmp
Omni completion is provided by default.

πŸ“

Formatting

Supports followings currently.
- cljfmt via nREPL
- cljstyle
- zprint
- joker

πŸ”

Reference

Docs, Javadoc, and ClojureDocs πŸŽ₯
Function dependencies and references πŸŽ₯

🐜

Debugging

Supports cider-nrepl’s debugger πŸŽ₯
Browsing tapped values πŸŽ₯

πŸ““

Skeleton

Provides code skeleton when you open new file

🎩

ClojureScript support

Supports followings currently.
- Figwheel Main, lein-figwheel
- shadow-cljs

😎

Static analysis

Boost performance with static analysis powered by clj-kondo

πŸ”Œ

Socket REPL

Supports minimal operations.

🎨

Command palette

Access commands smoothly and define user custom commands

Note
vim-iced is heavily powered by cider-nrepl, refactor-nrepl, and iced-nrepl.

Documents

External plugins

πŸ”₯

vim-iced-kaocha

Provides some commands for testing with kaocha.

πŸ”

vim-iced-project-namespaces

Provides :IcedBrowseNamespace command for jumping to namespace in your project.

vim-iced-function-list

Provides :IcedBrowseFunction command for jumping to functions in current namespace.

πŸ’­

vim-iced-coc-source

Provides auto completion by coc.nvim.

vim-iced-asyncomplete

Provides auto completion by asyncomplete.vim.

vim-iced-ncm2

Provides auto completion by ncm2.

vim-iced-compe

Provides auto completion by nvim-compe.

🐜

vim-iced-fern-debugger

Provides tree views for debugging results and tapped values by fern.vim.

πŸ“š

https://github.com/liquidz/vim-iced-multi-session

Provides multi session support like connecting to nREPL and shadow-cljs.

License

Copyright (c) 2018-2024 Masashi Iizuka

Distributed under the MIT License.