tMove row operations into separate file - ve - a minimal text editor (work in p… | |
git clone git://src.adamsgaard.dk/ve | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 0ebc6405b29708897e7f73c3216dbabaef92e852 | |
parent 6facf1866e50a80e078ed47197370901453d9e74 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Tue, 6 Aug 2019 15:44:40 +0200 | |
Move row operations into separate file | |
Diffstat: | |
M io.c | 52 +----------------------------… | |
M output.c | 15 +-------------- | |
A row.c | 71 +++++++++++++++++++++++++++++… | |
A row.h | 9 +++++++++ | |
4 files changed, 82 insertions(+), 65 deletions(-) | |
--- | |
diff --git a/io.c b/io.c | |
t@@ -9,57 +9,7 @@ | |
#include <string.h> | |
#include "byote.h" | |
#include "terminal.h" | |
- | |
-/* translate tabs before display */ | |
-void | |
-editor_update_row(eRow* row) | |
-{ | |
- int j, idx, tabs; | |
- | |
- free(row->rchars); | |
- row->rchars = malloc(row->size + 1); | |
- | |
- tabs = 0; | |
- for (j=0; j<row->size; ++j) | |
- if (row->chars[j] == '\t') | |
- tabs++; | |
- | |
- free(row->rchars); | |
- row->rchars = malloc(row->size + tabs*(TAB_WIDTH - 1) + 1); | |
- | |
- idx = 0; | |
- for (j=0; j<row->size; ++j) { | |
- if (row->chars[j] == '\t') { | |
- row->rchars[idx++] = '>'; | |
- while (idx % TAB_WIDTH != 0) | |
- row->rchars[idx++] = ' '; | |
- } else { | |
- row->rchars[idx++] = row->chars[j]; | |
- } | |
- } | |
- row->rchars[idx] = '\0'; | |
- row->rsize = idx; | |
-} | |
- | |
-/* add row to buffer */ | |
-void | |
-editor_append_row(char *s, size_t len) | |
-{ | |
- int i; | |
- | |
- E.row = realloc(E.row, sizeof(eRow) * (E.num_rows + 1)); | |
- i = E.num_rows; | |
- E.row[i].size = len; | |
- E.row[i].chars = malloc(len + 1); | |
- memcpy(E.row[i].chars, s, len); | |
- E.row[i].chars[len] = '\0'; | |
- | |
- E.row[i].rsize = 0; | |
- E.row[i].rchars = NULL; | |
- editor_update_row(&E.row[i]); | |
- | |
- ++E.num_rows; | |
-} | |
+#include "row.h" | |
void | |
file_open(char *filename) | |
diff --git a/output.c b/output.c | |
t@@ -6,6 +6,7 @@ | |
#include <time.h> | |
#include "terminal.h" | |
#include "output.h" | |
+#include "row.h" | |
#include "byote.h" | |
/* reallocate append buffer to hold string s */ | |
t@@ -107,20 +108,6 @@ editor_draw_status_message(struct abuf *ab) | |
ab_append(ab, E.status_msg, msglen); | |
} | |
-/* navigate over tab-representative string as one character */ | |
-int | |
-editor_row_cursor_x_to_rx(eRow *row, int cursor_x) | |
-{ | |
- int rx, j; | |
- rx = 0; | |
- for (j=0; j<cursor_x; ++j) { | |
- if (row->chars[j] == '\t') | |
- rx += (TAB_WIDTH - 1) - (rx % TAB_WIDTH); | |
- rx++; | |
- } | |
- return rx; | |
-} | |
- | |
/* set vertical offset between file and screen when hitting the boundaries */ | |
void | |
editor_scroll() | |
diff --git a/row.c b/row.c | |
t@@ -0,0 +1,71 @@ | |
+#include <stdlib.h> | |
+#include <stdio.h> | |
+#include <sys/types.h> | |
+#include <string.h> | |
+#include "byote.h" | |
+#include "terminal.h" | |
+ | |
+/* navigate over tab-representative string as one character */ | |
+int | |
+editor_row_cursor_x_to_rx(eRow *row, int cursor_x) | |
+{ | |
+ int rx, j; | |
+ rx = 0; | |
+ for (j=0; j<cursor_x; ++j) { | |
+ if (row->chars[j] == '\t') | |
+ rx += (TAB_WIDTH - 1) - (rx % TAB_WIDTH); | |
+ rx++; | |
+ } | |
+ return rx; | |
+} | |
+ | |
+/* translate tabs before display */ | |
+void | |
+editor_update_row(eRow* row) | |
+{ | |
+ int j, idx, tabs; | |
+ | |
+ free(row->rchars); | |
+ row->rchars = malloc(row->size + 1); | |
+ | |
+ tabs = 0; | |
+ for (j=0; j<row->size; ++j) | |
+ if (row->chars[j] == '\t') | |
+ tabs++; | |
+ | |
+ free(row->rchars); | |
+ row->rchars = malloc(row->size + tabs*(TAB_WIDTH - 1) + 1); | |
+ | |
+ idx = 0; | |
+ for (j=0; j<row->size; ++j) { | |
+ if (row->chars[j] == '\t') { | |
+ row->rchars[idx++] = '>'; | |
+ while (idx % TAB_WIDTH != 0) | |
+ row->rchars[idx++] = ' '; | |
+ } else { | |
+ row->rchars[idx++] = row->chars[j]; | |
+ } | |
+ } | |
+ row->rchars[idx] = '\0'; | |
+ row->rsize = idx; | |
+} | |
+ | |
+/* add row to buffer */ | |
+void | |
+editor_append_row(char *s, size_t len) | |
+{ | |
+ int i; | |
+ | |
+ E.row = realloc(E.row, sizeof(eRow) * (E.num_rows + 1)); | |
+ i = E.num_rows; | |
+ E.row[i].size = len; | |
+ E.row[i].chars = malloc(len + 1); | |
+ memcpy(E.row[i].chars, s, len); | |
+ E.row[i].chars[len] = '\0'; | |
+ | |
+ E.row[i].rsize = 0; | |
+ E.row[i].rchars = NULL; | |
+ editor_update_row(&E.row[i]); | |
+ | |
+ ++E.num_rows; | |
+} | |
diff --git a/row.h b/row.h | |
t@@ -0,0 +1,9 @@ | |
+#ifndef ROW_H_ | |
+#define ROW_H_ | |
+ | |
+#include "byote.h" | |
+ | |
+int editor_row_cursor_x_to_rx(eRow *row, int cursor_x); | |
+void editor_append_row(char *s, size_t len); | |
+ | |
+#endif |