~ubuntu-branches/ubuntu/saucy/bluefish/saucy

« back to all changes in this revision

Viewing changes to src/rcfile.c

  • Committer: Package Import Robot
  • Author(s): Daniel Leidert
  • Date: 2013-05-09 14:36:58 UTC
  • mfrom: (17.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20130509143658-kgqxj5c23oi0lk20
Tags: 2.2.4-2
* debian/control (Standards-Version): Bumped to 3.9.4.
* debian/copyright: Updated.

Show diffs side-by-side

added added

removed removed

Lines of Context:
409
409
        init_prop_string(&config_rc, &main_v->props.editor_font_string, "editor_font_string:", "monospace 10");
410
410
        init_prop_integer(&config_rc, &main_v->props.editor_smart_cursor, "editor_smart_cursor:", 1, TRUE);
411
411
        init_prop_integer(&config_rc, &main_v->props.editor_tab_indent_sel, "editor_tab_indent_sel:", 0, TRUE);
412
 
        init_prop_integer(&config_rc, &main_v->props.editor_auto_close_brackets, "editor_auto_close_brackets:", 1, TRUE);
 
412
        init_prop_integer(&config_rc, &main_v->props.editor_auto_close_brackets, "editor_auto_close_brackets:", 2, TRUE);
413
413
        init_prop_integer(&config_rc, &main_v->props.use_system_tab_font, "use_system_tab_font:", 1, TRUE);
414
414
        init_prop_string(&config_rc, &main_v->props.tab_font_string, "tab_font_string:", "");
415
415
        init_prop_string(&config_rc, &main_v->props.tab_color_modified, "tab_color_modified:", "#0000FF");
455
455
        init_prop_integer(&config_rc, &main_v->props.auto_update_meta_date, "auto_update_meta_date:", 1, TRUE);
456
456
        init_prop_integer(&config_rc, &main_v->props.auto_update_meta_generator, "auto_update_meta_generator:", 1,
457
457
                                          TRUE);
 
458
        init_prop_integer(&config_rc, &main_v->props.strip_trailing_spaces_on_save, "strip_trailing_spaces_on_save:", 0,
 
459
                                          TRUE);
458
460
        init_prop_integer(&config_rc, &main_v->props.encoding_search_Nbytes, "encoding_search_Nbytes:", 500,
459
461
                                          TRUE);
460
462
        init_prop_integer(&config_rc, &main_v->props.max_window_title, "max_window_title:", 0,TRUE);
509
511
        init_prop_string(&config_rc, &main_v->props.autosave_file_prefix, "autosave_file_prefix:", "");
510
512
        init_prop_string(&config_rc, &main_v->props.autosave_file_suffix, "autosave_file_suffix:", "#");
511
513
        init_prop_string(&config_rc, &main_v->props.language, "language:", "");
512
 
        init_prop_arraylist(&config_rc, &main_v->props.templates, "templates:", 2, TRUE);
 
514
 
 
515
        init_prop_integer(&config_rc, &main_v->props.adv_textview_right_margin, "adv_textview_right_margin:", 1, TRUE);
 
516
        init_prop_integer(&config_rc, &main_v->props.adv_textview_left_margin, "adv_textview_left_margin:", 1, TRUE);
 
517
        /*init_prop_arraylist(&config_rc, &main_v->props.templates, "templates:", 2, TRUE);*/
513
518
        return config_rc;
514
519
}
515
520
 
572
577
        oldsession = user_bfdir(OLDSESSION);
573
578
        newsession = user_bfdir(CURSESSION);
574
579
        merge_config_files(oldrc, oldsession, newrc, newsession);
575
 
        /* add some entries to main_configlist. because main_configlist is used for 
 
580
        /* add some entries to main_configlist. because main_configlist is used for
576
581
           saving as well this means we'll save these entries too */
