summaryrefslogtreecommitdiff
path: root/jet2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'jet2.cpp')
-rw-r--r--jet2.cpp139
1 files changed, 50 insertions, 89 deletions
diff --git a/jet2.cpp b/jet2.cpp
index c00042a..791bd14 100644
--- a/jet2.cpp
+++ b/jet2.cpp
@@ -1,14 +1,17 @@
-#include <stdlib.h>
#include <stdio.h>
-#include <assert.h>
-#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
#include <curses.h>
-#include "page.cpp"
-#include "point.cpp"
-#include "buffer.cpp"
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/ip.h>
+#include <arpa/inet.h>
+#include <unistd.h>
#define NORMAL_MODE 0
#define INSERT_MODE 1
+#define PORT 6969
#define pos(x, y) (x) + (y) * window_width
int main(int argc, char *argv[]) {
@@ -18,110 +21,68 @@ int main(int argc, char *argv[]) {
intrflush(stdscr, FALSE);
keypad(stdscr, TRUE);
- if (argc > 1) {
- buffer.read(argv[1]);
- }
-
int window_height, window_width;
getmaxyx(stdscr, window_height, window_width);
- int *view = new int[window_width * window_height];
+ char *view = new char[window_width * window_height];
for (int i = 0; i < window_width * window_height; view[i++] = 0);
+
+ int s = socket(AF_INET, SOCK_STREAM, 0);
+ sockaddr_in addr = { AF_INET, htons(PORT), htonl(INADDR_LOOPBACK)};
+ connect(s, (sockaddr *) &addr, sizeof(sockaddr_in));
+
int mode = NORMAL_MODE;
int quit = 0;
while (!quit) {
clear();
- Point window_end(window_start);
- int x = -1, y = -1;
- for (int i = 0; i < window_height; i++) {
- for (int j = 0; j < window_width; j++) {
- if (window_end == cursor) {
- x = j;
- y = i;
- }
- view[pos(j, i)] = window_end.element();
- if (window_end.element() == '\n') {
- for (int k = j + 1; k < window_width; k++) {
- view[pos(k, i)] = 0;
- }
- j = window_width;
- } else if (window_end.element() == '\t') {
- for (int k = j + 1; k < j + 8; k++) {
- view[pos(k, i)] = 0;
- }
- j = j + 7;
- }
- window_end++;
- }
- }
+ char msg[32] = {};
+ int len = sprintf(msg, " %d %d show ", window_width, window_height);
+ write(s, msg, len);
+ read(s, view, window_width * window_height);
for (int i = 0; i < window_width * window_height; i++) {
- printw("%lc", view[i]);
- }
- if (x != -1 && y != -1) {
- move(y, x);
+ if (view[i]) {
+ printw("%c", view[i]);
+ }
}
+ memset(msg, 0, 32);
int input = getch();
- if (byte_type(input) == 1) {
- if (mode == NORMAL_MODE) {
- switch (input) {
- case '':
- quit = 1;
- break;
- case 'i':
- mode = INSERT_MODE;
- break;
- case 'j':
- for (int i = pos(x, y); i < pos(x + 1, y + 1); i++) {
- if (view[i]) cursor++;
- }
- cursor--;
- if (y + 1 >= window_height) {
- window_start.seek('\n', window_width - 1);
- window_start++;
- }
- break;
- case 'k':
- for (int i = pos(x, y); i > pos(x, y - 1); i--) {
- if (view[i]) cursor--;
- }
- if (y - 1 <= 0) {
- window_start--;
- window_start.rseek('\n', window_width - 1);
- }
- break;
- case 'h':
- cursor--;
- break;
- case 'l':
- cursor++;
- break;
- }
- } else {
- switch (input) {
- case '':
- mode = NORMAL_MODE;
- break;
- case KEY_BACKSPACE:
- cursor.pop();
- break;
- default:
- cursor.push(input);
- }
+ if (mode == NORMAL_MODE) {
+ switch (input) {
+ case '':
+ quit = 1;
+ break;
+ case 'i':
+ mode = INSERT_MODE;
+ break;
+ case 'h':
+ len = sprintf(msg, " -1 move ");
+ write(s, msg, len);
+ break;
+ case 'l':
+ len = sprintf(msg, " 1 move ");
+ write(s, msg, len);
+ break;
}
} else {
- cursor.push(input);
- for (int i = 0; i < byte_type(input) - 1; i++) {
- cursor.push(getch());
+ switch (input) {
+ case '':
+ mode = NORMAL_MODE;
+ break;
+ case KEY_BACKSPACE:
+ len = sprintf(msg, " pop ");
+ write(s, msg, len);
+ break;
+ default:
+ len = sprintf(msg, " %d push ", input);
+ write(s, msg, len);
}
}
}
- buffer.write(buffer.name);
-
endwin();
return 0;
}