All Projects → rafaeldelboni → nvim-fennel-lsp-conjure-as-clojure-ide

rafaeldelboni / nvim-fennel-lsp-conjure-as-clojure-ide

Licence: Unlicense license
Basic config to transform your NVIM in a powerful Clojure IDE using fennel, clojure-lsp and conjure.

Programming Languages

Fennel
19 projects
lua
6591 projects

Projects that are alternatives of or similar to nvim-fennel-lsp-conjure-as-clojure-ide

nvim-config
My neovim config
Stars: ✭ 63 (-56.25%)
Mutual labels:  packer, nvim, lsp
neovimfiles
My Neovim configuration written in Lua
Stars: ✭ 52 (-63.89%)
Mutual labels:  packer, nvim, lsp
aerial.nvim
Neovim plugin for a code outline window
Stars: ✭ 485 (+236.81%)
Mutual labels:  nvim, lsp
crates.nvim
A neovim plugin that helps managing crates.io dependencies
Stars: ✭ 252 (+75%)
Mutual labels:  nvim, nvim-cmp
vimrc
My neovim config
Stars: ✭ 43 (-70.14%)
Mutual labels:  nvim, lsp
py lsp.nvim
Lsp Plugin for working with Python virtual environments
Stars: ✭ 58 (-59.72%)
Mutual labels:  nvim, lsp
nvim-metals
A Metals plugin for Neovim
Stars: ✭ 265 (+84.03%)
Mutual labels:  nvim, lsp
lspactions
handlers for required lsp actions
Stars: ✭ 44 (-69.44%)
Mutual labels:  nvim, lsp
lsp spinner.nvim
neovim plugin to retrieve the name of the running LSP client(s) and display a spinner when there are wip job
Stars: ✭ 23 (-84.03%)
Mutual labels:  nvim, lsp
Lsp Status.nvim
Utility functions for getting diagnostic status and progress messages from LSP servers, for use in the Neovim statusline
Stars: ✭ 201 (+39.58%)
Mutual labels:  nvim, lsp
Nvim Lspconfig
Quickstart configurations for the Nvim LSP client
Stars: ✭ 3,410 (+2268.06%)
Mutual labels:  nvim, lsp
Coc.nvim
Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.
Stars: ✭ 18,268 (+12586.11%)
Mutual labels:  nvim, lsp
nvim
Structure, documented, super fast neovim configuration. 可能是翻斗花园最好用的 neovim 配置[^1]。
Stars: ✭ 223 (+54.86%)
Mutual labels:  nvim, nvim-cmp
coc-java-debug
An extension for coc.nvim to enable Java debugging via jdt.ls
Stars: ✭ 92 (-36.11%)
Mutual labels:  nvim, lsp
vim-lamp
💡Language Server Protocol client for Vim.
Stars: ✭ 34 (-76.39%)
Mutual labels:  nvim, lsp
lsp-command
Command interface for neovim LSP
Stars: ✭ 48 (-66.67%)
Mutual labels:  nvim, lsp
fzf-lsp.nvim
Enable the power of fzf fuzzy search for the neovim built in lsp
Stars: ✭ 143 (-0.69%)
Mutual labels:  nvim, lsp
nvim-tetris
Bringing emacs' greatest feature to neovim - Tetris!
Stars: ✭ 114 (-20.83%)
Mutual labels:  fennel, aniseed
Thinkvim
Vim configuration in the 21st century
Stars: ✭ 832 (+477.78%)
Mutual labels:  nvim, lsp
Packer.nvim
A use-package inspired plugin manager for Neovim. Uses native packages, supports Luarocks dependencies, written in Lua, allows for expressive config
Stars: ✭ 418 (+190.28%)
Mutual labels:  packer, nvim

cajus-nvim

A curvy and juicy neovim configuration following the "Keep it simple!" design principle.

What is this?

Setup config to transform your NVIM in a powerful Clojure IDE using fennel, clojure-lsp and conjure. This is simplified version on my personal dotfiles setup, I highly recommend you to check it out for more advanced and updated configurations.

Prerequisites

Things you need installed in your OS to use this setup

How to use

Make sure you backup your current configuration files in $HOME/.config/nvim BEFORE running this.

Run these commands in the root of this repo:

# Delete the current nvim config
rm -rf $HOME/.config/nvim

# Makes a symbolic link to the files in this repo
ln -sf $PWD/.config/nvim $HOME/.config/nvim

When 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. This 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.

Plugins

Using with other languages

Files

