static void join_lines(char* arg) {
View* view = win_view(FOCUSED);
+ buf_logstart(win_buf(FOCUSED));
view_eol(view, false);
view_delete(view, RIGHT, false);
Rune r = view_getrune(view);
view_byrune(view, RIGHT, true);
if (r != '\n')
buf_putc(win_buf(FOCUSED), ' ');
+ buf_logstop(win_buf(FOCUSED));
}
static void delete(char* arg) {
view_selctx(win_view(FOCUSED));
}
+static void lnexec(char* cmd) {
+ if (!view_selsize(win_view(FOCUSED)))
+ select_line(NULL);
+ exec(cmd);
+}
+
/* Main Routine
******************************************************************************/
static Tag Builtins[] = {
{ .mods = ModAny, .key = KEY_BACKSPACE, .fn = backspace },
/* External command shortcuts */
- { .mods = ModCtrl, .key = '[', .fn = exec, .arg = "|i-" },
- { .mods = ModCtrl, .key = ']', .fn = exec, .arg = "|i+" },
+ { .mods = ModCtrl, .key = '[', .fn = lnexec, .arg = "|i-" },
+ { .mods = ModCtrl, .key = ']', .fn = lnexec, .arg = "|i+" },
/* Implementation Specific */
{ .mods = ModNone, .key = KEY_ESCAPE, .fn = select_prev },