X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-syntax-window.c;fp=src%2Fui%2Fgui%2Fpsppire-syntax-window.c;h=6a84318ab56143f29b6dac35822e537ef173c667;hb=cef98fb5402c1128dd9ee75d133e16911c6b7441;hp=3c486848352dd12bd7ab1e0d5e3f12b3bd4c4807;hpb=5ce9c6ba1502e623ec6723a8273da77e5858b8d4;p=pspp diff --git a/src/ui/gui/psppire-syntax-window.c b/src/ui/gui/psppire-syntax-window.c index 3c48684835..6a84318ab5 100644 --- a/src/ui/gui/psppire-syntax-window.c +++ b/src/ui/gui/psppire-syntax-window.c @@ -197,7 +197,8 @@ editor_execute_syntax (const PsppireSyntaxWindow *sw, GtkTextIter start, GtkTextIter stop) { PsppireWindow *win = PSPPIRE_WINDOW (sw); - struct lex_reader *reader = lex_reader_for_gtk_text_buffer (GTK_TEXT_BUFFER (sw->buffer), start, stop); + struct lex_reader *reader = lex_reader_for_gtk_text_buffer ( + GTK_TEXT_BUFFER (sw->buffer), start, stop, sw->syntax_mode); lex_reader_set_file_name (reader, psppire_window_get_filename (win)); @@ -514,6 +515,24 @@ on_run_current_line (PsppireSyntaxWindow *se) +static void +on_syntax (GAction *action, GVariant *param, PsppireSyntaxWindow *sw) +{ + g_action_change_state (action, param); + GVariant *new_state = g_action_get_state (action); + + const gchar *what = g_variant_get_string (new_state, NULL); + if (0 == g_strcmp0 (what, "auto")) + sw->syntax_mode = LEX_SYNTAX_AUTO; + else if (0 == g_strcmp0 (what, "interactive")) + sw->syntax_mode = LEX_SYNTAX_INTERACTIVE; + else if (0 == g_strcmp0 (what, "batch")) + sw->syntax_mode = LEX_SYNTAX_BATCH; + else + g_warn_if_reached (); +} + + /* Append ".sps" to FILENAME if necessary. The returned result must be freed when no longer required. */ @@ -760,6 +779,7 @@ psppire_syntax_window_init (PsppireSyntaxWindow *window) NULL); window->encoding = NULL; + window->syntax_mode = LEX_SYNTAX_AUTO; window->cliptext = NULL; window->dispose_has_run = FALSE; @@ -950,6 +970,13 @@ psppire_syntax_window_init (PsppireSyntaxWindow *window) g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (run_to_end)); } + { + GSimpleAction *act_syntax = g_simple_action_new_stateful ("syntax", G_VARIANT_TYPE_STRING, + g_variant_new_string ("auto")); + g_signal_connect (act_syntax, "activate", G_CALLBACK (on_syntax), window); + g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (act_syntax)); + } + gtk_menu_shell_append (GTK_MENU_SHELL (menubar), create_windows_menu (GTK_WINDOW (window)));