mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-04-14 19:48:05 +02:00
New function which works like g_completion_complete(), but strips a
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.
This commit is contained in:
parent
999a87a19a
commit
dd394749f9
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
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.
|
||||
|
@ -1,3 +1,14 @@
|
||||
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.
|
||||
|
@ -1,3 +1,14 @@
|
||||
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.
|
||||
|
@ -1,3 +1,14 @@
|
||||
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.
|
||||
|
@ -1,3 +1,14 @@
|
||||
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.
|
||||
|
@ -1,3 +1,14 @@
|
||||
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.
|
||||
|
@ -1,3 +1,7 @@
|
||||
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:
|
||||
|
@ -1329,6 +1329,7 @@ g_completion_add_items
|
||||
g_completion_remove_items
|
||||
g_completion_clear_items
|
||||
g_completion_complete
|
||||
g_completion_complete_utf8
|
||||
g_completion_set_compare
|
||||
GCompletionStrncmpFunc
|
||||
g_completion_free
|
||||
|
@ -164,6 +164,57 @@ completion_check_cache (GCompletion* cmp,
|
||||
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,
|
||||
|
@ -66,6 +66,7 @@ endif
|
||||
test_programs = \
|
||||
array-test \
|
||||
$(CXX_TEST) \
|
||||
completion-test \
|
||||
date-test \
|
||||
dirname-test \
|
||||
file-test \
|
||||
@ -114,6 +115,7 @@ thread_ldadd = $(libgthread) $(G_THREAD_LIBS) $(progs_ldadd)
|
||||
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)
|
||||
|
60
tests/completion-test.c
Normal file
60
tests/completion-test.c
Normal file
@ -0,0 +1,60 @@
|
||||
/* 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;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user