aboutsummaryrefslogtreecommitdiff
path: root/text.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-02-21 10:05:34 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-02-21 10:05:34 +0100
commitb8938fe1d099d1b5b6ceecda6668b879e6a49298 (patch)
treebb539171afa6d9bb90cad92fc4822db0f0cc9ce4 /text.c
parentb56c629d8200b891bcf6822cfa4425ccc9849567 (diff)
downloadvis-b8938fe1d099d1b5b6ceecda6668b879e6a49298.tar.gz
vis-b8938fe1d099d1b5b6ceecda6668b879e6a49298.tar.xz
Cleanup new line insertion code
Diffstat (limited to 'text.c')
-rw-r--r--text.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/text.c b/text.c
index 93e79d6..189cf2f 100644
--- a/text.c
+++ b/text.c
@@ -665,15 +665,10 @@ bool text_vprintf(Text *txt, size_t pos, const char *format, va_list ap) {
return ret;
}
-bool text_insert_newline(Text *txt, size_t pos) {
- switch (text_newline_type(txt)) {
- case TEXT_NEWLINE_NL:
- return text_insert(txt, pos, "\n", 1);
- case TEXT_NEWLINE_CRNL:
- return text_insert(txt, pos, "\r\n", 2);
- default:
- return false;
- }
+size_t text_insert_newline(Text *txt, size_t pos) {
+ const char *data = text_newline_char(txt);
+ size_t len = strlen(data);
+ return text_insert(txt, pos, data, len) ? len : 0;
}
static size_t action_undo(Text *txt, Action *a) {
@@ -1265,6 +1260,14 @@ enum TextNewLine text_newline_type(Text *txt){
return txt->newlines;
}
+const char *text_newline_char(Text *txt) {
+ static const char *types[] = {
+ [TEXT_NEWLINE_NL] = "\n",
+ [TEXT_NEWLINE_CRNL] = "\r\n",
+ };
+ return types[text_newline_type(txt)];
+}
+
static bool text_iterator_init(Iterator *it, size_t pos, Piece *p, size_t off) {
*it = (Iterator){
.pos = pos,