This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-02-16
Channels
- # announcements (18)
- # architecture (12)
- # babashka (20)
- # beginners (32)
- # biff (21)
- # calva (81)
- # clerk (6)
- # clj-kondo (16)
- # clj-otel (5)
- # cljsrn (8)
- # clojure (94)
- # clojure-austin (1)
- # clojure-australia (1)
- # clojure-europe (68)
- # clojure-nl (2)
- # clojure-norway (6)
- # clojure-uk (2)
- # clojurescript (13)
- # conjure (1)
- # core-logic (1)
- # cursive (7)
- # data-science (2)
- # datahike (3)
- # datomic (12)
- # emacs (33)
- # etaoin (1)
- # fulcro (8)
- # graalvm (2)
- # graphql (1)
- # honeysql (1)
- # hyperfiddle (97)
- # improve-getting-started (40)
- # jobs (2)
- # jobs-discuss (12)
- # lsp (9)
- # membrane (6)
- # nbb (2)
- # off-topic (16)
- # portal (6)
- # re-frame (2)
- # reagent (3)
- # releases (2)
- # remote-jobs (1)
- # tools-deps (7)
- # xtdb (38)
I'm really enjoying meow for editing clojure code. That plus separedit for handling comments in clerk notebooks is really nice. Having a good multiple cursors thing for EDA is really handy when you have things that are almost the same but you need to investigate
@U0525KG62 Did you use evil previously? I'm planning to make the switch sometime soon. I'd be curious to see your emacs config with it. :)
I did. I've been a very long time holy mode user. I've been trying evil for about 6 months now to make sharing in tmate better, and it did work, but getting good mode set ups in evil was a real pain. Meow is like god mode plus a really good multiple cursors
> I think what I really want is a combo of corgi and meow
Ah yes, same here!
@U4YGF4NGM has a neat setup around meow and signals I plan to pull from:
> https://github.com/lilactown/kitten
> [3:47 PM] it's still pretty rough. the corkey replacement is in the lisp dir, called reflex
> [3:49 PM] you can see here how it's used to bind keys to general capabilities, and then different modules can provide functions for those capabilities for major modes https://github.com/lilactown/kitten/blob/main/user/keybinds.el#L91-L112
> https://github.com/lilactown/kitten/blob/main/modules/kitten-clojure.el#L40-L57
This is his signal library:
https://github.com/lilactown/kitten/blob/main/lisp/reflex.el
note that reflex isn't exactly the same as corkey. corkey loads the reads the bindings from a file and does some processing of the signals as data before it creates your keymap. this adds some complexity in loading and reloading, but the nice thing is that "it's just data" and you get a sort of immutable keymap that can be realized and inspected.
reflex wraps bind-key
and mutates the keymap(s) on each signal binding, which is much easier from an impl perspective but you can run into issues with load ordering and errors during binding
I like the fact that reflex is so easy in terms of impl and still gets me a lot of value, but there's more stuff you can do with corkey. YMMV
Thanks for the clarification! One thing I personally like about reflex is being able to define signals/binds from where I'm setting up my corresponding package, instead of having to hunt down the right spot in the dedicated signals/binds file.
I'd like to bind NM<> to sexp/combobulate like movements in normal mode. I'm guessing that using signals and thus reflex might help with that?
ah, looks like an issue with the escape key in the terminal? (tho I'm not sure why I didn't bump into this when doing evil)
to answer your first question, for meow I don't know if signals are necessary for that. if you always want NM<> to be sexp commands, then it's just as easy to put use meow's meow-normal-define-key
if you only want it to be sexp commands when in certain modes... well conceptually that would be a good use case for signals, but I assume that meow uses a single global keymap for each mode, I actually have no idea how meow keeps track of binding keys... but if it is a single keymap, then reflex doesn't have a way to specialize
re: my escape problem above. I think I hadn't fully eradicated evil from my config. I'll see if I can repeat it. It didn't just happen in terminal buffers in emacsclient
@U4YGF4NGM ok, that helps. I think it would be for particular modes as paredit grabs a hold in modes where it is in the hook and takes over from the emacs defaults. combobulate will do the same. Lisps will generally be fine with paredit, but languages will less clear syntax will probably be using combobulate.
what I did is I defined a custom "paren-mode" that I bind to K which has all of my lisp movements and other stuff