@b4n commented on this pull request.


In src/symbols.c:

>  {
+	GeanyDocument *doc = document_get_current();
+
+	if (plugin_extension_goto_provided(doc, NULL))
+		return plugin_extension_goto_perform(doc, pos, definition);

there's still the question of whether this should really be guarded behind Geany thinking there's a word. IMO it shouldn't, and callers should stop being guarded behind it, and the perform() call should return FALSE if there's no word to act on. This would alleviate the artificial dependency on Geany dictating there's a word -- but not actually providing it.

So the callers would look like

static void goto_tag(GeanyDocument *doc, gboolean definition)
{
	if (! symbols_goto_tag(sci_get_current_position(doc->editor->sci), definition))
		utils_beep();
}

and

			if (! symbols_goto_tag(editor_info.click_pos, TRUE))
				keybindings_send_command(GEANY_KEY_GROUP_GOTO, GEANY_KEYS_GOTO_MATCHINGBRACE);
			return TRUE;

And this here just removes the name argument and replaces it with

	const gchar *name;

	/* … */

	editor_find_current_word(doc->editor, pos,
		editor_info.current_word, GEANY_MAX_WORD_LENGTH, NULL);
	name = *editor_info.current_word ? editor_info.current_word : NULL;

	if (! name)
		return FALSE;

(and possibly return TRUE below when there was a match but it wasn't handled -- or keep it returning FALSE, the only thing that happens then is calling goto mathcing brace, which might be fine).


This might or might not be a detail, it depends on whether extensions depend on the fact there's a word, or if they are written carefully enough not to actually depend on it.


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <geany/geany/pull/3849/review/2111338041@github.com>