577
582
        if (parse_config_file(main_configlist, newrc)) {
578
583
                /* are there any entries that we want to convert ?? */
605
610
 
606
611
/* on array length = newlen-1 we update to the new version
607
612
 
608
 
if (overwrite) we free the list and replace it with the default values 
 
613
if (overwrite) we free the list and replace it with the default values
609
614
 
610
615
if (!overwrite) we overwrite all bluefish_defined options, and we append any new options
611
616
*/
613
618
{
614
619
        GList *tmplist;
615
620
        GHashTable *ht=NULL;
616
 
        
 
621
 
617
622
        if (current == NULL)
618
623
                overwrite = TRUE;
619
 
        
 
624
 
620
625
        if (overwrite) {
621
626
                free_arraylist(current);
622
627
                current = NULL;
628
633
                        gint len;
629
634
                        GList *cur;
630
635
                        len = g_strv_length(arr);
631
 
        
 
636
 
632
637
                        cur = tmplist;
633
638
                        tmplist = g_list_next(tmplist);
634
 
                        
 
639
 
635
640
                        if (len == (newlen-1)) { /* convert the old (2.2.2 or older) format into the new format */
636
641
                                gchar **oldarr = arr;
637
642
                                /*g_print("prepend %s in front of %s\n",USER_DEFINED_ENABLED,arr[0]);*/
638
643
                                cur->data = arr = prepend_array(USER_DEFINED_ENABLED,arr);
639
644
                                g_strfreev(oldarr);
640
 
                                /* arr[2] contains the commandstring. now replace %I and %O (previously fifo in and 
 
645
                                /* arr[2] contains the commandstring. now replace %I and %O (previously fifo in and
641
646
                                fifo out) to temporary file in %i and out %o */
642
647
                                arr[commandindex] = convert_old_placeholders(arr[commandindex], 'O', 'o', 'I', 'i');
643
648
                                len = newlen;
675
680
                                                  array_from_arglist(_("php"),
676
681
                                                                                         "(.*) in (.*:\\\\[a-zA-Z0-9\\\\_.-]+) on line ([0-9]+)", "2",
677
682
                                                                                         "3", "1", "php '%f'|", NULL));
678
 
        }
679
683
#else
680
684
        defaults =
681
685
                g_list_append(defaults,
715
719
                g_list_append(defaults,
716
720
                                                array_from_arglist(_("php codesniffer"), ":([0-9:]+):(.*)", "-1",
717
721
                                                                                 "1", "2", "phpcs --report=emacs '%f'|", NULL));
 
722
        defaults =
 
723
                g_list_append(defaults,
 
724
                                                array_from_arglist(_("pylint"), "(C|R|E|F|W):[ ]*([0-9]+),[0-9]+:(.*)", "-1",
 
725
                                                                                 "2", "0", "pylint '%f'|", NULL));
718
726
#endif
719
727
        retlist = update_externals(current, defaults, overwrite, 7, 6);
720
728
        free_arraylist(defaults);
737
745
                g_list_append(defaults,
738
746
                                          array_from_arglist(_("Dos2unix"), "|dos2unix|", NULL));
739
747
        defaults =
740
 
                g_list_append(defaults, array_from_arglist(_("Tidy HTML"), "|tidy|", NULL));
 
748
                g_list_append(defaults, array_from_arglist(_("Tidy HTML"), "|tidy -utf8|", NULL));
 
749
        defaults =
 
750
                g_list_append(defaults, array_from_arglist(_("Tidy convert to XHTML"), "|tidy -utf8 -i -w 80 -c -q -asxhtml|", NULL));
741
751
        defaults =
742
752
                g_list_append(defaults,
743
753
                                          array_from_arglist(_("Tidy HTML (perltidy)"), "|perltidy -b|", NULL));
747
757
        defaults =
748
758
                g_list_append(defaults,
749
759
                                          array_from_arglist(_("Render HTML to text"), "lynx -force_html -dump %i |", NULL));
750
 
 
 
760
        defaults =
 
761
                g_list_append(defaults,
 
762
                                          array_from_arglist(_("PHP Beautifier"), "|php_beautifier -t|", NULL));
 
763
#ifdef WIN32
 
764
        defaults =
 
765
                g_list_append(defaults,
 
766
                                          array_from_arglist(_("Javascript Minify with jsmin"), "|python "PKGDATADIR"/jsmin.py|", NULL));
 
767
        defaults =
 
768
                g_list_append(defaults,
 
769
                                          array_from_arglist(_("CSS Minify with cssmin"), "|python "PKGDATADIR"/cssmin.py|", NULL));
 
770
#else
 
771
        defaults =
 
772
                g_list_append(defaults,
 
773
                                          array_from_arglist(_("Javascript Minify with jsmin"), "|"PKGDATADIR"/jsmin.py|", NULL));
 
774
        defaults =
 
775
                g_list_append(defaults,
 
776
                                          array_from_arglist(_("CSS Minify with cssmin"), "|"PKGDATADIR"/cssmin.py|", NULL));
 
777
#endif
 
778
        defaults =
 
779
                g_list_append(defaults,
 
780
                                          array_from_arglist(_("CSS tidy"), "|csstidy --preserve_css=true -|", NULL));
751
781
        retlist = update_externals(current, defaults, overwrite, 3, 2);
752
782
        free_arraylist(defaults);
753
783
        return retlist;
756
786
GList *update_commands(GList *current, gboolean overwrite)
757
787
{
758
788
        GList *defaults=NULL, *retlist;
759
 
#ifdef WIN32    
 
789
#ifdef WIN32
760
790
        defaults =
761
791
                g_list_prepend(defaults,
762
792
                                          array_from_arglist(_("Windows XP Firefox"),
853
883
        file = user_bfdir(CURCONFIG);
854
884
        if (!parse_config_file(main_configlist, file)) {
855
885
                g_warning("no configfile %s, try to convert config files from older versions\n", CURCONFIG);
856
 
                /* probably there is no configfile. try to migrate the configfile from a previous 
 
886
                /* probably there is no configfile. try to migrate the configfile from a previous
857
887
                   version */
858
888
                migrate_config_files(main_configlist, file);
859
889
        }
862
892
                main_v->props.encoding_search_Nbytes = 2048;
863
893
 
864
894
        /* do some default configuration for the lists */
865
 
        if (!main_v->props.config_version || strlen(main_v->props.config_version)<5 ||main_v->props.config_version[0] < '2' || main_v->props.config_version[2] < '2' || main_v->props.config_version[4] < '3') {
 
895
        if (!main_v->props.config_version || strlen(main_v->props.config_version)<5 ||main_v->props.config_version[0] < '2' || main_v->props.config_version[2] < '2' || main_v->props.config_version[4] < '4') {
 
896
                main_v->props.rcfile_from_old_version = 1;
866
897
                main_v->props.external_command = update_commands(main_v->props.external_command, FALSE);
867
898
                main_v->props.external_filter = update_filters(main_v->props.external_filter, FALSE);
868
899
                main_v->props.external_outputbox = update_outputbox(main_v->props.external_outputbox, FALSE);
869
900
        }
870
 
 
 
901
#ifdef OLDTEMPLATES
871
902
        if (main_v->props.templates == NULL) {
872
903
                main_v->props.templates =
873
904
                        g_list_append(main_v->props.templates,
884
915
                main_v->props.templates =
885
916
                        g_list_append(main_v->props.templates,
886
917
                                                  array_from_arglist(_("PHP"), PKGDATADIR "/templates/PHP", NULL));
 
918
                main_v->props.templates =
 
919
                        g_list_append(main_v->props.templates,
 
920
                                                  array_from_arglist(_("LaTex Book"), PKGDATADIR "/templates/Latex_Book", NULL));
 
921
                main_v->props.templates =
 
922
                        g_list_append(main_v->props.templates,
 
923
                                                  array_from_arglist(_("LaTex Presentation"), PKGDATADIR "/templates/Latex_Presentation", NULL));
887
924
                /* TODO: list the templates in the directory */
888
925
        }
 
926
#endif
889
927
}
890
928
 
891
929
gint
893
931
{
894
932
        gint ret;
895
933
        GFile *filename = user_bfdir(CURCONFIG);
896
 
        
 
934
 
897
935
        g_free(main_v->props.config_version);
898
936
        main_v->props.config_version = g_strdup(VERSION);
899
 
        
 
937
 
900
938
        ret = save_config_file(main_configlist, filename);
901
939
        g_object_unref(filename);
902
940
        return ret;
973
1011
        init_prop_integer(&config_rc, &main_v->globses.left_panel_width, "left_panel_width:", 150, init_values);
974
1012
        /*init_prop_integer   (&config_rc, &main_v->globses.lasttime_filetypes, "lasttime_filetypes:", 0, init_values);
975
1013
           init_prop_integer   (&config_rc, &main_v->globses.lasttime_encodings, "lasttime_encodings:", 0, init_values); */
976
 
        init_prop_integer(&config_rc, &main_v->globses.snr_select_match, "snr_select_match:", 1, init_values);
977
1014
        init_prop_integer(&config_rc, &main_v->globses.bookmarks_default_store, "bookmarks_default_store:", 1,
978
1015
                                          init_values);
979
1016
        init_prop_integer(&config_rc, &main_v->globses.image_thumbnail_refresh_quality,
987
1024
        init_prop_string(&config_rc, &main_v->globses.image_thumnailformatstring, "image_thumnailformatstring:",
988
1025
                                         (init_values ?
989
1026
                                          "<a href=\"%r\"><img src=\"%t\" width=\"%x\" height=\"%y\" border=\"0\"></a>" : NULL));
 
1027
        init_prop_integer(&config_rc, &main_v->globses.filter_on_selection_mode,
 
1028
                                          "filter_on_selection_mode:", 0, init_values);
990
1029
        init_prop_arraylist(&config_rc, &main_v->globses.filefilters, "filefilters:", 4, init_values);
991
1030
        init_prop_arraylist(&config_rc, &main_v->globses.reference_files, "reference_files:", 2, init_values);
992
1031
        init_prop_limitedstringlist(&config_rc, &main_v->globses.recent_projects, "recent_projects:",
1017
1056
        init_prop_integer(&configlist, &session->view_blockstack, "view_blockstack:", 1, FALSE);
1018
1057
        init_prop_integer(&configlist, &session->autocomplete, "autocomplete:", 1, FALSE);
1019
1058
        init_prop_integer(&configlist, &session->show_mbhl, "show_mbhl:", 1, FALSE);
1020
 
        
 
1059
 
1021
1060
        init_prop_integer(&configlist, &session->snr3_type, "snr_type:", 1, FALSE);
1022
1061
        init_prop_integer(&configlist, &session->snr3_replacetype, "snr_replacetype:", 1, FALSE);
1023
1062
        init_prop_integer(&configlist, &session->snr3_scope, "snr_scope:", 1, FALSE);
1026
1065
        init_prop_integer(&configlist, &session->snr3_dotmatchall, "snr_dotmatchall:", 1, FALSE);
1027
1066
        init_prop_integer(&configlist, &session->snr3_recursion_level, "snr_recursion_level:", 5, FALSE);
1028
1067
 
 
1068
        init_prop_integer(&configlist, &session->ssearch_regex, "ssearch_regex:", 0, FALSE);
 
1069
        init_prop_integer(&configlist, &session->ssearch_dotmatchall, "ssearch_dotmatchall:", 0, FALSE);
 
1070
        init_prop_integer(&configlist, &session->ssearch_unescape, "ssearch_unescape:", 0, FALSE);
 
1071
        init_prop_integer(&configlist, &session->ssearch_casesens, "ssearch_casesens:", 0, FALSE);
 
1072
        init_prop_string_with_escape(&configlist, &session->ssearch_text, "ssearch_text:", NULL);
 
1073
 
1029
1074
        init_prop_integer(&configlist, &session->display_right_margin, "display_right_margin:", 0, FALSE);
 
1075
        init_prop_integer(&configlist, &session->show_visible_spacing, "show_visible_spacing:", 0, FALSE);
1030
1076
#ifdef HAVE_LIBENCHANT
1031
1077
        init_prop_integer(&configlist, &session->spell_check_default, "spell_check_default:", 1, FALSE);
1032
1078
        init_prop_integer(&configlist, &session->spell_insert_entities, "spell_insert_entities:", 0, FALSE);
1085
1131
static void
1086
1132
setup_session_after_parse(Tsessionvars * session)
1087
1133
{
1088
 
        if (session->editor_tab_width < 2)
 
1134
        if (session->editor_tab_width < 1)
1089
1135
                session->editor_tab_width = 3;
1090
1136
 
1091
1137
        if (session->default_mime_type == NULL)
1092
1138
                session->default_mime_type = g_strdup("text/plain");
1093
 
        
 
1139
 
1094
1140
        if (session->filegloblist == NULL) {
1095
 
                session->filegloblist = list_from_arglist(TRUE, "*", 
 
1141
                session->filegloblist = list_from_arglist(TRUE, "*",
1096
1142
                                "*.c",
1097
1143
                                "*.cgi",
1098
1144
                                "*.cpp",
1110
1156
                                "*.xml" , NULL);
1111
1157
        }
1112
1158
/* TODO: set spell check language to a sensible default
1113
 
         
 
1159
 
1114
1160
#ifdef HAVE_LIBENCHANT
1115
1161
        if (session->spell_lang==NULL)
1116
1162
                session->spell_lang=
1171
1217
        return retval;
1172
1218
}
1173
1219
 
 
1220
static void
 
1221
add_new_encodings(GList *defaults, GList *current)
 
1222
{
 
1223
        GHashTable *ht;
 
1224
        GList *tmplist, *last;
 
1225
        ht = g_hash_table_new(g_str_hash, g_str_equal);
 
1226
 
 
1227
        for (tmplist=g_list_first(current);tmplist;tmplist=tmplist->next) {
 
1228
                gchar **arr = tmplist->data;
 
1229
                g_hash_table_insert(ht, arr[1], GINT_TO_POINTER(1));
 
1230
                last = tmplist;
 
1231
        }
 
1232
        for (tmplist=g_list_first(defaults);tmplist;tmplist=tmplist->next) {
 
1233
                gchar **arr = tmplist->data;
 
1234
                if (g_hash_table_lookup(ht, arr[1])) {
 
1235
                        g_strfreev(arr);
 
1236
                } else {
 
1237
                        DEBUG_MSG("append encoding %s\n",arr[1]);
 
1238
                        last = g_list_append(last, arr);
 
1239
                        last = g_list_last(last);
 
1240
                }
 
1241
        }
 
1242
        g_hash_table_destroy(ht);
 
1243
}
 
1244
 
1174
1245
/* should be called AFTER the normal properties are loaded, becauses return_session_configlist() uses
1175
1246
 settings from main_v->props */
1176
1247
gboolean
1200
1271
                arr = array_from_arglist(_("Images"), "1", "image/png:image/jpeg:image/gif:image/tiff", "", NULL);
1201
1272
                main_v->globses.filefilters = g_list_prepend(main_v->globses.filefilters, arr);
1202
1273
                arr =
1203
 
                        array_from_arglist(_("Hide objectfiles"), "0", "application/octet-stream:application/x-object",
1204
 
                                                           "", NULL);
 
1274
                        array_from_arglist(_("Hide objectfiles"), "0", "",
 
1275
                                                           "*.o", NULL);
1205
1276
                main_v->globses.filefilters = g_list_prepend(main_v->globses.filefilters, arr);
1206
1277
        }
1207
 
        if (main_v->globses.encodings == NULL) {
 
1278
        if (main_v->globses.encodings == NULL || main_v->props.rcfile_from_old_version == 1) {
1208
1279
                GFile *defaultfile =
1209
1280
                        return_first_existing_filename(PKGDATADIR "/encodings", "data/encodings", "../data/encodings",
1210
1281
                                                                                   NULL);
1211
1282
                if (defaultfile) {
1212
 
                        main_v->globses.encodings = get_list(defaultfile, NULL, TRUE);
 
1283
                        GList *default_encodings = get_list(defaultfile, NULL, TRUE);
 
1284
                        if (main_v->globses.encodings == NULL) {
 
1285
                                main_v->globses.encodings = default_encodings;
 
1286
                        } else {
 
1287
                                add_new_encodings(default_encodings, main_v->globses.encodings);
 
1288
                                g_list_free(default_encodings);
 
1289
                        }
1213
1290
                        g_object_unref(defaultfile);
1214
1291
                }
1215
1292
        }
1216
1293
 
1217
1294
        return retval;
1218
1295
}
 
1296
static gint
 
1297
sort_templates(gconstpointer a,gconstpointer b)
 
1298
{
 
1299
        return g_strcmp0(((gchar **)a)[0], ((gchar **)b)[0]);
 
1300
}
 
1301
 
 
1302
 
 
1303
static GList *
 
1304
load_templates_from_dir(GFile *uri, gboolean create_ifnexist)
 
1305
{
 
1306
        GFileEnumerator *en;
 
1307
        GFile *child;
 
1308
        GError *gerror=NULL;
 
1309
        GFileInfo *finfo;
 
1310
        GList *retlist=NULL;
 
1311
 
 
1312
 
 
1313
        en = g_file_enumerate_children(uri,G_FILE_ATTRIBUTE_STANDARD_NAME,G_FILE_QUERY_INFO_NONE, NULL, &gerror);
 
1314
        if (gerror) {
 
1315
                if (gerror->code == G_IO_ERROR_NOT_FOUND && create_ifnexist) {
 
1316
                        g_file_make_directory(uri,NULL,NULL);
 
1317
                } else {
 
1318
                        g_print("failed to load templates: %s\n",gerror->message);
 
1319
                }
 
1320
                g_error_free(gerror);
 
1321
                return NULL;
 
1322
        }
 
1323
 
 
1324
        finfo = g_file_enumerator_next_file(en,NULL,&gerror);
 
1325
        while(finfo) {
 
1326
                gchar *tmp, **arr;
 
1327
                child = g_file_get_child(uri, g_file_info_get_name(finfo));
 
1328
        arr = g_malloc(sizeof(char *)* 3);
 
1329
        arr[0] = g_strdup(g_file_info_get_name(finfo));
 
1330
                arr[1] = g_file_get_path(child);
 
1331
                arr[2] = NULL;
 
1332
                while ((tmp = strchr(arr[0], '_')) != NULL) {
 
1333
                *tmp = ' ';
 
1334
        }
 
1335
                retlist = g_list_prepend(retlist, arr);
 
1336
                g_object_unref(child);
 
1337
                g_object_unref(finfo);
 
1338
                finfo = g_file_enumerator_next_file(en,NULL,&gerror);
 
1339
        }
 
1340
        if (gerror) {
 
1341
                g_print("failed to list templates: %s\n",gerror->message);
 
1342
                g_error_free(gerror);
 
1343
        }
 
1344
        g_object_unref(en);
 
1345
        return g_list_sort(retlist, sort_templates);
 
1346
}
 
1347
 
 
1348
void
 
1349
load_templates(void)
 
1350
{
 
1351
        GList *t1, *t2;
 
1352
        GFile *uri = user_bfdir("templates/");
 
1353
        t1 = load_templates_from_dir(uri, TRUE);
 
1354
        g_object_unref(uri);
 
1355
        uri = g_file_new_for_path(PKGDATADIR"/templates/");
 
1356
        t2 = load_templates_from_dir(uri, FALSE);
 
1357
        g_object_unref(uri);
 
1358
        main_v->templates = g_list_concat(t1, t2);
 
1359
}