aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/line/cursor.h48
-rw-r--r--include/line/getter.h19
-rw-r--r--include/line/input.h14
-rw-r--r--include/line/mode.h18
-rw-r--r--src/init.cc2
-rw-r--r--src/line/cursor.cc5
-rw-r--r--src/line/input.cc2
-rw-r--r--src/signal/sigwinch_handler.cc2
8 files changed, 5 insertions, 105 deletions
diff --git a/include/line/cursor.h b/include/line/cursor.h
deleted file mode 100644
index 63d275c..0000000
--- a/include/line/cursor.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#pragma once
-
-#include <string>
-
-#include "line/type.h"
-
-namespace ov4
-{
-
-// 1-based
-inline int cursor_row;
-inline int cursor_col;
-//inline int line_end_pos;
-
-inline int prompt_pos;
-
-inline int window_size_row;
-inline int window_size_col;
-
-// 0-based index
-inline int buffer_index_cursor;
-// index [begin, end] is displayed
-// NB: CLOSE interval
-inline int _buffer_index_display_begin;
-//inline int buffer_index_display_end;
-
-inline std::string line_buffer;
-
-void print_override(const std::string &s);
-
-void move_cursor(char c);
-
-void cursor_input_char(char c);
-
-void update_window_size();
-
-void move_cursor(T_cursor_movement_direction d);
-
-void switch_history(T_cursor_movement_direction d);
-
-void reset_editor();
-
-void cursor_skip_prompt();
-
-void check_window_update();
-
-}
-
diff --git a/include/line/getter.h b/include/line/getter.h
deleted file mode 100644
index ac8683f..0000000
--- a/include/line/getter.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-#include "line/type.h"
-
-namespace ov4
-{
-
-inline bool windows_size_changed;
-
-int get_terminal_pos_cursor();
-int get_buffer_index_display_begin();
-int get_buffer_index_display_end();
-int get_terminal_pos_line_end();
-
-//void update_line_end_pos();
-
-T_position get_cursor_position();
-
-} \ No newline at end of file
diff --git a/include/line/input.h b/include/line/input.h
deleted file mode 100644
index 5330742..0000000
--- a/include/line/input.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include <string>
-
-namespace ov4
-{
-
-void clear_below();
-
-std::string readline();
-
-void editor_exit(int code);
-
-} \ No newline at end of file
diff --git a/include/line/mode.h b/include/line/mode.h
deleted file mode 100644
index 3d40cef..0000000
--- a/include/line/mode.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-
-#include <termios.h>
-#include <string>
-
-#include "line/type.h"
-
-namespace ov4
-{
-
-inline termios attr;
-inline bool raw_enabled = false;
-
-void disable_raw();
-void enable_raw();
-
-
-}
diff --git a/src/init.cc b/src/init.cc
index a38aec4..a28b5bb 100644
--- a/src/init.cc
+++ b/src/init.cc
@@ -1,6 +1,7 @@
#include "init.h"
#include <fcntl.h>
+#include "pipe.h"
using namespace std;
@@ -15,6 +16,7 @@ This is free software; see the source for copying conditions. \
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n\
Published under GNU AFFERO GENERAL PUBLIC LICENSE (AGPL) Version 3." << endl;
+ self_pipe_init();
signal_init();
tty_fd = open("/dev/tty", O_RDWR);
diff --git a/src/line/cursor.cc b/src/line/cursor.cc
index 1baa33c..16665a5 100644
--- a/src/line/cursor.cc
+++ b/src/line/cursor.cc
@@ -18,7 +18,6 @@ namespace ov4
void T_line_editor::print_override(const std::string &s)
{
- check_window_update();
// save current cursor position
// print("\x1b[s"); fflush(stdout);
@@ -42,7 +41,6 @@ void T_line_editor::print_override(const std::string &s)
void T_line_editor::move_cursor(char c)
{
- check_window_update();
switch (c)
{
@@ -65,7 +63,6 @@ void T_line_editor::move_cursor(char c)
void T_line_editor::cursor_input_char(char c)
{
- check_window_update();
// if receives any input
// it should move to the latest history
@@ -106,7 +103,6 @@ void T_line_editor::update_window_size()
void T_line_editor::move_cursor(T_cursor_movement_direction d)
{
- check_window_update();
switch (d)
{
@@ -170,7 +166,6 @@ void T_line_editor::move_cursor(T_cursor_movement_direction d)
void T_line_editor::switch_history(T_cursor_movement_direction d)
{
- check_window_update();
switch (d)
{
diff --git a/src/line/input.cc b/src/line/input.cc
index 1e7ca38..0a01760 100644
--- a/src/line/input.cc
+++ b/src/line/input.cc
@@ -34,7 +34,7 @@ string T_line_editor::readline()
if (src == self_pipe_fd[0])
{
check_window_update();
- break;
+ continue;
}
if (iscntrl(c))
{
diff --git a/src/signal/sigwinch_handler.cc b/src/signal/sigwinch_handler.cc
index 20d4550..a686328 100644
--- a/src/signal/sigwinch_handler.cc
+++ b/src/signal/sigwinch_handler.cc
@@ -1,6 +1,7 @@
#include "signal_handler.h"
#include "line/line_editor.h"
+#include "pipe.h"
namespace ov4
{
@@ -8,6 +9,7 @@ namespace ov4
void sigwinch_handler([[maybe_unused]] int sig)
{
windows_size_changed = true;
+ self_pipe_write();
}
} \ No newline at end of file