-
Hey there! This project is crazy sick for what appears to be a mostly one-person show. I was just curious what the story or reasoning was for arriving at a lispy syntax for config. I've been using clojure at work (my first lisp ever, of course) and I've become absolutely enamored with it.
But s-exps are a very interesting choice I feel for someone who's admitted to also being new to them, and for a project whose own source is in rust. I know that one of my favorite features of clj/lisps is metaprogramming and homoiconicity, which has made making linters, codemods and reflection tools trivial - stuff I'd never thought I could do without tons of reading and use of free time at least. I imagine that's a reason for Either way, thanks! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
Short answer: kmonad did it, haha Long answer: I wanted a configuration language that could express the features that projects like QMK can express via writing C code. I wasn't initially looking to write kanata, I was actually hoping kmonad would satisfy all my use cases. After I discovered that kmonad didn't fit my taste, in my quest to get something working as fast as possible, I picked something proven to work (kmonad), easy to parse (because I'm lazy), and that was a S-expression based config. The kanata cfg language is solely intended to be a configuration language and not a turing-complete language. It exists solely to configure a keyberon layout state machine, which is more prior art I relied on to get started quicker. Kmonad seems like it's trying to do more advanced stuff for configuration with Dhall, which is interesting. |
Beta Was this translation helpful? Give feedback.
Short answer: kmonad did it, haha
Long answer: I wanted a configuration language that could express the features that projects like QMK can express via writing C code. I wasn't initially looking to write kanata, I was actually hoping kmonad would satisfy all my use cases. After I discovered that kmonad didn't fit my taste, in my quest to get something working as fast as possible, I picked something proven to work (kmonad), easy to parse (because I'm lazy), and that was a S-expression based config.
The kanata cfg language is solely intended to be a configuration language and not a turing-complete language. It exists solely to configure a keyberon layout state machine, which is more prior a…