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,
458
init_prop_integer(&config_rc, &main_v->props.strip_trailing_spaces_on_save, "strip_trailing_spaces_on_save:", 0,
458
460
init_prop_integer(&config_rc, &main_v->props.encoding_search_Nbytes, "encoding_search_Nbytes:", 500,
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);
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;
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 ?? */
630
635
len = g_strv_length(arr);
633
638
tmplist = g_list_next(tmplist);
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');
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));
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));
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));
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));
750
g_list_append(defaults, array_from_arglist(_("Tidy convert to XHTML"), "|tidy -utf8 -i -w 80 -c -q -asxhtml|", NULL));
742
752
g_list_append(defaults,
743
753
array_from_arglist(_("Tidy HTML (perltidy)"), "|perltidy -b|", NULL));
748
758
g_list_append(defaults,
749
759
array_from_arglist(_("Render HTML to text"), "lynx -force_html -dump %i |", NULL));
761
g_list_append(defaults,
762
array_from_arglist(_("PHP Beautifier"), "|php_beautifier -t|", NULL));
765
g_list_append(defaults,
766
array_from_arglist(_("Javascript Minify with jsmin"), "|python "PKGDATADIR"/jsmin.py|", NULL));
768
g_list_append(defaults,
769
array_from_arglist(_("CSS Minify with cssmin"), "|python "PKGDATADIR"/cssmin.py|", NULL));
772
g_list_append(defaults,
773
array_from_arglist(_("Javascript Minify with jsmin"), "|"PKGDATADIR"/jsmin.py|", NULL));
775
g_list_append(defaults,
776
array_from_arglist(_("CSS Minify with cssmin"), "|"PKGDATADIR"/cssmin.py|", NULL));
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);
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
858
888
migrate_config_files(main_configlist, file);
862
892
main_v->props.encoding_search_Nbytes = 2048;
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);
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 */
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,
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:",
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);
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);
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);
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);
1086
1132
setup_session_after_parse(Tsessionvars * session)
1088
if (session->editor_tab_width < 2)
1134
if (session->editor_tab_width < 1)
1089
1135
session->editor_tab_width = 3;
1091
1137
if (session->default_mime_type == NULL)
1092
1138
session->default_mime_type = g_strdup("text/plain");
1094
1140
if (session->filegloblist == NULL) {
1095
session->filegloblist = list_from_arglist(TRUE, "*",
1141
session->filegloblist = list_from_arglist(TRUE, "*",
1221
add_new_encodings(GList *defaults, GList *current)
1224
GList *tmplist, *last;
1225
ht = g_hash_table_new(g_str_hash, g_str_equal);
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));
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])) {
1237
DEBUG_MSG("append encoding %s\n",arr[1]);
1238
last = g_list_append(last, arr);
1239
last = g_list_last(last);
1242
g_hash_table_destroy(ht);
1174
1245
/* should be called AFTER the normal properties are loaded, becauses return_session_configlist() uses
1175
1246
settings from main_v->props */
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);
1203
array_from_arglist(_("Hide objectfiles"), "0", "application/octet-stream:application/x-object",
1274
array_from_arglist(_("Hide objectfiles"), "0", "",
1205
1276
main_v->globses.filefilters = g_list_prepend(main_v->globses.filefilters, arr);
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",
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;
1287
add_new_encodings(default_encodings, main_v->globses.encodings);
1288
g_list_free(default_encodings);
1213
1290
g_object_unref(defaultfile);
1297
sort_templates(gconstpointer a,gconstpointer b)
1299
return g_strcmp0(((gchar **)a)[0], ((gchar **)b)[0]);
1304
load_templates_from_dir(GFile *uri, gboolean create_ifnexist)
1306
GFileEnumerator *en;
1308
GError *gerror=NULL;
1310
GList *retlist=NULL;
1313
en = g_file_enumerate_children(uri,G_FILE_ATTRIBUTE_STANDARD_NAME,G_FILE_QUERY_INFO_NONE, NULL, &gerror);
1315
if (gerror->code == G_IO_ERROR_NOT_FOUND && create_ifnexist) {
1316
g_file_make_directory(uri,NULL,NULL);
1318
g_print("failed to load templates: %s\n",gerror->message);
1320
g_error_free(gerror);
1324
finfo = g_file_enumerator_next_file(en,NULL,&gerror);
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);
1332
while ((tmp = strchr(arr[0], '_')) != NULL) {
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);
1341
g_print("failed to list templates: %s\n",gerror->message);
1342
g_error_free(gerror);
1345
return g_list_sort(retlist, sort_templates);
1349
load_templates(void)
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);