[geany/geany-plugins] 6d2845: Merge pull request #143 from b4n/geanylatex/extended-chars-capitalization
Frank Lanitz
git-noreply at xxxxx
Mon Apr 14 20:02:05 UTC 2014
Branch: refs/heads/master
Author: Frank Lanitz <frank at frank.uvena.de>
Committer: Frank Lanitz <frank at frank.uvena.de>
Date: Mon, 14 Apr 2014 20:02:05 UTC
Commit: 6d28455a35b2e6066349919112d4ac0011a8d7c1
https://github.com/geany/geany-plugins/commit/6d28455a35b2e6066349919112d4ac0011a8d7c1
Log Message:
-----------
Merge pull request #143 from b4n/geanylatex/extended-chars-capitalization
Geanylatex: extended characters capitalization
Modified Paths:
--------------
geanylatex/src/geanylatex.c
Modified: geanylatex/src/geanylatex.c
40 files changed, 32 insertions(+), 8 deletions(-)
===================================================================
@@ -33,7 +33,7 @@
#include "geanylatex.h"
#include "ctype.h"
-PLUGIN_VERSION_CHECK(199)
+PLUGIN_VERSION_CHECK(217)
PLUGIN_SET_TRANSLATABLE_INFO(
LOCALEDIR,
@@ -501,6 +501,18 @@ static void on_document_filetype_set(G_GNUC_UNUSED GObject *obj, GeanyDocument *
}
+static gint get_position_relative(ScintillaObject *sci, gint pos, gint n)
+{
+ return (gint) scintilla_send_message(sci, SCI_POSITIONRELATIVE, (uptr_t) pos, n);
+}
+
+
+static gint get_char_relative(ScintillaObject *sci, gint pos, gint n)
+{
+ return sci_get_char_at(sci, get_position_relative(sci, pos, n));
+}
+
+
static gboolean on_editor_notify(G_GNUC_UNUSED GObject *object, GeanyEditor *editor,
SCNotification *nt, G_GNUC_UNUSED gpointer data)
{
@@ -688,17 +700,29 @@ static gboolean on_editor_notify(G_GNUC_UNUSED GObject *object, GeanyEditor *edi
}
default:
{
- if (glatex_capitalize_sentence_starts == TRUE)
+ if (glatex_capitalize_sentence_starts == TRUE &&
+ g_ascii_isspace(get_char_relative(sci, pos, -2)))
{
- if (sci_get_char_at(sci, pos -2) == ' ' &&
- (sci_get_char_at(sci, pos -3) == '.' ||
- sci_get_char_at(sci, pos -3) == '!' ||
- sci_get_char_at(sci, pos -3) == '?' ))
+ gint prevNonWhite = 0;
+ gint i;
+
+ /* find the previous non-white character */
+ i = get_position_relative(sci, pos, -3);
+ while (g_ascii_isspace((prevNonWhite = sci_get_char_at(sci, i))))
+ {
+ /* no need to bother about multi-byte characters here since
+ * we only check for ASCII space characters anyway */
+ --i;
+ }
+
+ if (prevNonWhite == '.' ||
+ prevNonWhite == '!' ||
+ prevNonWhite == '?')
{
gchar *upperLtr = NULL;
gchar *selection = NULL;
- sci_set_selection_start(sci, pos - 1);
+ sci_set_selection_start(sci, get_position_relative(sci, pos, -1));
sci_set_selection_end(sci, pos);
selection = sci_get_selection_contents(sci);
@@ -708,8 +732,8 @@ static gboolean on_editor_notify(G_GNUC_UNUSED GObject *object, GeanyEditor *edi
g_free(upperLtr);
g_free(selection);
}
- break;
}
+ break;
}
} /* Closing switch */
/* later there could be some else ifs for other keywords */
--------------
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