qemacs-commit
[Top][All Lists]
Advanced

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

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


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs clang.c dired.c qe.c qe.h qeconfig.h she...
Date: Mon, 10 Aug 2015 19:44:20 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        15/08/10 19:44:20

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

Log message:
        dired: improve preview-mode
        
        - pass bf_flags for buffer creation from do_find_file() ...
        - do not set BF_PREVIEW flag for existing buffers from dired
        - exit preview-mode with C-g and RET
        - SPC and BSP move by page in preview-mode
        - add Preview mode-line indicator
        - add preview-mode() command

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/clang.c?cvsroot=qemacs&r1=1.93&r2=1.94
http://cvs.savannah.gnu.org/viewcvs/qemacs/dired.c?cvsroot=qemacs&r1=1.53&r2=1.54
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.191&r2=1.192
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.189&r2=1.190
http://cvs.savannah.gnu.org/viewcvs/qemacs/qeconfig.h?cvsroot=qemacs&r1=1.49&r2=1.50
http://cvs.savannah.gnu.org/viewcvs/qemacs/shell.c?cvsroot=qemacs&r1=1.95&r2=1.96

Patches:
Index: clang.c
===================================================================
RCS file: /sources/qemacs/qemacs/clang.c,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -b -r1.93 -r1.94
--- clang.c     10 Aug 2015 18:29:49 -0000      1.93
+++ clang.c     10 Aug 2015 19:44:19 -0000      1.94
@@ -1390,8 +1390,11 @@
 static void do_c_electric(EditState *s, int key)
 {
     int offset = s->offset;
+    int was_preview = s->b->flags & BF_PREVIEW;
 
     do_char(s, key, 1);
+    if (was_preview)
+        return;
     /* reindent line at original point */
     if (s->mode->indent_func)
         (s->mode->indent_func)(s, eb_goto_bol(s->b, offset));
@@ -1400,8 +1403,11 @@
 static void do_c_return(EditState *s)
 {
     int offset = s->offset;
+    int was_preview = s->b->flags & BF_PREVIEW;
 
     do_return(s, 1);
+    if (was_preview)
+        return;
     /* reindent line to remove indent on blank line */
     if (s->mode->indent_func) {
         (s->mode->indent_func)(s, eb_goto_bol(s->b, offset));

Index: dired.c
===================================================================
RCS file: /sources/qemacs/qemacs/dired.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -b -r1.53 -r1.54
--- dired.c     24 Jun 2015 12:38:53 -0000      1.53
+++ dired.c     10 Aug 2015 19:44:19 -0000      1.54
@@ -859,7 +859,7 @@
             e->b->flags &= ~BF_PREVIEW;
 #endif
         } else {
-            do_find_file(s, filename);
+            do_find_file(s, filename, 0);
         }
     }
 }
@@ -882,7 +882,9 @@
     }
 
     if (e) {
-        do_find_file(e, filename);
+        /* If buffer is not present already, mark it as preview, so
+         * that it will get recycled if needed */
+        do_find_file(e, filename, BF_PREVIEW);
         /* disable wrapping to get nicer display */
         /* XXX: should wrap lines unless window is narrow */
         //e->wrap = WRAP_TRUNCATE;
@@ -891,9 +893,6 @@
             b = eb_new("*scratch*", BF_SAVELOG | BF_UTF8);
             e->b = b;
         }
