void view_select(View* view, size_t row, size_t col);
void view_jumpto(View* view, bool extsel, size_t off);
void view_scrollto(View* view, size_t csr);
+Rune view_getrune(View* view);
/* Command Executions
*****************************************************************************/
view_selctx(view);
}
+static void join_lines(void) {
+ View* view = win_view(FOCUSED);
+ view_eol(view, false);
+ view_delete(view, RIGHT, false);
+ Rune r = view_getrune(view);
+ for (; r == '\t' || r == ' '; r = view_getrune(view))
+ view_delete(view, RIGHT, false);
+ if (r != '\n' && r != RUNE_CRLF)
+ view_insert(view, false, ' ');
+}
+
static void delete(void) {
bool byword = x11_keymodsset(ModCtrl);
view_delete(win_view(FOCUSED), RIGHT, byword);
{ ModCtrl, 'e', cursor_eol },
/* Standard Text Editing Shortcuts */
- { ModCtrl, 's', save },
- { ModCtrl, 'z', undo },
- { ModCtrl, 'y', redo },
- { ModCtrl, 'x', cut },
- { ModCtrl, 'c', copy },
- { ModCtrl, 'v', paste },
+ { ModCtrl, 's', save },
+ { ModCtrl, 'z', undo },
+ { ModCtrl, 'y', redo },
+ { ModCtrl, 'x', cut },
+ { ModCtrl, 'c', copy },
+ { ModCtrl, 'v', paste },
+ { ModCtrl, 'j', join_lines },
/* Block Indent */
{ ModCtrl, '[', del_indent },