tMove row operations into separate file - ve - a minimal text editor (work in progress)
(HTM) git clone git://src.adamsgaard.dk/ve
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 0ebc6405b29708897e7f73c3216dbabaef92e852
(DIR) parent 6facf1866e50a80e078ed47197370901453d9e74
(HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
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(-)
---
(DIR) 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)
(DIR) 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()
(DIR) 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;
+}
(DIR) 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