static gchar *get_tags_filename(void) { gchar *ret = NULL; if (geany_data->app->project) { ret = utils_remove_ext_from_filename(geany_data->app->project->file_name); SETPTR(ret, g_strconcat(ret, ".tags", NULL)); } return ret; }
static gboolean try_swap_header_source(gchar *file_name, gboolean is_header, GSList *file_list, GSList *header_patterns, GSList *source_patterns) { gchar *name_pattern; gchar *base_name = NULL; GSList *elem; GPatternSpec *pattern; gboolean found = FALSE; name_pattern = g_path_get_basename(file_name); setptr(name_pattern, utils_remove_ext_from_filename(name_pattern)); setptr(name_pattern, g_strconcat(name_pattern, ".*", NULL)); pattern = g_pattern_spec_new(name_pattern); g_free(name_pattern); for (elem = file_list; elem != NULL; elem = g_slist_next(elem)) { gchar *full_name = elem->data; base_name = g_path_get_basename(full_name); if (g_pattern_match_string(pattern, base_name) && gprj_project_is_in_project(full_name)) { if ((is_header && patterns_match(source_patterns, base_name)) || (!is_header && patterns_match(header_patterns, base_name))) { open_file(full_name); found = TRUE; break; } } } g_free(base_name); g_pattern_spec_free(pattern); return found; }