qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs qe.h bufed.c list.c


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs qe.h bufed.c list.c
Date: Tue, 01 Apr 2014 07:56:42 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        14/04/01 07:56:41

Modified files:
        .              : qe.h bufed.c list.c 

Log message:
        improve list-mode
        
        * combine static buffer styles with full line highlight.
        * fix list_toggle_selection for read-only buffers and non byte based 
charsets
        * pass direction flag to list_toggle_selection for bufed-backward-unmark
        * add bufed-unmark-backward on DEL
        * bufed-next-line and bufed-previous-line on n, C-n, p and C-p

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.158&r2=1.159
http://cvs.savannah.gnu.org/viewcvs/qemacs/bufed.c?cvsroot=qemacs&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/qemacs/list.c?cvsroot=qemacs&r1=1.12&r2=1.13

Patches:
Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -b -r1.158 -r1.159
--- qe.h        24 Mar 2014 10:58:10 -0000      1.158
+++ qe.h        1 Apr 2014 07:55:32 -0000       1.159
@@ -1924,7 +1924,7 @@
 
 extern ModeDef list_mode;
 
-void list_toggle_selection(EditState *s);
+void list_toggle_selection(EditState *s, int dir);
 int list_get_pos(EditState *s);
 int list_get_offset(EditState *s);
 
@@ -1932,7 +1932,7 @@
 
 void do_dired(EditState *s);
 
-/* c_mode.c */
+/* clang.c */
 
 #define CLANG_C      0x01
 #define CLANG_CPP    0x02

Index: bufed.c
===================================================================
RCS file: /sources/qemacs/qemacs/bufed.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- bufed.c     24 Mar 2014 10:58:09 -0000      1.28
+++ bufed.c     1 Apr 2014 07:55:49 -0000       1.29
@@ -377,9 +377,10 @@
     /* bufed-abort should restore previous buffer in right-window */
     CMD1( KEY_CTRL('g'), KEY_NONE,
           "bufed-abort", do_delete_window, 0)
-    CMD0( ' ', KEY_CTRL('t'),
-          "bufed-toggle-selection", list_toggle_selection)
-    /* BS should go back to previous item and unmark it */
+    CMD1( ' ', KEY_CTRL('t'),
+          "bufed-toggle-selection", list_toggle_selection, 1)
+    CMD1( KEY_DEL, KEY_NONE,
+          "bufed-unmark-backward", list_toggle_selection, -1)
     //CMD1( 'u', KEY_NONE, "bufed-unmark", bufed_mark, ' ')
     CMD0( '~', KEY_NONE,
           "bufed-clear-modified", bufed_clear_modified)
@@ -387,10 +388,10 @@
           "bufed-toggle-read-only", bufed_toggle_read_only)
     CMD1( 'a', KEY_NONE,
           "bufed-toggle-all-visible", bufed_refresh, 1)
-    CMD1( 'n', KEY_NONE,
-          "next-line", do_up_down, 1)
-    CMD1( 'p', KEY_NONE,
-          "previous-line", do_up_down, -1)
+    CMD1( 'n', KEY_CTRL('n'), /* KEY_DOWN */
+          "bufed-next-line", do_up_down, 1)
+    CMD1( 'p', KEY_CTRL('p'), /* KEY_UP */
+          "bufed-previous-line", do_up_down, -1)
     CMD1( 'r', 'g',
           "bufed-refresh", bufed_refresh, 0)
     CMD0( 'k', 'd',

Index: list.c
===================================================================
RCS file: /sources/qemacs/qemacs/list.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- list.c      10 Feb 2014 21:21:40 -0000      1.12
+++ list.c      1 Apr 2014 07:56:35 -0000       1.13
@@ -31,16 +31,19 @@
     int offset, len;
 
     offset = *offsetp;
-    len = eb_get_line(s->b, buf, buf_size, offsetp);
+    /* Get line contents including static buffer styles */
+    len = get_non_colorized_line(s, buf, buf_size, offsetp, line_num);
 
     if (((qs->active_window == s) || s->force_highlight) &&
           s->offset >= offset && s->offset < *offsetp)
     {
         /* highlight the line if the cursor is inside */
+        clear_color(buf, len);
         set_color(buf, buf + len, QE_STYLE_HIGHLIGHT);
     } else
     if (buf[0] == '*') {
         /* selection */
+        clear_color(buf, len);
         set_color(buf, buf + len, QE_STYLE_SELECTION);
     }
     return len;
@@ -57,25 +60,31 @@
 /* get current offset of the line in list */
 int list_get_offset(EditState *s)
 {
-    int line, col;
-    eb_get_pos(s->b, &line, &col, s->offset);
-    return eb_goto_pos(s->b, line, 0);
+    return eb_goto_bol(s->b, s->offset);
 }
 
-void list_toggle_selection(EditState *s)
+void list_toggle_selection(EditState *s, int dir)
 {
-    int offset;
-    unsigned char ch;
+    int offset, offset1;
+    int ch, flags;
+
+    if (dir < 0)
+        text_move_up_down(s, -1);
 
     offset = list_get_offset(s);
 
-    eb_read(s->b, offset , &ch, 1);
+    ch = eb_nextc(s->b, offset, &offset1);
     if (ch == ' ')
         ch = '*';
     else
         ch = ' ';
-    eb_write(s->b, offset , &ch, 1);
+    flags = s->b->flags & BF_READONLY;
+    s->b->flags ^= flags;
+    eb_delete_uchar(s->b, offset);
+    eb_insert_uchar(s->b, offset, ch);
+    s->b->flags ^= flags;
 
+    if (dir > 0)
     text_move_up_down(s, 1);
 }
 



reply via email to

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