-        /* mark buffer as preview, so that it will get recycled if needed */
-        /* CG: this is wrong if buffer existed already */
-        b->flags |= BF_PREVIEW;
     }
 }
 

Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.191
retrieving revision 1.192
diff -u -b -r1.191 -r1.192
--- qe.c        10 Aug 2015 18:35:13 -0000      1.191
+++ qe.c        10 Aug 2015 19:44:20 -0000      1.192
@@ -813,6 +813,13 @@
 {
     int offset1;
 
+#ifndef CONFIG_TINY
+    if (s->b->flags & BF_PREVIEW) {
+        do_scroll_up_down(s, -2);
+        return;
+    }
+#endif
+
     if (s->b->flags & BF_READONLY) {
         /* CG: could scroll down */
         return;
@@ -1336,6 +1343,17 @@
 
 void do_char(EditState *s, int key, int argval)
 {
+#ifndef CONFIG_TINY
+    if (s->b->flags & BF_PREVIEW) {
+        if (key == KEY_SPC) {
+            do_scroll_up_down(s, 2);
+            return;
+        }
+        do_preview_mode(s, 0);
+        return;
+    }
+#endif
+
     if (s->b->flags & BF_READONLY)
         return;
 
@@ -1534,10 +1552,37 @@
     }
 }
 
+#ifndef CONFIG_TINY
+void do_preview_mode(EditState *s, int set)
+{
+    const char *state = NULL;
+
+    if (set < 0 && (s->b->flags & BF_PREVIEW)) {
+        s->b->flags &= ~BF_PREVIEW;
+        state = "exited";
+    } else
+    if (set > 0 && !(s->b->flags & BF_PREVIEW)) {
+        s->b->flags |= BF_PREVIEW;
+        state = "started";
+    } else
+    if (set == 0) {
+        state = (s->b->flags & BF_PREVIEW) ? "active" : "inactive";
+    }
+    if (state)
+        put_status(s, "Preview mode %s", state);
+}
+#endif
+
 void do_return(EditState *s, int move)
 {
     int len;
 
+#ifndef CONFIG_TINY
+    if (s->b->flags & BF_PREVIEW) {
+        do_preview_mode(s, -1);
+        return;
+    }
+#endif
     if (s->b->flags & BF_READONLY)
         return;
 
@@ -1560,6 +1605,12 @@
 
 void do_break(EditState *s)
 {
+#ifndef CONFIG_TINY
+    if (s->b->flags & BF_PREVIEW) {
+        do_preview_mode(s, -1);
+        return;
+    }
+#endif
     /* deactivate region hilite */
     s->region_style = 0;
 
@@ -2263,6 +2314,8 @@
         buf_printf(out, " Ovwrt");
     if (s->interactive)
         buf_printf(out, " Interactive");
+    if (s->b->flags & BF_PREVIEW)
+        buf_printf(out, " Preview");
     buf_printf(out, ")--");
 }
 
@@ -5923,7 +5976,7 @@
 
 /* Should take bits from enumeration instead of booleans */
 static void do_load1(EditState *s, const char *filename1,
-                     int kill_buffer, int load_resource)
+                     int kill_buffer, int load_resource, int bflags)
 {
     u8 buf[4097];
     char filename[MAX_FILENAME_SIZE];
@@ -5974,7 +6027,7 @@
     }
 
     /* Create new buffer with unique name from filename */
-    b = eb_new("", BF_SAVELOG);
+    b = eb_new("", BF_SAVELOG | bflags);
     eb_set_filename(b, filename);
 
     s->offset = 0;
@@ -6098,27 +6151,27 @@
 }
 #endif
 
-void do_find_file(EditState *s, const char *filename)
+void do_find_file(EditState *s, const char *filename, int bflags)
 {
-    do_load1(s, filename, 0, 0);
+    do_load1(s, filename, 0, 0, bflags);
 }
 
-void do_find_file_other_window(EditState *s, const char *filename)
+void do_find_file_other_window(EditState *s, const char *filename, int bflags)
 {
     QEmacsState *qs = s->qe_state;
 
     do_split_window(s, 0);
-    do_load1(qs->active_window, filename, 0, 0);
+    do_load1(qs->active_window, filename, 0, 0, bflags);
 }
 
-void do_find_alternate_file(EditState *s, const char *filename)
+void do_find_alternate_file(EditState *s, const char *filename, int bflags)
 {
-    do_load1(s, filename, 1, 0);
+    do_load1(s, filename, 1, 0, bflags);
 }
 
-void do_load_file_from_path(EditState *s, const char *filename)
+void do_load_file_from_path(EditState *s, const char *filename, int bflags)
 {
-    do_load1(s, filename, 0, 1);
+    do_load1(s, filename, 0, 1, bflags);
 }
 
 void do_insert_file(EditState *s, const char *filename)
@@ -8150,7 +8203,7 @@
             /* Handle +linenumber before file */
             line_num = atoi(argv[i++]);
         }
-        do_find_file(s, argv[i]);
+        do_find_file(s, argv[i], 0);
         if (line_num)
             do_goto_line(qs->active_window, line_num, 1);
     }

Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.189
retrieving revision 1.190
diff -u -b -r1.189 -r1.190
--- qe.h        10 Aug 2015 18:35:13 -0000      1.189
+++ qe.h        10 Aug 2015 19:44:20 -0000      1.190
@@ -1767,10 +1767,11 @@
 
 /* loading files */
 void do_exit_qemacs(EditState *s, int argval);
