+Thu Feb 5 00:56:28 2004 Matthias Clasen <maclas@gmx.de>
+
+ * glib/gcompletion.c (g_completion_complete_utf8): New function which
+ works like g_completion_complete(), but strips a trailing incomplete
+ UTF-8 character from the prefix. (#133313, Theppitak Karoonboonyanan)
+
+ * tests/completion-test.c (main): Some GCompletion tests.
+
+ * tests/Makefile.am: Add completion-test.
+
+
2004-02-01 Tor Lillqvist <tml@iki.fi>
* glib/glib.def: Add g_strsplit_set.
+Thu Feb 5 00:56:28 2004 Matthias Clasen <maclas@gmx.de>
+
+ * glib/gcompletion.c (g_completion_complete_utf8): New function which
+ works like g_completion_complete(), but strips a trailing incomplete
+ UTF-8 character from the prefix. (#133313, Theppitak Karoonboonyanan)
+
+ * tests/completion-test.c (main): Some GCompletion tests.
+
+ * tests/Makefile.am: Add completion-test.
+
+
2004-02-01 Tor Lillqvist <tml@iki.fi>
* glib/glib.def: Add g_strsplit_set.
+Thu Feb 5 00:56:28 2004 Matthias Clasen <maclas@gmx.de>
+
+ * glib/gcompletion.c (g_completion_complete_utf8): New function which
+ works like g_completion_complete(), but strips a trailing incomplete
+ UTF-8 character from the prefix. (#133313, Theppitak Karoonboonyanan)
+
+ * tests/completion-test.c (main): Some GCompletion tests.
+
+ * tests/Makefile.am: Add completion-test.
+
+
2004-02-01 Tor Lillqvist <tml@iki.fi>
* glib/glib.def: Add g_strsplit_set.
+Thu Feb 5 00:56:28 2004 Matthias Clasen <maclas@gmx.de>
+
+ * glib/gcompletion.c (g_completion_complete_utf8): New function which
+ works like g_completion_complete(), but strips a trailing incomplete
+ UTF-8 character from the prefix. (#133313, Theppitak Karoonboonyanan)
+
+ * tests/completion-test.c (main): Some GCompletion tests.
+
+ * tests/Makefile.am: Add completion-test.
+
+
2004-02-01 Tor Lillqvist <tml@iki.fi>
* glib/glib.def: Add g_strsplit_set.
+Thu Feb 5 00:56:28 2004 Matthias Clasen <maclas@gmx.de>
+
+ * glib/gcompletion.c (g_completion_complete_utf8): New function which
+ works like g_completion_complete(), but strips a trailing incomplete
+ UTF-8 character from the prefix. (#133313, Theppitak Karoonboonyanan)
+
+ * tests/completion-test.c (main): Some GCompletion tests.
+
+ * tests/Makefile.am: Add completion-test.
+
+
2004-02-01 Tor Lillqvist <tml@iki.fi>
* glib/glib.def: Add g_strsplit_set.
+Thu Feb 5 00:56:28 2004 Matthias Clasen <maclas@gmx.de>
+
+ * glib/gcompletion.c (g_completion_complete_utf8): New function which
+ works like g_completion_complete(), but strips a trailing incomplete
+ UTF-8 character from the prefix. (#133313, Theppitak Karoonboonyanan)
+
+ * tests/completion-test.c (main): Some GCompletion tests.
+
+ * tests/Makefile.am: Add completion-test.
+
+
2004-02-01 Tor Lillqvist <tml@iki.fi>
* glib/glib.def: Add g_strsplit_set.
+Thu Feb 5 00:54:43 2004 Matthias Clasen <maclas@gmx.de>
+
+ * glib/glib-sections.txt: Add g_completion_complete_utf8.
+
Fri Jan 30 23:25:58 2004 Matthias Clasen <maclas@gmx.de>
* glib/tmpl/iochannels.sgml:
g_completion_remove_items
g_completion_clear_items
g_completion_complete
+g_completion_complete_utf8
g_completion_set_compare
GCompletionStrncmpFunc
g_completion_free
strncpy (*new_prefix + len, postfix, plen);
}
+/**
+ * g_completion_complete_utf8:
+ * @cmp: the #GCompletion
+ * @prefix: the prefix string, typically used by the user, which is compared
+ * with each of the items
+ * @new_prefix: if non-%NULL, returns the longest prefix which is common to all
+ * items that matched @prefix, or %NULL if no items matched @prefix.
+ * This string should be freed when no longer needed.
+ *
+ * Attempts to complete the string @prefix using the #GCompletion target items.
+ * In contrast to g_completion_complete(), this function returns the largest common
+ * prefix that is a valid UTF-8 string, omitting a possible common partial
+ * character.
+ *
+ * You should use this function instead of g_completion_complete() if your
+ * items are UTF-8 strings.
+ *
+ * Return value: the list of items whose strings begin with @prefix. This should
+ * not be changed.
+ *
+ * Since: 2.4
+ **/
+GList*
+g_completion_complete_utf8 (GCompletion *cmp,
+ const gchar *prefix,
+ gchar **new_prefix)
+{
+ GList *list;
+ gchar *p, *q;
+
+ list = g_completion_complete (cmp, prefix, new_prefix);
+
+ if (*new_prefix)
+ {
+ p = *new_prefix + strlen (*new_prefix);
+ q = g_utf8_find_prev_char (*new_prefix, p);
+
+ switch (g_utf8_get_char_validated (q, p - q))
+ {
+ case (gunichar)-2:
+ case (gunichar)-1:
+ *q = 0;
+ break;
+ default: ;
+ }
+
+ }
+
+ return list;
+}
+
GList*
g_completion_complete (GCompletion* cmp,
const gchar* prefix,
test_programs = \
array-test \
$(CXX_TEST) \
+ completion-test \
date-test \
dirname-test \
file-test \
module_ldadd = $(libgmodule) $(G_MODULE_LIBS) $(progs_ldadd)
array_test_LDADD = $(progs_ldadd)
+completion_test_LDADD = $(progs_ldadd)
date_test_LDADD = $(progs_ldadd)
dirname_test_LDADD = $(progs_ldadd)
file_test_LDADD = $(progs_ldadd)
--- /dev/null
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000. See the AUTHORS
+ * file for a list of people on the GLib Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ */
+#include <glib.h>
+
+int main (int argc, char *argv[])
+{
+ GCompletion *cmp;
+ GList *items;
+ gchar *prefix;
+
+ cmp = g_completion_new (NULL);
+
+ items = NULL;
+ items = g_list_append (items, "a\302\243");
+ items = g_list_append (items, "a\302\244");
+ items = g_list_append (items, "bb");
+ items = g_list_append (items, "bc");
+ g_completion_add_items (cmp, items);
+
+ items = g_completion_complete (cmp, "a", &prefix);
+ g_assert (!strcmp ("a\302", prefix));
+ g_free (prefix);
+
+ items = g_completion_complete_utf8 (cmp, "a", &prefix);
+ g_assert (!strcmp ("a", prefix));
+ g_free (prefix);
+
+ items = g_completion_complete (cmp, "b", &prefix);
+ g_assert (!strcmp ("b", prefix));
+ g_free (prefix);
+
+ items = g_completion_complete_utf8 (cmp, "b", &prefix);
+ g_assert (!strcmp ("b", prefix));
+ g_free (prefix);
+
+ return 0;
+}