qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs variables.c variables.h


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs variables.c variables.h
Date: Thu, 13 Aug 2015 23:00:26 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        15/08/13 23:00:26

Modified files:
        .              : variables.c variables.h 

Log message:
        variables: added VAR_RW_SAVE type for session saving code

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/variables.c?cvsroot=qemacs&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/qemacs/variables.h?cvsroot=qemacs&r1=1.4&r2=1.5

Patches:
Index: variables.c
===================================================================
RCS file: /sources/qemacs/qemacs/variables.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- variables.c 11 Aug 2015 17:45:31 -0000      1.16
+++ variables.c 13 Aug 2015 23:00:26 -0000      1.17
@@ -35,20 +35,20 @@
     S_VAR( "screen-width", width, VAR_NUMBER, VAR_RO )
     S_VAR( "screen-height", height, VAR_NUMBER, VAR_RO )
     S_VAR( "is-full-screen", is_full_screen, VAR_NUMBER, VAR_RO )
-    S_VAR( "flag-split-window-change-focus", flag_split_window_change_focus, 
VAR_NUMBER, VAR_RW )
-    S_VAR( "backspace-is-control-h", backspace_is_control_h, VAR_NUMBER, 
VAR_RW )
+    S_VAR( "flag-split-window-change-focus", flag_split_window_change_focus, 
VAR_NUMBER, VAR_RW_SAVE )
+    S_VAR( "backspace-is-control-h", backspace_is_control_h, VAR_NUMBER, 
VAR_RW_SAVE )
     S_VAR( "ungot-key", ungot_key, VAR_NUMBER, VAR_RW )
     S_VAR( "QEPATH", res_path, VAR_CHARS, VAR_RO )
     //S_VAR( "it", it, VAR_NUMBER, VAR_RW )
-    S_VAR( "ignore-spaces", ignore_spaces, VAR_NUMBER, VAR_RW )
-    S_VAR( "hilite-region", hilite_region, VAR_NUMBER, VAR_RW )
-    S_VAR( "mmap-threshold", mmap_threshold, VAR_NUMBER, VAR_RW )
-    S_VAR( "max-load-size", max_load_size, VAR_NUMBER, VAR_RW )
-    S_VAR( "show-unicode", show_unicode, VAR_NUMBER, VAR_RW )
-    S_VAR( "default-tab-width", default_tab_width, VAR_NUMBER, VAR_RW )
-    S_VAR( "default-fill-column", default_fill_column, VAR_NUMBER, VAR_RW )
-    S_VAR( "backup-inhibited", backup_inhibited, VAR_NUMBER, VAR_RW )
-    S_VAR( "fuzzy-search", fuzzy_search, VAR_NUMBER, VAR_RW )
+    S_VAR( "ignore-spaces", ignore_spaces, VAR_NUMBER, VAR_RW_SAVE )
+    S_VAR( "hilite-region", hilite_region, VAR_NUMBER, VAR_RW_SAVE )
+    S_VAR( "mmap-threshold", mmap_threshold, VAR_NUMBER, VAR_RW_SAVE )
+    S_VAR( "max-load-size", max_load_size, VAR_NUMBER, VAR_RW_SAVE )
+    S_VAR( "show-unicode", show_unicode, VAR_NUMBER, VAR_RW_SAVE )
+    S_VAR( "default-tab-width", default_tab_width, VAR_NUMBER, VAR_RW_SAVE )
+    S_VAR( "default-fill-column", default_fill_column, VAR_NUMBER, VAR_RW_SAVE 
)
+    S_VAR( "backup-inhibited", backup_inhibited, VAR_NUMBER, VAR_RW_SAVE )
+    S_VAR( "fuzzy-search", fuzzy_search, VAR_NUMBER, VAR_RW_SAVE )
 
     //B_VAR( "screen-charset", charset, VAR_NUMBER, VAR_RW )
 
@@ -228,7 +228,7 @@
         vp = qe_mallocz(VarDef);
         vp->name = qe_strdup(name);
         vp->domain = VAR_SELF;
-        vp->rw = VAR_RW;
+        vp->rw = VAR_RW_SAVE;
         if (value) {
             vp->value.str = qe_strdup(value);
             vp->type = VAR_STRING;
@@ -347,6 +347,42 @@
     }
 }
 
