diff --git a/c_indent.c b/c_indent.c new file mode 100644 index 0000000..af77190 --- /dev/null +++ b/c_indent.c @@ -0,0 +1,23 @@ +void +c_indent(char *c) { + Row *row = b_getline(buffer, atoi(c + 2)); + if (row == NULL) { puts ("invalid line"); return; } + + + for(int i = ROW_SIZE - 1; i >= 1; i--) { + row->text[i] = row->text[i - 1]; + } + row->text[0] = '\t'; +} + +void +c_unindent(char *c) { + Row *row = b_getline(buffer, atoi(c + 2)); + if (row == NULL) { puts ("invalid line"); return; } + + for(int i = 0; i < ROW_SIZE - 1; i++) { + row->text[i] = row->text[i + 1]; + } + row->text[ROW_SIZE] = 0; +} + diff --git a/commands.c b/commands.c index c6cd68e..7be5b47 100644 --- a/commands.c +++ b/commands.c @@ -11,3 +11,7 @@ NULL, ['p'] = NULL, ['p'] = c_print, ['P'] = NULL, +[']'] = c_indent, +['['] = c_unindent, + + diff --git a/efn.c b/efn.c index fa2d546..ae7b56b 100644 --- a/efn.c +++ b/efn.c @@ -22,3 +22,5 @@ #include "c_save.c" #include "c_insertline.c" +#include "c_indent.c" + diff --git a/efn.h b/efn.h index 1e09275..9d6775c 100644 --- a/efn.h +++ b/efn.h @@ -14,3 +14,7 @@ Row *b_getline(Row *, int); void c_writeline(char *); void c_save(char*); void c_insertline(char *); +void c_indent(char *); +void c_unindent(char *); + + diff --git a/main.c b/main.c index 48101b2..e55025f 100644 --- a/main.c +++ b/main.c @@ -3,8 +3,8 @@ main(int argc, char **argv) { static char buf[COM_BUF_SIZE]; while(1) { memset(buf, 0, sizeof(buf)); -printf(" > "); -char *com = fgets(buf, sizeof(buf), stdin); + printf(" > "); + char *com = fgets(buf, sizeof(buf), stdin); for (int i = 0; i < sizeof(buf); i++) if (buf[i] == '\n') buf[i] = '\0'; @@ -18,3 +18,4 @@ char *com = fgets(buf, sizeof(buf), stdin); +