init.lua

Wrapper responsible for two things:

  • Download and setup our package manager (packer.nvim) and our fennel helper/interface (aniseed)
  • Set the entrypoint for NVIM read our config files, in our case fnl/config/init.fnl.

fnl/config/init.fnl

  • Set basic global vim configurations and general keymaps.
  • Load plugin configuration namespace.

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.

fnl/config/plugin.fnl

Here we define the plugins we want packer to download and load for us, we define here a private function called use which will search in the plugin map for the keyword :mod and load the namespace defined in its value.

For example in the line we define that we need telescope we have this map:

  :nvim-telescope/telescope.nvim {:requires [:nvim-lua/popup.nvim
                                             :nvim-lua/plenary.nvim]
                                  :mod :telescope}

This will state to packer download nvim-telescope/telescope.nvim and all the required plugins in :requires and search for the namespace telescope in file located in the following path fnl/config/plugin/telescope, where I usually add plugin specific configuration like keymaps and settings.

fnl/config/plugin/conjure.fnl

Conjure specifics settings, I like to remap the doc work keymap to be <localleader>K instead the only K, to not conflict with the LSP docs K.

fnl/config/plugin/telescope.fnl

Settings like ignore node_modules and everything in .gitignore to be listed in the file finder. Keymaps:

  • <leader>ff open the find files
  • <leader>fg open the fuzzy finder
  • <leader>fb open the find open buffer
  • <leader>fh open the nvim help fuzzy finder

fnl/config/plugin/treesitter.fnl

Settings to select which treesitter's features we want enabled and which language extension we want to ensure they will be always installed.

fnl/config/plugin/lspconfig.fnl

All about nvim's lsp settings and keymaps.

Settings:

  • In the first session, we define which symbols to show for lsp diagnostics.
  • Later we describe which features and server settings we want to enable/customize.
    • Handler defines features and how we want to render the server outputs.
    • Capabilities we link with our autocompletion plugin (nvim-cmp), to say to the lsp servers that we have this feature enabled.
    • On_Attach we customize our interaction with the LSP server, here we define the following keymaps:
      • gd Go to definition
      • K Show documentations
      • <leader>ld Function declarations
      • <leader>lt Type Definitions
      • <leader>lh Signature Help
      • <leader>ln Rename
      • <leader>le Show line diagnostics
      • <leader>lq Show all diagnostics information
      • <leader>lf Auto format
      • <leader>lj Go to next diagnostic
      • <leader>lk Go to previous diagnostic
      • <leader>la Open code actions menu (Using telescope plugin interface)
      • <leader>la Open code actions menu for the selected text in VISUAL mode (Using telescope plugin interface)
      • <leader>lw Open workspace diagnostics list (Using telescope plugin interface)
      • <leader>lr Show all references list for item under the cursor (Using telescope plugin interface)
      • <leader>lr Show all implementations list for item under the cursor (Using telescope plugin interface)
  • Lastly we configure to use all settings above in clojure-lsp server instance.

fnl/config/plugin/cmp.fnl

Here 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.

fnl/config/plugin/theme.fnl

Theme settings like style and comment style.

fnl/config/plugin/sexp.fnl

Settings for vim-sexp like enabling it for another lisp languages like Fennel and Jannet

fnl/config/plugin/lualine.fnl

Settings for lualine status line like some theme overides and setting what will be shown in the line.

Features

Some gifs showing how it works.

Telescope - Find Files

telescope-find-files <leader>ff

Lsp - Syntax check

lsp-syntax-check <leader>le

Lsp - Go to definition

lsp-go-to-definition gd

Lsp - Document/Signature Help

lsp-document K/<leader>lh

Lsp - Find definition/references

lsp-find-references <leader>lr

Lsp - Formatting

lsp-format <leader>lf

Lsp - Code actions

lsp-code-actions <leader>la

Lsp - Refactorings

lsp-refactorings <leader>la

Lsp - Rename

lsp-rename <leader>ln

Conjure - Eval

conjure-eval <localleader>er

Conjure - Repl

conjure-repl <localleader>lv

Conjure - Document

conjure-document <localleader>K

Completion

auto-complete

Etymology

Cajus is the Portuguese for cashews, which is a fitting name because the format of its nuts reminded me of a parenthesis.

Contributing

If you find any dead links, misinformation or any improvements in this documents at all Emails, PRs and Issues are highly encouraged.

License

This is free and unencumbered software released into the public domain. For more information, please refer to http://unlicense.org

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].