qemacs-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemacs-commit] qemacs qe.c qe.h x11.c


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs qe.c qe.h x11.c
Date: Mon, 13 Jan 2014 11:28:01 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        14/01/13 11:28:01

Modified files:
        .              : qe.c qe.h x11.c 

Log message:
        improve kill / yank functions
        
        * fix bug in do_kill that caused M-w to fail on read-only buffers
        * pass base buffer to new_yank_buffer to initialize charset correctly

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.118&r2=1.119
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.118&r2=1.119
http://cvs.savannah.gnu.org/viewcvs/qemacs/x11.c?cvsroot=qemacs&r1=1.29&r2=1.30

Patches:
Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -b -r1.118 -r1.119
--- qe.c        13 Jan 2014 11:00:43 -0000      1.118
+++ qe.c        13 Jan 2014 11:28:00 -0000      1.119
@@ -1423,7 +1423,7 @@
     s->offset = 0;
 }
 
-EditBuffer *new_yank_buffer(QEmacsState *qs)
+EditBuffer *new_yank_buffer(QEmacsState *qs, EditBuffer *base)
 {
     char bufname[32];
     EditBuffer *b;
@@ -1439,7 +1439,8 @@
         }
     }
     snprintf(bufname, sizeof(bufname), "*kill-%d*", qs->yank_current + 1);
-    b = eb_new(bufname, BF_UTF8);
+    b = eb_new(bufname, base->flags & BF_UTF8);
+    eb_set_charset(b, base->charset);
     qs->yank_buffers[qs->yank_current] = b;
     return b;
 }
@@ -1458,7 +1459,7 @@
     /* deactivate region hilite */
     s->region_style = 0;
 
-    if (s->b->flags & BF_READONLY)
+    if (dir && (s->b->flags & BF_READONLY))
         return;
 
     if (p1 > p2) {
@@ -1470,8 +1471,7 @@
     b = qs->yank_buffers[qs->yank_current];
     if (!b || !dir || qs->last_cmd_func != (CmdFunc)do_append_next_kill) {
         /* append kill if last command was kill already */
-        b = new_yank_buffer(qs);
-        eb_set_charset(b, s->b->charset);
+        b = new_yank_buffer(qs, s->b);
     }
     /* insert at beginning or end depending on kill direction */
     eb_insert_buffer_convert(b, dir < 0 ? 0 : b->total_size, s->b, p1, len);
@@ -1815,11 +1815,11 @@
     if (!charset)
         return;
 
+    b = s->b;
+
     b1 = eb_new("*tmp*", 0);
     eb_set_charset(b1, charset);
 
-    b = s->b;
-
     /* preserve positions */
     cb = b->first_callback;
     for (i = 0; i < countof(pos) && cb; cb = cb->next) {

Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -b -r1.118 -r1.119
--- qe.h        13 Jan 2014 11:00:44 -0000      1.118
+++ qe.h        13 Jan 2014 11:28:00 -0000      1.119
@@ -1629,7 +1629,7 @@
 void do_backspace(EditState *s, int argval);
 void do_delete_char(EditState *s, int argval);
 void do_tab(EditState *s, int argval);
-EditBuffer *new_yank_buffer(QEmacsState *qs);
+EditBuffer *new_yank_buffer(QEmacsState *qs, EditBuffer *base);
 void do_append_next_kill(EditState *s);
 void do_kill(EditState *s, int p1, int p2, int dir);
 void do_kill_region(EditState *s, int killtype);

Index: x11.c
===================================================================
RCS file: /sources/qemacs/qemacs/x11.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- x11.c       17 Dec 2013 16:06:36 -0000      1.29
+++ x11.c       13 Jan 2014 11:28:01 -0000      1.30
@@ -1093,7 +1093,7 @@
     prop = xev.xselection.property;
 
     /* copy GUI selection a new yank buffer */
-    b = new_yank_buffer(qs);
+    b = new_yank_buffer(qs, NULL);
 
     nread = 0;
     for (;;) {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]