sled

Једноставни уређивач текста
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување aad87577a232f6fd5c46ba9506536ee4c20b91a2
родитељ ec0b0c86dc7b9ec1545cdb6f51604947e764341e
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Tue,  7 Mar 2023 20:44:15 +0100

Change handling of config.h and version.h

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
M.gitignore | 1+
Mclean.do | 2+-
Mconfig.def.h | 9++++++---
Dconfig.h | 301-------------------------------------------------------------------------------
Aconfig.h.do | 5+++++
Mdefault.do | 2+-
Mdefault.h.do | 8++------
Mdefault.o.do | 7+++++--
измењених датотека: 8, додавања: 21(+), брисања: 314(-)

diff --git a/.gitignore b/.gitignore @@ -21,6 +21,7 @@ nohup.out *.pkg.tar.zst src PKGBUILD +config.h sled sled.1 date diff --git a/clean.do b/clean.do @@ -1 +1 @@ -rm -f *~ *.o sled sled.1.gz sled.1 version date +rm -f *~ *.o sled sled.1.gz sled.1 version.h version date diff --git a/config.def.h b/config.def.h @@ -2,11 +2,14 @@ /* Comment out to not create backups */ #define CREATE_BACKUPS -/* Comment out to fail with error if creating backups is not possible due to - * file and directory permissions */ -#define BACKUP_FAIL_OK + +/* Remove comment to not fail with error if creating backups is not possible + * due to file and directory permissions */ +/*#define BACKUP_FAIL_OK*/ + /* Comment out to not wrap lines */ #define ENABLE_WRAP + #define WRAP_WIDTH 80 #ifndef ONLY_DEFS diff --git a/config.h b/config.h @@ -1,301 +0,0 @@ -/* See the file LICENSE for copyright and license details. */ - -/* Comment out to not create backups */ -#define CREATE_BACKUPS -/* Comment out to fail with error if creating backups is not possible due to - * file and directory permissions */ -#define BACKUP_FAIL_OK -/* Comment out to not wrap lines */ -#define ENABLE_WRAP -#define WRAP_WIDTH 80 - -#ifndef ONLY_DEFS -#ifdef SLED_C_GLOBALS -const char* backup_suffix = "~"; -#endif /* SLED_C_GLOBALS */ - -#define DLG_FG TB_BLACK -#define DLG_BG TB_WHITE -#define ERROR_FG TB_WHITE | TB_BOLD -#define ERROR_BG TB_RED -#define ACTION_FG TB_BLACK -#define ACTION_BG TB_WHITE -#define INPUT_FG TB_BLACK -#define INPUT_BG TB_WHITE -#define INPUT_EDIT_FG TB_WHITE -#define INPUT_EDIT_BG TB_BLACK -#define PROMPT_FG TB_YELLOW | TB_BOLD -#define PROMPT_BG TB_MAGENTA -#define SEARCH_FG TB_WHITE | TB_BOLD -#define SEARCH_BG TB_GREEN -#define SEL_FG TB_BLACK -#define SEL_BG TB_WHITE -#define SHADOW_FG TB_BLACK -#define SHADOW_BG TB_BLACK | TB_BOLD -#define STATUS_1_FG TB_WHITE | TB_BOLD -#define STATUS_1_BG TB_BLUE -#define STATUS_2_FG TB_YELLOW | TB_BOLD -#define STATUS_2_BG TB_BLUE -#define STATUS_3_FG TB_WHITE | TB_BOLD -#define STATUS_3_BG TB_BLUE -#define STATUS_4_FG TB_WHITE -#define STATUS_4_BG TB_BLUE -#define TEXT_FG TB_WHITE -#define TEXT_BG TB_DEFAULT -#define TITLE_FG TB_BLACK -#define TITLE_BG TB_WHITE - -#ifdef SLED_C_GLOBALS -int cancel_close(struct DrawState* state); -int cut_to_paste(struct DrawState* state); -int enter_command_mode(struct DrawState* state); -int enter_insert_mode(struct DrawState* state); -int erase_backwards(struct DrawState* state); -int erase_forward(struct DrawState* state); -int erase_line(struct DrawState* state); -int erase_prev_word(struct DrawState* state); -int erase_to_end(struct DrawState* state); -int erase_to_start(struct DrawState* state); -int exit_program(struct DrawState* state); -int input_cancel(struct DrawState* state); -int input_enter(struct DrawState* state); -int input_erase_backwards(struct DrawState* state); -int input_erase_forward(struct DrawState* state); -int input_erase_to_end(struct DrawState* state); -int input_erase_to_start(struct DrawState* state); -int input_insert_space(struct DrawState* state); -int input_insert_tab(struct DrawState* state); -int input_move_end(struct DrawState* state); -int input_move_left(struct DrawState* state); -int input_move_right(struct DrawState* state); -int input_move_start(struct DrawState* state); -int input_move_prev_word(struct DrawState* state); -int input_move_next_word(struct DrawState* state); -int insert_line(struct DrawState* state); -int insert_space(struct DrawState* state); -int insert_tab(struct DrawState* state); -int join_lines(struct DrawState* state); -int move_bottom(struct DrawState* state); -int move_down(struct DrawState* state); -int move_end(struct DrawState* state); -int move_left(struct DrawState* state); -int move_next_word(struct DrawState* state); -int move_page_down(struct DrawState* state); -int move_page_up(struct DrawState* state); -int move_prev_word(struct DrawState* state); -int move_right(struct DrawState* state); -int move_screen_bottom(struct DrawState* state); -int move_screen_middle(struct DrawState* state); -int move_screen_top(struct DrawState* state); -int move_start(struct DrawState* state); -int move_top(struct DrawState* state); -int move_up(struct DrawState* state); -int next_match(struct DrawState* state); -int paste_from_paste(struct DrawState* state); -int prev_match(struct DrawState* state); -int reread_or_callback(struct DrawState* state); -int show_go_to_line(struct DrawState* state); -int show_help(struct DrawState* state); -int show_search(struct DrawState* state); -int toggle_overwrite(struct DrawState* state); -int toggle_selection(struct DrawState* state); -int write_file(struct DrawState* state); -int yank_to_paste(struct DrawState* state); -int suspend_program(struct DrawState* state); - -/* clang-format off */ - -/* Always processed */ -static const struct Key top_level_keys[] = { - { .ev = { .key = TB_KEY_ESC }, .callback = cancel_close }, - { .ev = { .key = TB_KEY_CTRL_Q }, - .callback = exit_program }, - { .ev = { .key = TB_KEY_CTRL_Z }, - .callback = suspend_program } -}; - -/* Only when no dialog/prompt open */ -static const struct Key global_keys[] = { - { .ev = { .key = TB_KEY_ARROW_DOWN }, - .callback = move_down }, - { .ev = { .key = TB_KEY_ARROW_UP }, - .callback = move_up }, - { .ev = { .key = TB_KEY_ARROW_LEFT }, - .callback = move_left }, - { .ev = { .key = TB_KEY_ARROW_RIGHT }, - .callback = move_right }, - { .ev = { .key = TB_KEY_BACKSPACE }, - .callback = erase_backwards }, - { .ev = { .key = TB_KEY_BACKSPACE2 }, - .callback = erase_backwards }, - { .ev = { .key = TB_KEY_CTRL_A }, - .callback = move_start }, - { .ev = { .key = TB_KEY_CTRL_B }, - .callback = move_page_up }, - { .ev = { .key = TB_KEY_CTRL_C }, - .callback = yank_to_paste }, - { .ev = { .key = TB_KEY_CTRL_D }, - .callback = erase_forward }, - { .ev = { .key = TB_KEY_CTRL_E }, - .callback = move_end }, - { .ev = { .key = TB_KEY_CTRL_F }, - .callback = move_page_down }, - { .ev = { .key = TB_KEY_CTRL_K }, - .callback = erase_to_end }, - { .ev = { .key = TB_KEY_CTRL_L }, - .callback = show_go_to_line }, - { .ev = { .key = TB_KEY_CTRL_N }, - .callback = next_match }, - { .ev = { .key = TB_KEY_CTRL_O }, - .callback = reread_or_callback }, - { .ev = { .key = TB_KEY_CTRL_P }, - .callback = prev_match }, - { .ev = { .key = TB_KEY_CTRL_R }, - .callback = move_prev_word }, - { .ev = { .key = TB_KEY_CTRL_SPACE }, - .callback = toggle_selection }, - { .ev = { .key = TB_KEY_CTRL_S }, - .callback = write_file }, - { .ev = { .key = TB_KEY_CTRL_T }, - .callback = move_next_word }, - { .ev = { .key = TB_KEY_CTRL_U }, - .callback = erase_to_start }, - { .ev = { .key = TB_KEY_CTRL_V }, - .callback = paste_from_paste }, - { .ev = { .key = TB_KEY_CTRL_X }, - .callback = cut_to_paste }, - { .ev = { .key = TB_KEY_CTRL_Y }, - .callback = erase_line }, - { .ev = { .key = TB_KEY_CTRL_W }, - .callback = erase_prev_word }, - { .ev = { .key = TB_KEY_DELETE }, - .callback = erase_forward }, - { .ev = { .key = TB_KEY_F1 }, .callback = show_help }, - { .ev = { .key = TB_KEY_F3 }, .callback = next_match }, - { .ev = { .key = TB_KEY_F4 }, .callback = prev_match }, - { .ev = { .key = TB_KEY_F7 }, .callback = show_search }, - { .ev = { .key = TB_KEY_END }, .callback = move_end }, - { .ev = { .key = TB_KEY_HOME }, .callback = move_start }, - { .ev = { .key = TB_KEY_INSERT }, - .callback = toggle_overwrite }, - { .ev = { .key = TB_KEY_PGDN }, .callback = move_page_down }, - { .ev = { .key = TB_KEY_PGUP }, .callback = move_page_up } -}; - -/* Only when input dialog is shown */ -static const struct Key input_dialog_keys[] = { - { .ev = { .key = TB_KEY_ESC }, .callback = input_cancel }, - { .ev = { .key = TB_KEY_ARROW_LEFT }, - .callback = input_move_left }, - { .ev = { .key = TB_KEY_ARROW_RIGHT }, - .callback = input_move_right }, - { .ev = { .key = TB_KEY_BACKSPACE }, - .callback = input_erase_backwards }, - { .ev = { .key = TB_KEY_BACKSPACE2 }, - .callback = input_erase_backwards }, - { .ev = { .key = TB_KEY_CTRL_A }, - .callback = input_move_start }, - { .ev = { .key = TB_KEY_CTRL_D }, - .callback = input_erase_forward }, - { .ev = { .key = TB_KEY_CTRL_E }, - .callback = input_move_end }, - { .ev = { .key = TB_KEY_CTRL_K }, - .callback = input_erase_to_end }, - { .ev = { .key = TB_KEY_CTRL_R }, - .callback = input_move_prev_word }, - { .ev = { .key = TB_KEY_CTRL_T }, - .callback = input_move_next_word }, - { .ev = { .key = TB_KEY_CTRL_U }, - .callback = input_erase_to_start }, - { .ev = { .key = TB_KEY_DELETE }, - .callback = input_erase_forward }, - { .ev = { .key = TB_KEY_END }, .callback = input_move_end }, - { .ev = { .key = TB_KEY_ENTER }, - .callback = input_enter }, - { .ev = { .key = TB_KEY_HOME }, .callback = input_move_start }, - { .ev = { .key = TB_KEY_SPACE }, - .callback = input_insert_space }, - { .ev = { .key = TB_KEY_TAB }, .callback = input_insert_tab } -}; - -/* Only when in insert mode */ -static const struct Key insert_keys[] = { - { .ev = { .key = TB_KEY_CTRL_BACKSLASH }, - .callback = enter_command_mode }, - { .ev = { .key = TB_KEY_ENTER }, - .callback = insert_line }, - { .ev = { .key = TB_KEY_INSERT }, - .callback = toggle_overwrite }, - { .ev = { .key = TB_KEY_SPACE }, - .callback = insert_space }, - { .ev = { .key = TB_KEY_TAB }, .callback = insert_tab } -}; - -/* Only when in command mode */ -static const struct Key command_keys[] = { - { .ev = { .key = TB_KEY_CTRL_BACKSLASH }, - .callback = enter_insert_mode }, - { .ev = { .ch = '/' }, .callback = show_search }, - { .ev = { .ch = ':' }, .callback = show_go_to_line }, - { .ev = { .ch = '0' }, .callback = move_start }, - { .ev = { .ch = '$' }, .callback = move_end }, - { .ev = { .ch = 'd' }, .callback = erase_line }, - { .ev = { .ch = 'G' }, .callback = move_bottom }, - { .ev = { .ch = 'g' }, .callback = move_top }, - { .ev = { .ch = 'H' }, .callback = move_screen_top }, - { .ev = { .ch = 'h' }, .callback = move_left }, - { .ev = { .ch = 'J' }, .callback = join_lines }, - { .ev = { .ch = 'j' }, .callback = move_down }, - { .ev = { .ch = 'k' }, .callback = move_up }, - { .ev = { .ch = 'L' }, .callback = move_screen_bottom }, - { .ev = { .ch = 'l' }, .callback = move_right }, - { .ev = { .ch = 'M' }, .callback = move_screen_middle }, - { .ev = { .ch = 'N' }, .callback = prev_match }, - { .ev = { .ch = 'n' }, .callback = next_match }, - { .ev = { .ch = 'P' }, .callback = paste_from_paste }, - { .ev = { .ch = 'q' }, .callback = exit_program }, - { .ev = { .ch = 'R' }, .callback = toggle_overwrite }, - { .ev = { .ch = 'r' }, .callback = reread_or_callback }, - { .ev = { .ch = 'v' }, .callback = toggle_selection }, - { .ev = { .ch = 'W' }, .callback = move_prev_word }, - { .ev = { .ch = 'w' }, .callback = move_next_word }, - { .ev = { .ch = 'X' }, .callback = cut_to_paste }, - { .ev = { .ch = 'x' }, .callback = erase_forward }, - { .ev = { .ch = 'y' }, .callback = yank_to_paste }, - { .ev = { .ch = 'Z' }, .callback = write_file } -}; -/* clang-format on */ -#endif /* SLED_C_GLOBALS */ - -void format_filename(char* result, size_t result_size, const char* format, - const struct DrawState* state); -void format_mode(char* result, size_t result_size, const char* format, - const struct DrawState* state); -void format_position(char* result, size_t result_size, const char* format, - const struct DrawState* state); - -/* clang-format off */ -static const struct StatusSegment status_segments[] = { - {.format = "%s%s", - .callback = format_filename, - .fg = STATUS_1_FG, - .bg = STATUS_1_BG, - .alignment = LEFT}, - { .format = "%s", - .callback = format_mode, - .fg = STATUS_2_FG, - .bg = STATUS_2_BG, - .alignment = CENTER}, - {.format = "%5ld:%5ld (%3ld%%)", - .callback = format_position, - .fg = STATUS_3_FG, - .bg = STATUS_3_BG, - .alignment = CENTER}, - {.format = "F1=HELP, C-Q=QUIT", - .callback = NULL, - .fg = STATUS_4_FG, - .bg = STATUS_4_BG, - .alignment = RIGHT}, -}; -/* clang-format on */ -#endif /* ONLY_DEFS */ diff --git a/config.h.do b/config.h.do @@ -0,0 +1,5 @@ +if [ ! -r $1 ]; then + cat config.def.h >$3 +fi +redo-always +redo-stamp <$3 diff --git a/default.do b/default.do @@ -3,7 +3,7 @@ if [ -r $1.in ]; then read VERSION <version read DATE <date sed -e "s/%VERSION%/$VERSION/g" \ - -e "s/%DATE%/$DATE/g" <$1.in + -e "s/%DATE%/$DATE/g" <$1.in >$3 else echo "$0: don't know how to build '$1'" >&2 exit 99 diff --git a/default.h.do b/default.h.do @@ -3,10 +3,6 @@ if [ -r $1.in ]; then read VERSION <version read DATE <date sed -e "s/%VERSION%/$VERSION/g" \ - -e "s/%DATE%/$DATE/g" <$1.in -else - if [ -f $2.def.h ]; then - redo-ifchange $2.def.h - cat $2.def.h > $3 - fi + -e "s/%DATE%/$DATE/g" <$1.in >$3 + redo-stamp <$3 fi diff --git a/default.o.do b/default.o.do @@ -1,5 +1,8 @@ -for f in *.h; do +{ for f in *.h; do echo $f -done | xargs redo-ifchange +done +if [ ! -r config.h ]; then + echo config.h +fi; } | sort | uniq | xargs redo-ifchange redo-ifchange $2.c ${SLED_CC:-gcc -g} -Wall -std=c99 -c $2.c -o $3