[PATCH] Editor file locking
Adam Byrtek / alpha
alpha at student.uci.agh.edu.pl
Fri Apr 4 13:24:18 UTC 2003
On Wed, Apr 02, 2003 at 02:48:07PM -0500, Pavel Roskin wrote:
> One bug that needs to be fixed - if I use Enter to modify the file and I
> get a "file locked" message, the old current line is not repainted. Try
> it to see what I mean.
Looks like it is because the screen gets refreshed after query_dialog,
and edit->force value set in edit_insert is lost...
Patch attached.
--
_.|._ |_ _. : Adam Byrtek /alpha alpha at debian.org
(_|||_)| |(_| : http://krakow.linux.org.pl/ pgp 0xB25952C0
|
-------------- next part --------------
Index: edit.c
===================================================================
RCS file: /cvs/gnome/mc/edit/edit.c,v
retrieving revision 1.75
diff -u -r1.75 edit.c
--- edit.c 2 Apr 2003 22:25:00 -0000 1.75
+++ edit.c 4 Apr 2003 13:23:21 -0000
@@ -838,6 +838,10 @@
if (c == '\n')
edit->start_line++;
}
+
+ /* tell that we've modified the file */
+ edit_modification (edit);
+
/* now we must update some info on the file and check if a redraw is required */
if (c == '\n') {
if (edit->book_mark)
@@ -846,8 +850,6 @@
edit->total_lines++;
edit->force |= REDRAW_LINE_ABOVE | REDRAW_AFTER_CURSOR;
}
- /* tell that we've modified the file */
- edit_modification (edit);
/* save the reverse command onto the undo stack */
edit_push_action (edit, BACKSPACE);
@@ -885,13 +887,13 @@
if (c == '\n')
edit->start_line++;
}
+ edit_modification (edit);
if (c == '\n') {
if (edit->book_mark)
book_mark_inc (edit, edit->curs_line);
edit->total_lines++;
edit->force |= REDRAW_AFTER_CURSOR;
}
- edit_modification (edit);
edit_push_action (edit, DELCHAR);
edit->mark1 += (edit->mark1 >= edit->curs1);
@@ -926,6 +928,7 @@
edit->last_byte--;
edit->curs2--;
+ edit_modification (edit);
if (p == '\n') {
if (edit->book_mark)
book_mark_dec (edit, edit->curs_line);
@@ -938,7 +941,6 @@
if (p == '\n')
edit->start_line--;
}
- edit_modification (edit);
return p;
}
@@ -963,6 +965,7 @@
edit->last_byte--;
edit->curs1--;
+ edit_modification (edit);
if (p == '\n') {
if (edit->book_mark)
book_mark_dec (edit, edit->curs_line);
@@ -977,7 +980,6 @@
if (p == '\n')
edit->start_line--;
}
- edit_modification (edit);
return p;
}
Index: editlock.c
===================================================================
RCS file: /cvs/gnome/mc/edit/editlock.c,v
retrieving revision 1.2
diff -u -r1.2 editlock.c
--- editlock.c 2 Apr 2003 22:25:00 -0000 1.2
+++ editlock.c 4 Apr 2003 13:23:22 -0000
@@ -97,7 +97,8 @@
/* Tries to raise file lock
- Returns 1 on success, 0 on failure, -1 if abort */
+ Returns 1 on success, 0 on failure, -1 if abort
+ Warning: Might do screen refresh and lose edit->force */
int
edit_lock_file (char *fname)
{
More information about the mc-devel
mailing list