= rust-selection-sort.kak == Configuration [source,sh,title='sh'] ---- cargo install https://github.com/austenadler/rust-selection-sort.kak ---- [source,title='kakrc'] ---- define-command sort-selections -params 0.. %{ eval -save-regs '"' %{ reg dquote %val{selections} eval %sh{ regex="${1:-.*}" # TODO: Use a comand fifo to read/write selections eval set -- "$kak_quoted_selections" # TODO: Send additional parameters rust-selection-sort -r "$regex" $args -- "$@" > "$kak_command_fifo" } exec R } } ---- == Usage * Make multiple selections * Run `sort-selections` to sort the selections lexicographically (TODO: implement a `sort -h` like feature) * Run `sort-selections REGEX` to sort by regex match ** If the regex does not contain a capture group ** If the regex contains at least one capture group == Example . Imagine you want to sort these stages + [source,groovy] ---- stage('Package (#3)') { // ... } stage('Build (#2)') { // ... } stage('Initialize (#1)') { // ... } stage('Publish (#4)') {} ---- . Select the stage and stage body with: `%sstageMLM` . Sort the selection by step number with: `:sort-selections #\d+` (sort on whole capture) or `:sort-selections "'.+?#(\d).+?'"` (sort on first capture group, which contains only the digits) . Note if you just run `:sort-selections` == TODO * I don't know what will happen with multiline strings * Use 2 fifos for getting and sending selections since this should be faster than sending this to shell * Send options (`-S`) to cli from kak * Figure out how to change the `no_skip_whitespace` option name in the source