mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-04-16 20:38:48 +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>
|
2004-02-01 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
* glib/glib.def: Add g_strsplit_set.
|
* 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>
|
2004-02-01 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
* glib/glib.def: Add g_strsplit_set.
|
* 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>
|
2004-02-01 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
* glib/glib.def: Add g_strsplit_set.
|
* 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>
|
2004-02-01 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
* glib/glib.def: Add g_strsplit_set.
|
* 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>
|
2004-02-01 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
* glib/glib.def: Add g_strsplit_set.
|
* 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>
|
2004-02-01 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
* glib/glib.def: Add g_strsplit_set.
|
* 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>
|
Fri Jan 30 23:25:58 2004 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* glib/tmpl/iochannels.sgml:
|
* glib/tmpl/iochannels.sgml:
|
||||||
|
@ -1329,6 +1329,7 @@ g_completion_add_items
|
|||||||
g_completion_remove_items
|
g_completion_remove_items
|
||||||
g_completion_clear_items
|
g_completion_clear_items
|
||||||
g_completion_complete
|
g_completion_complete
|
||||||
|
g_completion_complete_utf8
|
||||||
g_completion_set_compare
|
g_completion_set_compare
|
||||||
GCompletionStrncmpFunc
|
GCompletionStrncmpFunc
|
||||||
g_completion_free
|
g_completion_free
|
||||||
|
@ -164,6 +164,57 @@ completion_check_cache (GCompletion* cmp,
|
|||||||
strncpy (*new_prefix + len, postfix, plen);
|
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*
|
GList*
|
||||||
g_completion_complete (GCompletion* cmp,
|
g_completion_complete (GCompletion* cmp,
|
||||||
const gchar* prefix,
|
const gchar* prefix,
|
||||||
|
@ -66,6 +66,7 @@ endif
|
|||||||
test_programs = \
|
test_programs = \
|
||||||
array-test \
|
array-test \
|
||||||
$(CXX_TEST) \
|
$(CXX_TEST) \
|
||||||
|
completion-test \
|
||||||
date-test \
|
date-test \
|
||||||
dirname-test \
|
dirname-test \
|
||||||
file-test \
|
file-test \
|
||||||
@ -114,6 +115,7 @@ thread_ldadd = $(libgthread) $(G_THREAD_LIBS) $(progs_ldadd)
|
|||||||
module_ldadd = $(libgmodule) $(G_MODULE_LIBS) $(progs_ldadd)
|
module_ldadd = $(libgmodule) $(G_MODULE_LIBS) $(progs_ldadd)
|
||||||
|
|
||||||
array_test_LDADD = $(progs_ldadd)
|
array_test_LDADD = $(progs_ldadd)
|
||||||
|
completion_test_LDADD = $(progs_ldadd)
|
||||||
date_test_LDADD = $(progs_ldadd)
|
date_test_LDADD = $(progs_ldadd)
|
||||||
dirname_test_LDADD = $(progs_ldadd)
|
dirname_test_LDADD = $(progs_ldadd)
|
||||||
file_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