qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs clang.c qe.c qe.h qeconfig.h


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs clang.c qe.c qe.h qeconfig.h
Date: Fri, 12 Jan 2007 15:06:16 +0000

CVSROOT:        /cvsroot/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        07/01/12 15:06:16

Modified files:
        .              : clang.c qe.c qe.h qeconfig.h 

Log message:
        renamed do_less_quit() to do_less_exit() for consistency with command 
name
        fixed crash in do_less_exit() when invoking "less-exit" with A-x
        fixed c auto-indenter to not move point unless within the indent space
        fixed the electric-c mode

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/clang.c?cvsroot=qemacs&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.30&r2=1.31
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/qemacs/qeconfig.h?cvsroot=qemacs&r1=1.12&r2=1.13

Patches:
Index: clang.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/clang.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- clang.c     31 Dec 2006 19:34:01 -0000      1.7
+++ clang.c     12 Jan 2007 15:06:16 -0000      1.8
@@ -461,6 +461,8 @@
     
     /* the number of needed spaces is in 'pos' */
 
+    /* CG: should not modify buffer is indentation in correct */
+
     /* suppress leading spaces */
     offset1 = offset;
     for (;;) {
@@ -472,33 +474,40 @@
     size = offset1 - offset;
     if (size > 0) {
         eb_delete(s->b, offset, size);
-        s->offset -= size;
-        if (s->offset < offset)
-            s->offset = offset;
     }
     /* insert needed spaces */
-    insert_spaces(s, &offset, pos);
-    s->offset = offset;
+    offset1 = offset;
+    insert_spaces(s, &offset1, pos);
+    if (s->offset == offset) {
+        /* move to the inddentation if point was in indent space */
+        s->offset = offset1;
+    }
 }
     
 static void do_c_indent_region(EditState *s)
 {
-    int col_num, p1, p2, tmp;
+    int col_num, line1, line2, begin;
 
-    /* we do it with lines to avoid offset variations during indenting */
-    eb_get_pos(s->b, &p1, &col_num, s->offset);
-    eb_get_pos(s->b, &p2, &col_num, s->b->mark);
-
-    if (p1 > p2) {
-        tmp = p1;
-        p1 = p2;
-        p2 = tmp;
+    /* Swap point and mark so point <= mark */
+    if (s->offset > s->b->mark) {
+        int tmp = s->b->mark;
+        s->b->mark = s->offset;
+        s->offset = tmp;
     }
+    /* We do it with lines to avoid offset variations during indenting */
+    eb_get_pos(s->b, &line1, &col_num, s->offset);
+    eb_get_pos(s->b, &line2, &col_num, s->b->mark);
+
+    /* Remember start of first line of region to later set mark */
+    begin = eb_goto_pos(s->b, line1, 0);
 
-    for (;p1 <= p2; p1++) {
-         s->offset = eb_goto_pos(s->b, p1, 0);
+    for (; line1 <= line2; line1++) {
+        s->offset = eb_goto_pos(s->b, line1, 0);
         do_c_indent(s);
     }
+    /* move point to end of region, and mark to begin of first row */
+    s->offset = s->b->mark;
+    s->b->mark = begin;
 }
 
 static void do_c_electric(EditState *s, int key)
@@ -534,7 +543,8 @@
 /* specific C commands */
 static CmdDef c_commands[] = {
     CMD_( KEY_CTRL('i'), KEY_NONE, "c-indent-command", do_c_indent, "*")
-    CMD_( KEY_NONE, KEY_NONE, "c-indent-region", do_c_indent_region, "*")
+    CMD_( KEY_META(KEY_CTRL('\\')), KEY_NONE, "c-indent-region",
+          do_c_indent_region, "*")
     /* CG: should use 'k' intrinsic argument */
     CMDV( ';', KEY_NONE, "c-electric-semi&comma", do_c_electric, ';', "*v")
     CMDV( ':', KEY_NONE, "c-electric-colon", do_c_electric, ':', "*v")

Index: qe.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/qe.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- qe.c        31 Dec 2006 19:34:01 -0000      1.30
+++ qe.c        12 Jan 2007 15:06:16 -0000      1.31
@@ -1354,6 +1354,7 @@
 {
     /* well, currently nothing needs to be aborted in global context */
     /* CG: Should remove popups, sidepanes, helppanes... */
+    put_status(s, "Canceled.");
 }
 
 /* block functions */
@@ -4496,8 +4497,11 @@
     qs->active_window = minibuffer_saved_active;
 
     /* force status update */
-    strcpy(qs->status_shadow, " ");
-    put_status(NULL, " ");
+    //strcpy(qs->status_shadow, " ");
+    if (do_abort)
+        put_status(NULL, "Canceled.");
+    else
+        put_status(NULL, "");
 
     /* call the callback */
     cb = minibuffer_cb;
@@ -4588,17 +4592,20 @@
 static EditState *popup_saved_active;
 
 /* less like mode */
-void do_less_quit(EditState *s)
+void do_less_exit(EditState *s)
 {
     QEmacsState *qs = s->qe_state;
     EditBuffer *b;
 
     /* CG: should verify that popup_saved_active still exists */
+    /* CG: This command crashes if not invoked from less popup mode */
+    if (popup_saved_active) {
     qs->active_window = popup_saved_active;
     b = s->b;
     edit_close(s);
     eb_free(b);
     do_refresh(qs->active_window);
+    }
 }
 
 /* show a popup on a readonly buffer */

Index: qe.h
===================================================================
RCS file: /cvsroot/qemacs/qemacs/qe.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- qe.h        31 Dec 2006 19:34:01 -0000      1.26
+++ qe.h        12 Jan 2007 15:06:16 -0000      1.27
@@ -681,10 +681,8 @@
 int save_buffer(EditBuffer *b);
 void set_buffer_name(EditBuffer *b, const char *name1);
 void set_filename(EditBuffer *b, const char *filename);
-int eb_add_callback(EditBuffer *b, EditBufferCallback cb,
-                    void *opaque);
-void eb_free_callback(EditBuffer *b, EditBufferCallback cb,
-                      void *opaque);
+int eb_add_callback(EditBuffer *b, EditBufferCallback cb, void *opaque);
+void eb_free_callback(EditBuffer *b, EditBufferCallback cb, void *opaque);
 void eb_offset_callback(EditBuffer *b,
                         void *opaque,
                         enum LogOperation op,
@@ -1366,7 +1364,7 @@
 void do_history(EditState *s, int dir);
 void do_minibuffer_get_binary(EditState *s);
 void do_minibuffer_exit(EditState *s, int abort);
-void do_less_quit(EditState *s);
+void do_less_exit(EditState *s);
 void do_toggle_read_only(EditState *s);
 void do_not_modified(EditState *s);
 void do_find_alternate_file(EditState *s, const char *filename);

Index: qeconfig.h
===================================================================
RCS file: /cvsroot/qemacs/qemacs/qeconfig.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- qeconfig.h  11 Dec 2006 23:11:31 -0000      1.12
+++ qeconfig.h  12 Jan 2007 15:06:16 -0000      1.13
@@ -205,7 +205,7 @@
 };
 
 CmdDef less_commands[] = {
-    CMD0( 'q', KEY_CTRL('g'), "less-exit", do_less_quit)
+    CMD0( 'q', KEY_CTRL('g'), "less-exit", do_less_exit)
     CMD1( '/', KEY_NONE, "less-isearch", do_isearch, 1)
     CMD_DEF_END,
 };




reply via email to

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