чување 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:
измењених датотека: 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