Skip to content

Commit

Permalink
Merge pull request #325 from eht16/320_fix_single_quote_detection2
Browse files Browse the repository at this point in the history
Make temporarily modifying wordchars more efficient by avoiding full …
  • Loading branch information
frlan committed Jan 9, 2016
2 parents 4a77ba2 + d1793bc commit 4f54d2a
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions spellcheck/src/speller.c
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ gint sc_speller_process_line(GeanyDocument *doc, gint line_number, const gchar *
gint wstart, wend;
gint suggestions_found = 0;
gint wordchars_len;
gchar *wordchars_orig;
gchar *wordchars;
GString *str;

g_return_val_if_fail(sc_speller_dict != NULL, 0);
Expand All @@ -215,14 +215,13 @@ gint sc_speller_process_line(GeanyDocument *doc, gint line_number, const gchar *
/* add ' (single quote) temporarily to wordchars
* to be able to check for "doesn't", "isn't" and similar */
wordchars_len = scintilla_send_message(doc->editor->sci, SCI_GETWORDCHARS, 0, 0);
wordchars_orig = g_malloc0(wordchars_len + 1);
scintilla_send_message(doc->editor->sci, SCI_GETWORDCHARS, 0, (sptr_t)wordchars_orig);
if (! strchr(wordchars_orig, '\''))
wordchars = g_malloc0(wordchars_len + 2); /* 2 = temporarily added "'" and "\0" */
scintilla_send_message(doc->editor->sci, SCI_GETWORDCHARS, 0, (sptr_t)wordchars);
if (! strchr(wordchars, '\''))
{
GString *wordchars_new = g_string_new(wordchars_orig);
g_string_append_c(wordchars_new, '\'');
scintilla_send_message(doc->editor->sci, SCI_SETWORDCHARS, 0, (sptr_t)wordchars_new->str);
g_string_free(wordchars_new, TRUE);
/* temporarily add "'" to the wordchars */
wordchars[wordchars_len] = '\'';
scintilla_send_message(doc->editor->sci, SCI_SETWORDCHARS, 0, (sptr_t)wordchars);
}

str = g_string_sized_new(256);
Expand All @@ -249,9 +248,10 @@ gint sc_speller_process_line(GeanyDocument *doc, gint line_number, const gchar *
}

/* reset wordchars for the current document */
scintilla_send_message(doc->editor->sci, SCI_SETWORDCHARS, 0, (sptr_t)wordchars_orig);
wordchars[wordchars_len] = '\0';
scintilla_send_message(doc->editor->sci, SCI_SETWORDCHARS, 0, (sptr_t)wordchars);

g_free(wordchars_orig);
g_free(wordchars);
g_string_free(str, TRUE);
return suggestions_found;
}
Expand Down

0 comments on commit 4f54d2a

Please sign in to comment.