aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ring.c
diff options
context:
space:
mode:
authorRobin Haberkorn <rhaberkorn@fmsbw.de>2025-12-19 23:25:48 +0100
committerRobin Haberkorn <rhaberkorn@fmsbw.de>2025-12-19 23:25:48 +0100
commit2592ef74ab2eba57c32fe21993ce01e9698b106f (patch)
treeb733680e79aab862c0ba748bb91016a752c8773a /src/ring.c
parent714875f3c0c22ed01a8e777755b281c97f2b52b8 (diff)
fixup: renamed "backups" to "recovery files"HEADmaster-fmsbw-cimaster
* Other editors call "backup files" previous copies of saved files. This role would be served by savepoint files in SciTECO. * Likewise filename~ would point to such a backup file. It therefore makes sense that savepoint files also end in tildes (.teco-n-filename~). * Security copies of modified buffers would be called "auto-saves" (Emacs) or "swap files" (Vim). Both of these terms is IMHO misleading, so SciTECO now uses the term "recovery file". * "Recovery files" are now named #filename# just like in Emacs.
Diffstat (limited to 'src/ring.c')
-rw-r--r--src/ring.c46
1 files changed, 24 insertions, 22 deletions
diff --git a/src/ring.c b/src/ring.c
index afd6b25..bc04e50 100644
--- a/src/ring.c
+++ b/src/ring.c
@@ -77,9 +77,11 @@ teco_buffer_undo_edit(teco_buffer_t *ctx)
/** @private @memberof teco_buffer_t */
static inline gchar *
-teco_buffer_get_backup(teco_buffer_t *ctx)
+teco_buffer_get_recovery(teco_buffer_t *ctx)
{
- return g_strconcat(ctx->filename, "~", NULL);
+ g_autofree gchar *dirname = g_path_get_dirname(ctx->filename);
+ g_autofree gchar *basename = g_path_get_basename(ctx->filename);
+ return g_strconcat(dirname, G_DIR_SEPARATOR_S, "#", basename, "#", NULL);
}
/** @private @memberof teco_buffer_t */
@@ -116,10 +118,10 @@ teco_buffer_save(teco_buffer_t *ctx, const gchar *filename, GError **error)
*/
if (ctx == teco_ring_current && !teco_qreg_current)
undo__teco_interface_info_update_buffer(ctx);
- if (ctx->state == TECO_BUFFER_DIRTY_BACKEDUP) {
- g_autofree gchar *filename_backup = teco_buffer_get_backup(ctx);
- g_unlink(filename_backup);
- /* on rubout, we do not restore the backup file */
+ if (ctx->state == TECO_BUFFER_DIRTY_DUMPED) {
+ g_autofree gchar *filename_recovery = teco_buffer_get_recovery(ctx);
+ g_unlink(filename_recovery);
+ /* on rubout, we do not restore the recovery file */
ctx->state = TECO_BUFFER_DIRTY;
}
teco_undo_guint(ctx->state) = TECO_BUFFER_CLEAN;
@@ -141,9 +143,9 @@ teco_buffer_save(teco_buffer_t *ctx, const gchar *filename, GError **error)
static inline void
teco_buffer_free(teco_buffer_t *ctx)
{
- if (ctx->state == TECO_BUFFER_DIRTY_BACKEDUP) {
- g_autofree gchar *filename_backup = teco_buffer_get_backup(ctx);
- g_unlink(filename_backup);
+ if (ctx->state == TECO_BUFFER_DIRTY_DUMPED) {
+ g_autofree gchar *filename_recovery = teco_buffer_get_recovery(ctx);
+ g_unlink(filename_recovery);
}
teco_view_free(ctx->view);
@@ -242,9 +244,9 @@ teco_ring_find_by_id(teco_int_t id)
static void
teco_ring_undirtify(void)
{
- if (teco_ring_current->state == TECO_BUFFER_DIRTY_BACKEDUP) {
- g_autofree gchar *filename_backup = teco_buffer_get_backup(teco_ring_current);
- g_unlink(filename_backup);
+ if (teco_ring_current->state == TECO_BUFFER_DIRTY_DUMPED) {
+ g_autofree gchar *filename_recovery = teco_buffer_get_recovery(teco_ring_current);
+ g_unlink(filename_recovery);
}
teco_ring_current->state = TECO_BUFFER_CLEAN;
@@ -268,7 +270,7 @@ teco_ring_dirtify(void)
break;
case TECO_BUFFER_DIRTY:
break;
- case TECO_BUFFER_DIRTY_BACKEDUP:
+ case TECO_BUFFER_DIRTY_DUMPED:
/* set to TECO_BUFFER_DIRTY on rubout */
teco_undo_guint(teco_ring_current->state);
break;
@@ -306,22 +308,22 @@ teco_ring_save_all_dirty_buffers(GError **error)
}
/**
- * Backup interval in seconds or 0 if disabled.
+ * Recovery creation interval in seconds or 0 if disabled.
* It's not currently enforced in batch mode.
*/
-guint teco_ring_backup_interval = 5*60;
+guint teco_ring_recovery_interval = 5*60;
/**
- * Back up all dirty buffers.
+ * Create recovery files for all dirty buffers.
*
- * Should be called by the interface every teco_ring_backup_interval seconds.
+ * Should be called by the interface every teco_ring_recovery_interval seconds.
* This does not generate or expect undo tokens, so it can be called
* even when idlying.
*/
void
-teco_ring_backup(void)
+teco_ring_dump_recovery(void)
{
- g_assert(teco_ring_backup_interval > 0);
+ g_assert(teco_ring_recovery_interval > 0);
for (teco_tailq_entry_t *cur = teco_ring_head.first; cur != NULL; cur = cur->next) {
teco_buffer_t *buffer = (teco_buffer_t *)cur;
@@ -333,9 +335,9 @@ teco_ring_backup(void)
if (buffer->state != TECO_BUFFER_DIRTY || !buffer->filename)
continue;
- g_autofree gchar *filename_backup = teco_buffer_get_backup(buffer);
+ g_autofree gchar *filename_recovery = teco_buffer_get_recovery(buffer);
- g_autoptr(GIOChannel) channel = g_io_channel_new_file(filename_backup, "w", NULL);
+ g_autoptr(GIOChannel) channel = g_io_channel_new_file(filename_recovery, "w", NULL);
if (!channel)
continue;
@@ -355,7 +357,7 @@ teco_ring_backup(void)
if (!teco_view_save_to_channel(buffer->view, channel, NULL))
continue;
- buffer->state = TECO_BUFFER_DIRTY_BACKEDUP;
+ buffer->state = TECO_BUFFER_DIRTY_DUMPED;
}
}