@b4n requested changes on this pull request.

LGTM, see inline comments.

Apart from that, I was kind of disappointed that the "goto file" only lists 
Geany open documents rather than the project's documents -- maybe you'd like to 
add that?
Also, I hoped to be able to go to a specific file's line, not only in the 
current file -- but that's probably less useful in practice.

> +     GPtrArray *arr = g_ptr_array_new_full(0, 
> (GDestroyNotify)prjorg_goto_symbol_free);
+       gint lineno = atoi(line_str);
+       gint linenum = sci_get_line_count(doc->editor->sci);
+       guint i;
+
+       for (i = 0; i < 4; i++)
+       {
+               PrjorgGotoSymbol *sym = g_new0(PrjorgGotoSymbol, 1);
+
+               sym->file_name = utils_get_utf8_from_locale(doc->real_path);
+               sym->icon = _ICON_OTHER;
+
+               switch (i)
+               {
+                       case 0:
+                               sym->name = g_strdup(_("line typed above"));

This string and the ones below are probably worth a translator comment, and 
possibly even a translation context.

> +             }
+               pos = new_pos;
+       }
+       end_pos = pos;
+
+       if (start_pos == end_pos)
+               return NULL;
+
+       return sci_get_contents_range(sci, start_pos, end_pos);
+}
+
+
+static void goto_panel_query(const gchar *query_type, gboolean prefill)
+{
+       GeanyDocument *doc = document_get_current();
+       gint pos = sci_get_current_position(doc->editor->sci);

:warning: dereferencing `doc` which is tested against `NULL` further down.  And 
the `NULL` check makes sense in the (unlikely) case no document is open.

> + * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 
USA.
+ */
+
+/* This file contains mostly stolen code from the Colomban Wendling's Commander

You're welcome :laughing: 

> +             gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &x, &dummy);
+       }
+       return gtk_icon_theme_load_icon(icon_theme, icon_name, x, 0, NULL);
+}
+
+
+static GdkPixbuf *get_icon_pixbuf(gint icon)
+{
+       if (!geany_icons[_ICON_CLASS].pixbuf)
+       {
+               guint i;
+               for (i = 0; i < G_N_ELEMENTS(geany_icons); i++)
+                       geany_icons[i].pixbuf = 
get_tag_icon(geany_icons[i].icon_name);
+       }
+
+       if (icon < _N_ICONS)

```suggestion
        if (icon < G_N_ELEMENTS(geany_icons))
```
maybe?

> +
+               case GDK_KEY_Return:
+               case GDK_KEY_KP_Enter:
+               case GDK_KEY_ISO_Enter:
+                       
tree_view_activate_focused_row(GTK_TREE_VIEW(panel_data.tree_view));
+                       return TRUE;
+
+               case GDK_KEY_Page_Up:
+               case GDK_KEY_Page_Down:
+               case GDK_KEY_KP_Page_Up:
+               case GDK_KEY_KP_Page_Down:
+               {
+                       gboolean up = event->keyval == GDK_KEY_Page_Up || 
event->keyval == GDK_KEY_KP_Page_Up;
+                       
tree_view_move_focus(GTK_TREE_VIEW(panel_data.tree_view),
+                               GTK_MOVEMENT_PAGES, up ? -1 : 1);
+                 return TRUE;

```suggestion
                        return TRUE;
```

> +
+       if (!symbols)
+               return ret;
+
+       tf_strv = g_strsplit_set(filter, " ", -1);
+
+       for (i = 0; i < symbols->len && j < 100; i++)
+       {
+               PrjorgGotoSymbol *symbol = symbols->pdata[i];
+               gchar *normalized_name = g_utf8_normalize(symbol->name, -1, 
G_NORMALIZE_ALL);
+               gboolean filtered = FALSE;
+               gchar **val;
+
+               foreach_strv(val, tf_strv)
+               {
+                       gchar *normalized_val = g_utf8_normalize(*val, -1, 
G_NORMALIZE_ALL);

Maybe you could normalize the filter before splitting it?

-- 
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/pull/1341#pullrequestreview-2026639258
You are receiving this because you are subscribed to this thread.

Message ID: <geany/geany-plugins/pull/1341/review/[email protected]>

Reply via email to