# HG changeset patch # User zas_ # Date 1210929056 0 # Node ID a484500de88d16ec811a9cbec21887618dd62865 # Parent dd5d7fe9458f9ad8305f8ab58f336ebd2e80cc3b Improve editor commands error display: - display all errors (not only syntax errors) - display errors from Preferences (checks are made on Apply or OK) diff -r dd5d7fe9458f -r a484500de88d src/editors.c --- a/src/editors.c Fri May 16 08:37:07 2008 +0000 +++ b/src/editors.c Fri May 16 09:10:56 2008 +0000 @@ -814,9 +814,9 @@ error = editor_command_start(command, options->editor_name[n], list, cb, data); g_free(command); - if (n < GQ_EDITOR_GENERIC_SLOTS && (error & EDITOR_ERROR_SYNTAX)) + if (n < GQ_EDITOR_GENERIC_SLOTS && (error & EDITOR_ERROR_MASK)) { - gchar *text = g_strdup_printf(_("Syntax error in the editor template \"%s\":\n%s"), + gchar *text = g_strdup_printf(_("%s\n#%d \"%s\":\n%s"), editor_get_error_str(error), n+1, options->editor_name[n], options->editor_command[n]); file_util_warning_dialog(_("Invalid editor command"), text, GTK_STOCK_DIALOG_ERROR, NULL); diff -r dd5d7fe9458f -r a484500de88d src/preferences.c --- a/src/preferences.c Fri May 16 08:37:07 2008 +0000 +++ b/src/preferences.c Fri May 16 09:10:56 2008 +0000 @@ -157,6 +157,9 @@ gint i; gint refresh = FALSE; + { + GString *errmsg = g_string_new(""); + for (i = 0; i < GQ_EDITOR_SLOTS; i++) { if (i < GQ_EDITOR_GENERIC_SLOTS) @@ -170,8 +173,28 @@ g_free(options->editor_command[i]); options->editor_command[i] = NULL; buf = gtk_entry_get_text(GTK_ENTRY(editor_command_entry[i])); - if (buf && strlen(buf) > 0) options->editor_command[i] = g_strdup(buf); + if (buf && strlen(buf) > 0) + { + gint flags = editor_command_parse(buf, NULL, NULL); + + if (flags & EDITOR_ERROR_MASK) + { + if (errmsg->str[0]) g_string_append(errmsg, "\n\n"); + g_string_append_printf(errmsg, _("%s\n#%d \"%s\":\n%s"), editor_get_error_str(flags), + i+1, options->editor_name[i], buf); + + } + options->editor_command[i] = g_strdup(buf); + } } + + if (errmsg->str[0]) + { + file_util_warning_dialog(_("Invalid editor command"), errmsg->str, GTK_STOCK_DIALOG_ERROR, NULL); + } + + g_string_free(errmsg, TRUE); + } layout_edit_update_all(); g_free(options->file_ops.safe_delete_path);