[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs variables.c variables.h,
Charlie Gordon <=