[geany/geany-plugins] b0b5c9: projectorganizer: Fix for cases when base_path is relative
Jiří Techet
git-noreply at xxxxx
Sun Mar 29 19:38:50 UTC 2015
Branch: refs/heads/master
Author: Jiří Techet <techet at gmail.com>
Committer: Jiří Techet <techet at gmail.com>
Date: Sun, 29 Mar 2015 19:38:50 UTC
Commit: b0b5c94615796c193b9531bfd69957663bb664f0
https://github.com/geany/geany-plugins/commit/b0b5c94615796c193b9531bfd69957663bb664f0
Log Message:
-----------
projectorganizer: Fix for cases when base_path is relative
This is necessary at least for now until (if ever) the simplified project
definition patch gets into Geany.
Modified Paths:
--------------
projectorganizer/src/prjorg-menu.c
projectorganizer/src/prjorg-project.c
projectorganizer/src/prjorg-sidebar.c
projectorganizer/src/prjorg-utils.c
projectorganizer/src/prjorg-utils.h
Modified: projectorganizer/src/prjorg-menu.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -185,7 +185,7 @@ static void on_swap_header_source(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_U
static void on_find_in_project(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer user_data)
{
if (geany_data->app->project)
- search_show_find_in_files_dialog(geany_data->app->project->base_path);
+ search_show_find_in_files_dialog(get_project_base_path());
}
Modified: projectorganizer/src/prjorg-project.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -473,7 +473,7 @@ void prjorg_project_open(GKeyFile * key_file)
}
g_slist_free(ext_list);
/* the project directory is always first */
- prj_org->roots = g_slist_prepend(prj_org->roots, create_root(geany_data->app->project->base_path));
+ prj_org->roots = g_slist_prepend(prj_org->roots, create_root(get_project_base_path()));
update_project(
source_patterns,
Modified: projectorganizer/src/prjorg-sidebar.c
16 lines changed, 8 insertions(+), 8 deletions(-)
===================================================================
@@ -219,7 +219,7 @@ static gchar *build_path(GtkTreeIter *iter)
gchar *name;
if (!iter)
- return g_strdup(geany_data->app->project->base_path);
+ return g_strdup(get_project_base_path());
node = *iter;
model = GTK_TREE_MODEL(s_file_store);
@@ -237,7 +237,7 @@ static gchar *build_path(GtkTreeIter *iter)
}
if (topmost_selected(model, &node, TRUE))
- SETPTR(path, g_build_filename(geany_data->app->project->base_path, path, NULL));
+ SETPTR(path, g_build_filename(get_project_base_path(), path, NULL));
else
{
gtk_tree_model_get(model, &node, FILEVIEW_COLUMN_NAME, &name, -1);
@@ -291,7 +291,7 @@ static void on_add_external(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED
GTK_WINDOW(geany->main_widgets->window), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
_("_Cancel"), GTK_RESPONSE_CANCEL,
_("Add"), GTK_RESPONSE_ACCEPT, NULL);
- gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), geany_data->app->project->base_path);
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), get_project_base_path());
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
{
@@ -358,7 +358,7 @@ static void find_file_recursive(GtkTreeIter *iter, gboolean case_sensitive, gboo
gchar *path;
path = build_path(iter);
- name = get_relative_path(geany_data->app->project->base_path, path);
+ name = get_relative_path(get_project_base_path(), path);
g_free(path);
}
else
@@ -372,7 +372,7 @@ static void find_file_recursive(GtkTreeIter *iter, gboolean case_sensitive, gboo
gchar *path, *rel_path;
path = build_path(iter);
- rel_path = get_relative_path(geany_data->app->project->base_path, path);
+ rel_path = get_relative_path(get_project_base_path(), path);
msgwin_msg_add(COLOR_BLACK, -1, NULL, "%s", rel_path ? rel_path : path);
g_free(path);
g_free(rel_path);
@@ -401,7 +401,7 @@ static void find_file(GtkTreeIter *iter)
pattern = g_pattern_spec_new(pattern_str);
msgwin_clear_tab(MSG_MESSAGE);
- msgwin_set_messages_dir(geany_data->app->project->base_path);
+ msgwin_set_messages_dir(get_project_base_path());
find_file_recursive(iter, case_sensitive, full_path, pattern);
msgwin_switch_tab(MSG_MESSAGE, TRUE);
}
@@ -581,7 +581,7 @@ static void find_tags(const gchar *name, gboolean declaration, gboolean case_sen
pspec = g_pattern_spec_new(name_case);
- msgwin_set_messages_dir(geany_data->app->project->base_path);
+ msgwin_set_messages_dir(get_project_base_path());
msgwin_clear_tab(MSG_MESSAGE);
for (i = 0; i < tags_array->len; i++) /* TODO: binary search */
{
@@ -592,7 +592,7 @@ static void find_tags(const gchar *name, gboolean declaration, gboolean case_sen
gchar *scopestr = tag->scope ? g_strconcat(tag->scope, "::", NULL) : g_strdup("");
gchar *relpath;
- relpath = get_relative_path(geany_data->app->project->base_path, tag->file->file_name);
+ relpath = get_relative_path(get_project_base_path(), tag->file->file_name);
msgwin_msg_add(COLOR_BLACK, -1, NULL, "%s:%lu:\n\t[%s]\t %s%s%s", relpath,
tag->line, tm_tag_type_name(tag), scopestr, tag->name, tag->arglist ? tag->arglist : "");
g_free(scopestr);
Modified: projectorganizer/src/prjorg-utils.c
25 lines changed, 25 insertions(+), 0 deletions(-)
===================================================================
@@ -116,3 +116,28 @@ gchar *get_selection(void)
else
return editor_get_word_at_pos(doc->editor, -1, wc);
}
+
+
+gchar *get_project_base_path(void)
+{
+ GeanyProject *project = geany_data->app->project;
+
+ if (project && !EMPTY(project->base_path))
+ {
+ if (g_path_is_absolute(project->base_path))
+ return g_strdup(project->base_path);
+ else
+ { /* build base_path out of project file name's dir and base_path */
+ gchar *path;
+ gchar *dir = g_path_get_dirname(project->file_name);
+
+ if (utils_str_equal(project->base_path, "./"))
+ return dir;
+
+ path = g_build_filename(dir, project->base_path, NULL);
+ g_free(dir);
+ return path;
+ }
+ }
+ return NULL;
+}
Modified: projectorganizer/src/prjorg-utils.h
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -26,5 +26,6 @@ GSList *get_precompiled_patterns(gchar **patterns);
void open_file(gchar *utf8_name);
gchar *get_selection(void);
+gchar *get_project_base_path(void);
#endif
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Plugins-Commits
mailing list