-void do_find_file(EditState *s, const char *filename);
-void do_load_from_path(EditState *s, const char *filename);
-void do_find_file_other_window(EditState *s, const char *filename);
+void do_find_file(EditState *s, const char *filename, int bflags);
+void do_load_from_path(EditState *s, const char *filename, int bflags);
+void do_find_file_other_window(EditState *s, const char *filename, int bflags);
 void do_switch_to_buffer(EditState *s, const char *bufname);
+void do_preview_mode(EditState *s, int set);
 void do_break(EditState *s);
 void do_insert_file(EditState *s, const char *filename);
 // should take argument?
@@ -1931,8 +1932,8 @@
 void do_less_exit(EditState *s);
 void do_toggle_read_only(EditState *s);
 void do_not_modified(EditState *s, int argval);
-void do_find_alternate_file(EditState *s, const char *filename);
-void do_load_file_from_path(EditState *s, const char *filename);
+void do_find_alternate_file(EditState *s, const char *filename, int bflags);
+void do_load_file_from_path(EditState *s, const char *filename, int bflags);
 void do_set_visited_file_name(EditState *s, const char *filename,
                               const char *renamefile);
 int eb_search(EditBuffer *b, int offset, int dir, int flags,

Index: qeconfig.h
===================================================================
RCS file: /sources/qemacs/qemacs/qeconfig.h,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -b -r1.49 -r1.50
--- qeconfig.h  26 May 2014 12:42:58 -0000      1.49
+++ qeconfig.h  10 Aug 2015 19:44:20 -0000      1.50
@@ -130,14 +130,14 @@
 
     /*---------------- Buffer and file handling ----------------*/
 
-    CMD2( KEY_CTRLX(KEY_CTRL('f')), KEY_NONE,
-          "find-file", do_find_file, ESs,
+    CMD3( KEY_CTRLX(KEY_CTRL('f')), KEY_NONE,
+          "find-file", do_find_file, ESsi, 0,
           "s{Find file: }[file]|file|") /* u? */
-    CMD2( KEY_CTRL('x'), KEY_META('f'),
-          "find-file-other-window", do_find_file_other_window, ESs,
+    CMD3( KEY_CTRL('x'), KEY_META('f'),
+          "find-file-other-window", do_find_file_other_window, ESsi, 0,
           "s{Find file: }[file]|file|") /* u? */
-    CMD2( KEY_CTRLX(KEY_CTRL('v')), KEY_NONE,
-          "find-alternate-file", do_find_alternate_file, ESs,
+    CMD3( KEY_CTRLX(KEY_CTRL('v')), KEY_NONE,
+          "find-alternate-file", do_find_alternate_file, ESsi, 0,
           "s{Find alternate file: }[file]|file|") /* u? */
     CMD2( KEY_CTRLX('i'), KEY_NONE,
           "insert-file", do_insert_file, ESs,
@@ -280,6 +280,8 @@
           "scroll-left", do_scroll_left_right, -1)
     CMD1( KEY_META(')'), KEY_NONE,
           "scroll-right", do_scroll_left_right, 1)
+    CMD1( KEY_NONE, KEY_NONE,
+          "preview-mode", do_preview_mode, 1)
 #endif
     CMD1( KEY_CTRLX('0'), KEY_NONE,
           "delete-window", do_delete_window, 0)
@@ -405,8 +407,8 @@
           "ui{Fill column: }")
 
     /* other stuff */
-    CMD2( KEY_NONE, KEY_NONE,
-          "load-file-from-path", do_load_file_from_path, ESs,
+    CMD3( KEY_NONE, KEY_NONE,
+          "load-file-from-path", do_load_file_from_path, ESsi, 0,
           "s{Load file from path: }|file|")
     CMD2( KEY_NONE, KEY_NONE,
           "load-config-file", do_load_config_file, ESs,

Index: shell.c
===================================================================
RCS file: /sources/qemacs/qemacs/shell.c,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -b -r1.95 -r1.96
--- shell.c     10 Aug 2015 18:35:13 -0000      1.95
+++ shell.c     10 Aug 2015 19:44:20 -0000      1.96
@@ -1896,7 +1896,7 @@
     /* CG: Should remove popups, sidepanes, helppanes... */
 
     /* go to the error */
-    do_find_file(s, filename);
+    do_find_file(s, filename, 0);
     do_goto_line(qs->active_window, line_num, col_num);
 
     put_status(s, "=> %s", error_message);



reply via email to

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