Fix cat mode
This commit is contained in:
parent
1e973232df
commit
77c4392d1c
1 changed files with 24 additions and 24 deletions
48
vip.c
48
vip.c
|
@ -171,12 +171,13 @@ void refresh_screen(void)
|
||||||
if (cur_editor->rx < cur_editor->coloff) {
|
if (cur_editor->rx < cur_editor->coloff) {
|
||||||
cur_editor->coloff = cur_editor->rx;
|
cur_editor->coloff = cur_editor->rx;
|
||||||
}
|
}
|
||||||
if (cur_editor->rx >= cur_editor->coloff + cols) {
|
|
||||||
cur_editor->coloff = cur_editor->rx - cols + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cat_mode)
|
if (!cat_mode) {
|
||||||
|
if (cur_editor->rx >= cur_editor->coloff + cols) {
|
||||||
|
cur_editor->coloff = cur_editor->rx - cols + 1;
|
||||||
|
}
|
||||||
bprintf("\033H\033[2 q");
|
bprintf("\033H\033[2 q");
|
||||||
|
}
|
||||||
|
|
||||||
draw_rows();
|
draw_rows();
|
||||||
if (!cat_mode) {
|
if (!cat_mode) {
|
||||||
|
@ -580,10 +581,13 @@ void draw_rows(void)
|
||||||
} else {
|
} else {
|
||||||
int len = cur_editor->row[filerow].render_size - cur_editor->coloff;
|
int len = cur_editor->row[filerow].render_size - cur_editor->coloff;
|
||||||
if (len < 0) len = 0;
|
if (len < 0) len = 0;
|
||||||
if (len > cols) len = cols;
|
if (!cat_mode && len > cols) len = cols;
|
||||||
char *c = &cur_editor->row[filerow].render[cur_editor->coloff];
|
char *c = &cur_editor->row[filerow].render[cur_editor->coloff];
|
||||||
unsigned char *hl = &cur_editor->row[filerow].hl[cur_editor->coloff];
|
unsigned char *hl = &cur_editor->row[filerow].hl[cur_editor->coloff];
|
||||||
|
|
||||||
|
FILE *f=fopen("/home/night/a", "a");
|
||||||
|
fprintf(f, "%s, cur_editor->coloff: %d\n", c, cur_editor->coloff);
|
||||||
|
fclose(f);
|
||||||
for (int j = 0; j < len; j++) {
|
for (int j = 0; j < len; j++) {
|
||||||
if (iscntrl(c[j])) {
|
if (iscntrl(c[j])) {
|
||||||
bprintf("%s%c\033[m", OVERLAY_2_BG, '@' + c[j]);
|
bprintf("%s%c\033[m", OVERLAY_2_BG, '@' + c[j]);
|
||||||
|
@ -999,7 +1003,6 @@ void select_syntax(void)
|
||||||
|
|
||||||
void die(const char *s)
|
void die(const char *s)
|
||||||
{
|
{
|
||||||
cleanup();
|
|
||||||
perror(s);
|
perror(s);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -1015,28 +1018,27 @@ void handle_sigwinch(int ignore)
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
struct sigaction sa;
|
|
||||||
sa.sa_handler = handle_sigwinch;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
|
|
||||||
if (sigaction(SIGWINCH, &sa, NULL) == -1) {
|
|
||||||
perror("sigaction");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tcgetattr(STDIN_FILENO, &oldt) == -1) {
|
|
||||||
die("tcgetattr");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc > 2 && !strcmp(argv[1], "-c")) {
|
if (argc > 2 && !strcmp(argv[1], "-c")) {
|
||||||
cat_mode = 1;
|
cat_mode = 1;
|
||||||
} else {
|
} else {
|
||||||
|
struct sigaction sa;
|
||||||
|
sa.sa_handler = handle_sigwinch;
|
||||||
|
sa.sa_flags = SA_RESTART;
|
||||||
|
sigemptyset(&sa.sa_mask);
|
||||||
|
|
||||||
|
if (sigaction(SIGWINCH, &sa, NULL) == -1) {
|
||||||
|
perror("sigaction");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tcgetattr(STDIN_FILENO, &oldt) == -1) {
|
||||||
|
die("tcgetattr");
|
||||||
|
}
|
||||||
if (get_window_size(&rows, &cols) == -1) {
|
if (get_window_size(&rows, &cols) == -1) {
|
||||||
die("get_window_size");
|
die("get_window_size");
|
||||||
}
|
}
|
||||||
bprintf("\033[?1049h\033[2J\033[2q");
|
bprintf("\033[?1049h\033[2J\033[2q");
|
||||||
|
|
||||||
newt = oldt;
|
newt = oldt;
|
||||||
/* Disable canonical mode and echo */
|
/* Disable canonical mode and echo */
|
||||||
newt.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
|
newt.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
|
||||||
|
@ -1057,7 +1059,6 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cat_mode) {
|
if (cat_mode) {
|
||||||
cleanup();
|
|
||||||
refresh_screen();
|
refresh_screen();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1302,8 +1303,7 @@ void cleanup(void)
|
||||||
if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &oldt) == -1) {
|
if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &oldt) == -1) {
|
||||||
die("tcsetattr");
|
die("tcsetattr");
|
||||||
}
|
}
|
||||||
if (!cat_mode)
|
bprintf("\033[2J\033[?1049l");
|
||||||
bprintf("\033[2J\033[?1049l");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue