From 68f9f880a4302801ac3410db1db20d6355216853 Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Sat, 1 Feb 2025 15:01:36 -0800 Subject: [PATCH] docs: update readme --- README.md | 47 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a3a8553..96ea5f4 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,44 @@ # viminal2 -This is my second attempt at creating a Neovim configuration intended for -NixOS. The [first](https://github.com/youwen5/viminal) was configured using -[Nixvim](https://github.com/nix-community/nixvim). This mostly worked, except -you often had to escape into raw Lua strings to get precise customization. +This is my Neovim configuration, written in [Fennel](https://fennel-lang.org/), +a Lisp that transpiles to Lua. This allows me to continue Vimming while +masquerading as an Emacs lisper, walking the fine line between the light and +dark sides of text editing. + +## Fennel + +Originally I wrote this configuration in Lua but I decided to switch to Fennel +in order to make it even more esoteric to the average software developer. I +hand-wrote a few parts, and migrated all the existing code using +[antifennel](https://git.sr.ht/~technomancy/antifennel). + +Fennel is a Lisp, so you see a lot of S-expressions. It looks really disgusting +at first, but once you grasp the true naked structure of Lisp code, you begin +to understand that it's the most powerful language God ever wrought. + +![xkcd 297, lisp cycles](https://imgs.xkcd.com/comics/lisp_cycles.png) + +Here is a snippet from `init.fnl`: + +```fennel +(vim.api.nvim_create_autocmd [:VimResized] + {:callback (fn [] + (local current-tab + (vim.api.nvim_get_current_tabpage)) + (vim.cmd "tabdo wincmd =") + (vim.api.nvim_set_current_tabpage current-tab)) + :desc "Resize splits with terminal window" + :group (vim.api.nvim_create_augroup :EqualizeSplits + {})}) +``` + +## Nix + +This configuration is built around the Nix package manager. In fact it is my +second attempt to do so. The [first](https://github.com/youwen5/viminal) was +configured using [Nixvim](https://github.com/nix-community/nixvim). This mostly +worked, except you often had to escape into raw Lua strings to get precise +customization. Enter [nixCats](https://github.com/BirdeeHub/nixCats-nvim). It provides the tools needed to mix Nix and Lua in your configurations. For advanced users, @@ -28,9 +63,7 @@ everything that a text editor's plugins shouldn't, and it's a perfect match. You can test drive the configuration (even if you aren't on NixOS) if you have the Nix package manager available (with flakes). -```bash -nix run 'github:youwen5/viminal2' -``` +```bash nix run 'github:youwen5/viminal2' ``` ## Design