+static void qe_save_variables(EditState *s, EditBuffer *b)
+{
+    QEmacsState *qs = s->qe_state;
+    char buf[MAX_FILENAME_SIZE];
+    char varname[32], *p;
+    const VarDef *vp;
+
+    eb_printf(b, "// variables:\n");
+    eb_printf(b, "// version: %s\n", QE_VERSION);
+    eb_printf(b, "\n");
+
+    for (vp = qs->first_variable; vp; vp = vp->next) {
+        if (vp->rw != VAR_RW_SAVE)
+            continue;
+        pstrcpy(varname, countof(varname), vp->name);
+        for (p = varname; *p; p++) {
+            if (*p == '-')
+                *p = '_';
+        }
+        qe_get_variable(s, vp->name, buf, sizeof(buf), NULL, 1);
+        eb_printf(b, "%s = %s;\n", varname, buf);
+    }
+    eb_printf(b, "\n");
+}
+
+static void do_save_variables(EditState *s)
+{
+    EditBuffer *b = eb_scratch("*session*", BF_UTF8);
+    qe_save_variables(s, b);
+    b->offset = 0;
+    b->flags |= BF_READONLY;
+
+    /* Should show window caption "qemacs session" */
+    show_popup(b);
+}
+
 /*---------------- commands ----------------*/
 
 static CmdDef var_commands[] = {
@@ -356,6 +392,9 @@
     CMD2( KEY_F8, KEY_NONE,
           "set-variable", do_set_variable, ESss,
           "s{Set variable: }[var]|var|s{to value: }|value|")
+    CMD0( KEY_F8, KEY_NONE,
+          "save-variables", do_save_variables)
+
     CMD_DEF_END,
 };
 

Index: variables.h
===================================================================
RCS file: /sources/qemacs/qemacs/variables.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- variables.h 19 Jun 2015 14:09:31 -0000      1.4
+++ variables.h 13 Aug 2015 23:00:26 -0000      1.5
@@ -28,6 +28,7 @@
 enum QVarAccess {
     VAR_RO,
     VAR_RW,
+    VAR_RW_SAVE,
 };
 
 enum QVarDomain {
@@ -63,13 +64,17 @@
 #define G_VAR(name,var,type,rw) \
     { (name), VAR_GLOBAL, type, rw, 0, { .ptr = (void*)&(var) }, NULL },
 #define S_VAR(name,fld,type,rw) \
-    { (name), VAR_STATE, type, rw, sizeof(((QEmacsState*)0)->fld), { .offset = 
offsetof(QEmacsState, fld) }, NULL },
+    { (name), VAR_STATE, type, rw, sizeof(((QEmacsState*)0)->fld), \
+      { .offset = offsetof(QEmacsState, fld) }, NULL },
 #define B_VAR(name,fld,type,rw) \
-    { (name), VAR_BUFFER, type, rw, sizeof(((EditBuffer*)0)->fld), { .offset = 
offsetof(EditBuffer, fld) }, NULL },
+    { (name), VAR_BUFFER, type, rw, sizeof(((EditBuffer*)0)->fld), \
+      { .offset = offsetof(EditBuffer, fld) }, NULL },
 #define W_VAR(name,fld,type,rw) \
-    { (name), VAR_WINDOW, type, rw, sizeof(((EditState*)0)->fld), { .offset = 
offsetof(EditState, fld) }, NULL },
+    { (name), VAR_WINDOW, type, rw, sizeof(((EditState*)0)->fld), \
+      { .offset = offsetof(EditState, fld) }, NULL },
 #define M_VAR(name,fld,type,rw) \
-    { (name), VAR_MODE, type, rw, sizeof(((ModeDef*)0)->fld), { .offset = 
offsetof(ModeDef, fld) }, NULL },
+    { (name), VAR_MODE, type, rw, sizeof(((ModeDef*)0)->fld), \
+      { .offset = offsetof(ModeDef, fld) }, NULL },
 
 void qe_register_variables(VarDef *vars, int count);
 VarDef *qe_find_variable(const char *name);



reply via email to

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