My neovim configuration
6cda0786 — Gerry Agbobada a month ago
Update Fennel to 0.9.2
6c1f936c — Gerry Agbobada a month ago
Update API calls
24122aef — Gerry Agbobada 3 months ago
Remove completion.nvim usages


browse  log 



You can also use your local clone with git send-email.

#Fennel based neovim init

This is a test to get all the lisp goodness in a neovim configuration. Also mostly doing some lisp to cool off.

Note This toy needs Neovim 0.5.0+ (because of the packer.nvim dependency)


  • [X] As usable as Vanilla neovim
  • [X] Can run Fennel commands to affect running Neovim
  • [ ] Get complex enough to declare +emacs+ neovim bankruptcy


#Neovim Lua "bootstrap"

Until init.lua becomes a real first party thing in Neovim, a few hacks in the initialization are used to defer the init to Lua, and then Fennel.

#Fennel as first party language

Everything happens in the init function of config.fnl

#Packer.nvim for plugin management

The plugin list is declared simply in a table variable in plugins.fnl file, and Packer handles all the rest by providing :Packer* commands in Neovim later.

#[2/8] Tentative roadmap

#DONE Figure out how to handle require path in Fennel code

CLOSED: [2020-09-12 sam. 18:36]

Trying to move the bindings.fnl file failed pretty sadly

#TODO Decide if AOT is necessary

The script always load Fennel on start for now. The nvimprofile tool might be useful, at least to time the complete initialization of Neovim

#DONE Hook some REPL to run Fennel code in current nvim

CLOSED: [2020-09-12 sam. 19:28]

Probably incompatible with an "AOT" approach since the lua environment would not have Fennel loaded anymore

#TODO Fix the small bug at the end of a :Fennel command

This Error is probably due to weird argument handling on the vimscript side ? (in <args>)

#TODO Devtools in the config

I'll edit this in emacs for the time being, but having the Neovim API doc somewhere handy and completion in Fennel would be awesome

#TODO Better error handling

When vim.cmd or another VIM API call fails in Fennel, the error is not usable to properly trace where the error came from and instead displays an useless load_fn is nil error or something.

This makes debugging really hard as bissecting becomes the only way to actually get something going on

#TODO Automatically packadd nvim lua packages

The packadd is necessary to update the runtimepath, which triggers an update of lua package.path and package.cpath

Without this, the require "XXX" calls fail

So it would be nice to handle this transparently from the config

#TODO Automatically packadd nvim lua packages

#TODO Configure nvim-treesitter modules