Backlog (AKA stuff added during digging that isn't as important, or required to be ordered):
Notes:
1 (in general): Doing 4 before 2 and 3 due to the implications; the object rewamp forces a redesign in the core system, while at the same time being able to yeet out piles of trash like this
1.3: Part of this rewrite bit is making objects an option; aside just {"open": "close"}
, something like {"open": "close", "map": "n", "delete": 1}
- basically, more fine-grained control over internals. map
and delete
can be auto-resolved (and delete can only be allowed if close != ""
). Supporting objects cannot break current pairs. Replacing bits to also support substitute()
for extending functionality and the definition of allowed pairs would also make auto-pairs more powerful, though I'm not entirely sure if it's worth it.
2: Started out seeming easy, not so much. It's heavily connected with complex jump logic (AKA a black box at this point), as well as a key jiangmiao obsoleted several years ago: g:AutoPairsWildClose. Appears to be "jump out of the last pair", was moved to some bullshit mapping that would be resolved with a fucking object rather than appending some garbage to the end of the string. Substantial cleanup is required before this can be done
5.1: At least one option should be to override quote checking for single letters. Maybe make the option a map?
5.2: Should be fairly easy to extend the current options, though it might have to be made available in certain modes only.
5.3: checking highlight groups shouldn't cause too big performance problems; there's other plugins doing substantially more synchronously. Might be worth profiling to check whether it's viable or not though. Should be fine as long as it doesn't start competing with plasticboy/vim-markdown in time consumed.
There's also no due date on this, but it'll be done relatively soon. To put it like this, it'll be done before 2022, but I can't promise it'll be done in a month, because I have no idea how long it'll take to implement all the changes. My weekly workload fluctuates a lot. It's currently semi-high at the time of writing. Bugs also take priority, so if anything breaks (or has been broken all the way from the upstream repo), that will be prioritized over adding more places for there to be bugs.