author | Myhailo Danylenko <isbear@ukrpost.net> |
Thu, 18 Oct 2012 15:36:16 +0300 | |
changeset 52 | 887f44e99aa1 |
parent 51 | 5e5992999357 |
child 53 | 577410087c82 |
permissions | -rw-r--r-- |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
1 |
# HG changeset patch |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
2 |
# Parent f8958ab545ac1af3e3fbc3b3b025de66fd1ffa51 |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
3 |
Make completion sorting order configurable |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
4 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
5 |
* Use allocated plain array for categories |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
6 |
* Use callbacks for dynamic completions (private for now) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
7 |
* Add compl_set_flags() to allow user to set completion order |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
8 |
* [todo] Test ordering |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
9 |
* [todo] Bump API (compatibly) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
10 |
* [todo] Reallocate array, when need more completions |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
11 |
* [todo] Design and publish interface to dynamic completion cbs |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
12 |
|
52
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
13 |
diff -r f8958ab545ac mcabber/ChangeLog.api |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
14 |
--- a/mcabber/ChangeLog.api Mon Oct 15 19:53:02 2012 +0200 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
15 |
+++ b/mcabber/ChangeLog.api Thu Oct 18 15:34:38 2012 +0300 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
16 |
@@ -1,3 +1,9 @@ |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
17 |
+dev (24) |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
18 |
+ * MQ patch completion-sorting.diff |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
19 |
+ * Add compl_set_flags() function |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
20 |
+ |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
21 |
+ -- Myhailo Danylenko, 2012-10-18 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
22 |
+ |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
23 |
dev (23) |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
24 |
* Changeset 8dc418af3e72 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
25 |
Add buddy_(get|set)activeresource() functions |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
26 |
diff -r f8958ab545ac mcabber/mcabber/api.h |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
27 |
--- a/mcabber/mcabber/api.h Mon Oct 15 19:53:02 2012 +0200 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
28 |
+++ b/mcabber/mcabber/api.h Thu Oct 18 15:34:38 2012 +0300 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
29 |
@@ -3,12 +3,13 @@ |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
30 |
|
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
31 |
#include <mcabber/config.h> // For MCABBER_BRANCH |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
32 |
|
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
33 |
-#define MCABBER_API_VERSION 23 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
34 |
+#define MCABBER_API_VERSION 24 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
35 |
#define MCABBER_API_MIN 21 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
36 |
|
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
37 |
#define MCABBER_BRANCH_DEV 1 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
38 |
|
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
39 |
#define MCABBER_API_HAVE_CMD_ID 1 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
40 |
+#define MCABBER_API_HAVE_COMPL_FLAGS 1 |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
41 |
|
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
42 |
extern const gchar *mcabber_branch; |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
43 |
extern const guint mcabber_api_version; |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
44 |
diff -r f8958ab545ac mcabber/mcabber/compl.c |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
45 |
--- a/mcabber/mcabber/compl.c Mon Oct 15 19:53:02 2012 +0200 |
52
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
46 |
+++ b/mcabber/mcabber/compl.c Thu Oct 18 15:34:38 2012 +0300 |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
47 |
@@ -2,7 +2,7 @@ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
48 |
* compl.c -- Completion system |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
49 |
* |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
50 |
* Copyright (C) 2005-2010 Mikael Berthe <mikael@lilotux.net> |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
51 |
- * Copyright (C) 2009,2010 Myhailo Danylenko <isbear@ukrpost.net> |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
52 |
+ * Copyright (C) 2009-2012 Myhailo Danylenko <isbear@ukrpost.net> |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
53 |
* |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
54 |
* This program is free software; you can redistribute it and/or modify |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
55 |
* it under the terms of the GNU General Public License as published by |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
56 |
@@ -47,49 +47,97 @@ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
57 |
GSList *next; // pointer to next completion to try |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
58 |
} compl; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
59 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
60 |
+typedef GSList *(*compl_handler_t) (void); // XXX userdata? *dynlist? |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
61 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
62 |
// Category structure |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
63 |
typedef struct { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
64 |
- guint64 flag; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
65 |
+ guint flags; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
66 |
GSList *words; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
67 |
+ compl_handler_t dynamic; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
68 |
} category; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
69 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
70 |
-static GSList *Categories; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
71 |
+#define COMPL_CAT_BUILTIN 0x01 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
72 |
+#define COMPL_CAT_ACTIVE 0x02 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
73 |
+#define COMPL_CAT_DYNAMIC 0x04 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
74 |
+#define COMPL_CAT_REVERSE 0x10 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
75 |
+#define COMPL_CAT_NOSORT 0x20 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
76 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
77 |
+#define COMPL_CAT_USERFLAGS 0x30 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
78 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
79 |
static compl *InputCompl; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
80 |
+static category *Categories; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
81 |
+static guint num_categories; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
82 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
83 |
-#ifdef MODULES_ENABLE |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
84 |
-static guint64 registered_cats; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
85 |
+// Dynamic completions callbacks |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
86 |
+static GSList *compl_dyn_group (void) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
87 |
+{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
88 |
+ return compl_list(ROSTER_TYPE_GROUP); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
89 |
+} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
90 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
91 |
-static inline void register_builtin_cat(guint c) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
92 |
- registered_cats |= 1UL << (c-1); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
93 |
+static GSList *compl_dyn_user (void) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
94 |
+{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
95 |
+ return compl_list(ROSTER_TYPE_USER); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
96 |
+} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
97 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
98 |
+static GSList *compl_dyn_resource (void) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
99 |
+{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
100 |
+ return buddy_getresources_locale(NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
101 |
+} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
102 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
103 |
+static GSList *compl_dyn_events (void) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
104 |
+{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
105 |
+ GSList *compl = evs_geteventslist(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
106 |
+ GSList *cel; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
107 |
+ for (cel = compl; cel; cel = cel->next) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
108 |
+ cel->data = g_strdup(cel->data); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
109 |
+ compl = g_slist_append(compl, g_strdup("list")); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
110 |
+ return compl; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
111 |
+} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
112 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
113 |
+static inline void register_builtin_cat(guint c, compl_handler_t dynamic) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
114 |
+ Categories[c-1].flags = COMPL_CAT_BUILTIN | COMPL_CAT_ACTIVE; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
115 |
+ Categories[c-1].words = NULL; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
116 |
+ Categories[c-1].dynamic = dynamic; |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
117 |
+ if (dynamic != NULL) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
118 |
+ Categories[c-1].flags |= COMPL_CAT_DYNAMIC; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
119 |
+ } |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
120 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
121 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
122 |
void compl_init_system(void) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
123 |
{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
124 |
+#ifdef MODULES_ENABLE |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
125 |
+ num_categories = 64; // XXX |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
126 |
+#else |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
127 |
+ num_categories = COMPL_MODULE; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
128 |
+#endif |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
129 |
+ Categories = g_new(category, num_categories); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
130 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
131 |
// Builtin completion categories: |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
132 |
- register_builtin_cat(COMPL_CMD); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
133 |
- register_builtin_cat(COMPL_JID); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
134 |
- register_builtin_cat(COMPL_URLJID); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
135 |
- register_builtin_cat(COMPL_NAME); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
136 |
- register_builtin_cat(COMPL_STATUS); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
137 |
- register_builtin_cat(COMPL_FILENAME); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
138 |
- register_builtin_cat(COMPL_ROSTER); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
139 |
- register_builtin_cat(COMPL_BUFFER); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
140 |
- register_builtin_cat(COMPL_GROUP); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
141 |
- register_builtin_cat(COMPL_GROUPNAME); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
142 |
- register_builtin_cat(COMPL_MULTILINE); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
143 |
- register_builtin_cat(COMPL_ROOM); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
144 |
- register_builtin_cat(COMPL_RESOURCE); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
145 |
- register_builtin_cat(COMPL_AUTH); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
146 |
- register_builtin_cat(COMPL_REQUEST); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
147 |
- register_builtin_cat(COMPL_EVENTS); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
148 |
- register_builtin_cat(COMPL_EVENTSID); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
149 |
- register_builtin_cat(COMPL_PGP); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
150 |
- register_builtin_cat(COMPL_COLOR); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
151 |
- register_builtin_cat(COMPL_OTR); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
152 |
- register_builtin_cat(COMPL_OTRPOLICY); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
153 |
- register_builtin_cat(COMPL_MODULE); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
154 |
+ register_builtin_cat(COMPL_CMD, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
155 |
+ register_builtin_cat(COMPL_JID, compl_dyn_user); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
156 |
+ register_builtin_cat(COMPL_URLJID, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
157 |
+ register_builtin_cat(COMPL_NAME, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
158 |
+ register_builtin_cat(COMPL_STATUS, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
159 |
+ register_builtin_cat(COMPL_FILENAME, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
160 |
+ register_builtin_cat(COMPL_ROSTER, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
161 |
+ register_builtin_cat(COMPL_BUFFER, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
162 |
+ register_builtin_cat(COMPL_GROUP, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
163 |
+ register_builtin_cat(COMPL_GROUPNAME, compl_dyn_group); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
164 |
+ register_builtin_cat(COMPL_MULTILINE, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
165 |
+ register_builtin_cat(COMPL_ROOM, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
166 |
+ register_builtin_cat(COMPL_RESOURCE, compl_dyn_resource); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
167 |
+ register_builtin_cat(COMPL_AUTH, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
168 |
+ register_builtin_cat(COMPL_REQUEST, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
169 |
+ register_builtin_cat(COMPL_EVENTS, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
170 |
+ register_builtin_cat(COMPL_EVENTSID, compl_dyn_events); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
171 |
+ register_builtin_cat(COMPL_PGP, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
172 |
+ register_builtin_cat(COMPL_COLOR, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
173 |
+ register_builtin_cat(COMPL_OTR, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
174 |
+ register_builtin_cat(COMPL_OTRPOLICY, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
175 |
+ register_builtin_cat(COMPL_MODULE, NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
176 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
177 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
178 |
+#ifdef MODULES_ENABLE |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
179 |
// compl_new_category() |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
180 |
// Reserves id for new completion category. |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
181 |
// Returns 0, if no more categories can be allocated. |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
182 |
@@ -97,32 +145,87 @@ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
183 |
// as it is likely to change in future. |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
184 |
guint compl_new_category(void) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
185 |
{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
186 |
- const guint maxcat = 8 * sizeof (registered_cats); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
187 |
guint i = 0; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
188 |
- while ((registered_cats >> i) & 1 && i < maxcat) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
189 |
- i++; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
190 |
- if (i >= maxcat) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
191 |
- return 0; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
192 |
- else { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
193 |
- guint64 id = 1 << i; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
194 |
- registered_cats |= id; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
195 |
- return i+1; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
196 |
+ for (; i < num_categories; i++) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
197 |
+ if (!(Categories[i].flags & COMPL_CAT_ACTIVE)) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
198 |
+ Categories[i].flags = COMPL_CAT_ACTIVE; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
199 |
+ Categories[i].words = NULL; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
200 |
+ return i+1; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
201 |
+ } |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
202 |
} |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
203 |
+ { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
204 |
+ guint new_num = num_categories + 16; // *2? |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
205 |
+ category *new_categories = g_try_renew(category, Categories, new_num); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
206 |
+ if (new_categories) { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
207 |
+ Categories = new_categories; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
208 |
+ num_categories = new_num; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
209 |
+ Categories[i].flags = COMPL_CAT_ACTIVE; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
210 |
+ Categories[i].words = NULL; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
211 |
+ return i+1; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
212 |
+ } else |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
213 |
+ scr_log_print(LPRINT_LOGNORM, "Warning: Unable to reallocate " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
214 |
+ "more memory for completion categories!"); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
215 |
+ } |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
216 |
+ return 0; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
217 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
218 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
219 |
// compl_del_category(id) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
220 |
// Frees reserved id for category. |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
221 |
// Note, that for now it not validates its input, so, be careful |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
222 |
// and specify exactly what you get from compl_new_category. |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
223 |
-void compl_del_category(guint id) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
224 |
+void compl_del_category(guint compl) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
225 |
{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
226 |
- if (!id) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
227 |
- scr_log_print(LPRINT_LOGNORM, "Error: compl_del_category() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
228 |
- "Invalid category."); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
229 |
+ GSList *wel; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
230 |
+ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
231 |
+ if (!compl) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
232 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_del_category() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
233 |
+ "Invalid category."); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
234 |
return; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
235 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
236 |
- id--; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
237 |
- registered_cats &= ~(1<<id); |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
238 |
+ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
239 |
+ compl--; |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
240 |
+ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
241 |
+ if ((compl >= num_categories) || |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
242 |
+ (Categories[compl].flags & COMPL_CAT_BUILTIN)) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
243 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_del_category() " |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
244 |
+ "Invalid category."); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
245 |
+ return; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
246 |
+ } |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
247 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
248 |
+ Categories[compl].flags = 0; |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
249 |
+ for (wel = Categories[compl].words; wel; wel = g_slist_next (wel)) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
250 |
+ g_free (wel -> data); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
251 |
+ g_slist_free (Categories[compl].words); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
252 |
+} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
253 |
+ |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
254 |
+// compl_set_flags (category, flags) |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
255 |
+// Sets sorting order for given category. |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
256 |
+// In future can be merged with new_category, set more flags, |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
257 |
+// maybe even set dynamic callback. |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
258 |
+void compl_set_flags(guint compl, guint new_flags) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
259 |
+{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
260 |
+ if (!compl) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
261 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_set_flags() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
262 |
+ "Invalid category."); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
263 |
+ return; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
264 |
+ } |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
265 |
+ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
266 |
+ compl--; |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
267 |
+ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
268 |
+ if (compl < num_categories) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
269 |
+ guint flags = Categories[compl].flags; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
270 |
+ if (flags & COMPL_CAT_BUILTIN) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
271 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_set_flags() - " |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
272 |
+ "Rejecting builtin category."); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
273 |
+ else if (!(flags & COMPL_CAT_ACTIVE)) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
274 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_set_flags() - " |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
275 |
+ "Not existing category."); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
276 |
+ else |
52
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
277 |
+ Categories[compl].flags = (flags & ~COMPL_CAT_USERFLAGS) | |
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
278 |
+ (new_flags & COMPL_CAT_USERFLAGS); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
279 |
+ } else |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
280 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_set_flags() - " |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
281 |
+ "Not existing category."); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
282 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
283 |
#endif |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
284 |
|
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
285 |
@@ -136,12 +239,15 @@ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
286 |
guint new_completion(const char *prefix, GSList *compl_cat, const gchar *suffix) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
287 |
{ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
288 |
compl *c; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
289 |
+ guint ret_len = 0; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
290 |
GSList *sl_cat; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
291 |
gint (*cmp)(const char *s1, const char *s2, size_t n); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
292 |
size_t len = strlen(prefix); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
293 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
294 |
if (InputCompl) { // This should not happen, but hey... |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
295 |
- cancel_completion(); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
296 |
+ scr_log_print(LPRINT_DEBUG, "Warinng: new_completion() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
297 |
+ "Previous completion exists!"); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
298 |
+ done_completion(); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
299 |
} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
300 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
301 |
if (settings_opt_get_int("completion_ignore_case")) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
302 |
@@ -160,14 +266,15 @@ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
303 |
compval = g_strdup_printf("%s%s", word+len, suffix); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
304 |
else |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
305 |
compval = g_strdup(word+len); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
306 |
- c->list = g_slist_insert_sorted(c->list, compval, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
307 |
- (GCompareFunc)g_ascii_strcasecmp); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
308 |
+ // for a bit of efficiency, will reverse order afterwards |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
309 |
+ c->list = g_slist_prepend(c->list, compval); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
310 |
+ ret_len ++; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
311 |
} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
312 |
} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
313 |
} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
314 |
- c->next = c->list; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
315 |
+ c->next = c->list = g_slist_reverse (c->list); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
316 |
InputCompl = c; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
317 |
- return g_slist_length(c->list); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
318 |
+ return ret_len; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
319 |
} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
320 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
321 |
// done_completion(); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
322 |
@@ -222,35 +329,46 @@ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
323 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
324 |
/* Categories functions */ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
325 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
326 |
+static gint compl_sort_forward(gconstpointer a, gconstpointer b) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
327 |
+{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
328 |
+ return g_ascii_strcasecmp((const gchar *)a, (const gchar *)b); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
329 |
+} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
330 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
331 |
+static gint compl_sort_reverse(gconstpointer a, gconstpointer b) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
332 |
+{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
333 |
+ return -g_ascii_strcasecmp((const gchar *)a, (const gchar *)b); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
334 |
+} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
335 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
336 |
+static gint compl_sort_append(gconstpointer a, gconstpointer b) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
337 |
+{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
338 |
+ return 1; // XXX |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
339 |
+} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
340 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
341 |
+static gint compl_sort_prepend(gconstpointer a, gconstpointer b) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
342 |
+{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
343 |
+ return -1; // XXX |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
344 |
+} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
345 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
346 |
// compl_add_category_word(categ, command) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
347 |
// Adds a keyword as a possible completion in category categ. |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
348 |
void compl_add_category_word(guint categ, const gchar *word) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
349 |
{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
350 |
- guint64 catv; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
351 |
- GSList *sl_cat; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
352 |
- category *cat; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
353 |
char *nword; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
354 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
355 |
if (!categ) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
356 |
- scr_log_print(LPRINT_LOGNORM, "Error: compl_add_category_word() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
357 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_add_category_word() - " |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
358 |
"Invalid category."); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
359 |
return; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
360 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
361 |
- |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
362 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
363 |
categ--; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
364 |
- catv = 1UL << categ; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
365 |
- |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
366 |
- // Look for category |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
367 |
- for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
368 |
- if (catv == ((category*)sl_cat->data)->flag) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
369 |
- break; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
370 |
+ |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
371 |
+ if ((categ >= num_categories) || |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
372 |
+ !(Categories[categ].flags & COMPL_CAT_ACTIVE)) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
373 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_add_category_word() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
374 |
+ "Not existing category."); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
375 |
+ return; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
376 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
377 |
- if (!sl_cat) { // Category not found, let's create it |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
378 |
- cat = g_new0(category, 1); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
379 |
- cat->flag = catv; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
380 |
- Categories = g_slist_append(Categories, cat); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
381 |
- } else |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
382 |
- cat = (category*)sl_cat->data; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
383 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
384 |
// If word is not space-terminated, we add one trailing space |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
385 |
for (nword = (char*)word; *nword; nword++) |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
386 |
@@ -262,59 +380,64 @@ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
387 |
nword = g_strdup(word); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
388 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
389 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
390 |
- if (g_slist_find_custom(cat->words, nword, (GCompareFunc)g_strcmp0) != NULL) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
391 |
- return; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
392 |
+ if (g_slist_find_custom(Categories[categ].words, nword, |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
393 |
+ (GCompareFunc)g_strcmp0) == NULL) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
394 |
+ guint flags = Categories[categ].flags; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
395 |
+ GCompareFunc comparator = compl_sort_forward; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
396 |
+ if (flags & COMPL_CAT_NOSORT) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
397 |
+ if (flags & COMPL_CAT_REVERSE) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
398 |
+ comparator = compl_sort_prepend; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
399 |
+ else |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
400 |
+ comparator = compl_sort_append; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
401 |
+ } else if (flags & COMPL_CAT_REVERSE) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
402 |
+ comparator = compl_sort_reverse; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
403 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
404 |
- cat->words = g_slist_insert_sorted(cat->words, nword, |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
405 |
- (GCompareFunc)g_ascii_strcasecmp); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
406 |
+ Categories[categ].words = g_slist_insert_sorted |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
407 |
+ (Categories[categ].words, nword, comparator); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
408 |
+ } |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
409 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
410 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
411 |
// compl_del_category_word(categ, command) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
412 |
// Removes a keyword from category categ in completion list. |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
413 |
void compl_del_category_word(guint categ, const gchar *word) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
414 |
{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
415 |
- guint64 catv; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
416 |
- GSList *sl_cat, *sl_elt; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
417 |
- category *cat; |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
418 |
+ GSList *wel; |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
419 |
char *nword; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
420 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
421 |
if (!categ) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
422 |
- scr_log_print(LPRINT_LOGNORM, "Error: compl_del_category_word() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
423 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_del_category_word() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
424 |
"Invalid category."); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
425 |
return; |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
426 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
427 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
428 |
categ--; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
429 |
- catv = 1UL << categ; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
430 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
431 |
- // Look for category |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
432 |
- for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
433 |
- if (catv == ((category*)sl_cat->data)->flag) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
434 |
- break; |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
435 |
+ if ((categ >= num_categories) || |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
436 |
+ !(Categories[categ].flags & COMPL_CAT_ACTIVE)) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
437 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_del_category_word() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
438 |
+ "Not existing category."); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
439 |
+ return; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
440 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
441 |
- if (!sl_cat) return; // Category not found, finished! |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
442 |
- |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
443 |
- cat = (category*)sl_cat->data; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
444 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
445 |
// If word is not space-terminated, we add one trailing space |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
446 |
for (nword = (char*)word; *nword; nword++) |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
447 |
; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
448 |
if (nword > word) nword--; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
449 |
- if (*nword != ' ') { // Add a space |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
450 |
- nword = g_strdup_printf("%s ", word); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
451 |
- } else { // word is fine |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
452 |
- nword = g_strdup(word); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
453 |
+ if (*nword != ' ') // Add a space |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
454 |
+ word = nword = g_strdup_printf("%s ", word); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
455 |
+ else |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
456 |
+ nword = NULL; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
457 |
+ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
458 |
+ for (wel = Categories[categ].words; wel; wel = g_slist_next (wel)) { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
459 |
+ if (!strcasecmp((char*)wel->data, word)) { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
460 |
+ g_free(wel->data); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
461 |
+ Categories[categ].words = g_slist_delete_link |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
462 |
+ (Categories[categ].words, wel); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
463 |
+ break; // Only remove first occurence |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
464 |
+ } |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
465 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
466 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
467 |
- sl_elt = cat->words; |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
468 |
- while (sl_elt) { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
469 |
- if (!strcasecmp((char*)sl_elt->data, nword)) { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
470 |
- g_free(sl_elt->data); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
471 |
- cat->words = g_slist_delete_link(cat->words, sl_elt); |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
472 |
- break; // Only remove first occurence |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
473 |
- } |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
474 |
- sl_elt = g_slist_next(sl_elt); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
475 |
- } |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
476 |
+ g_free (nword); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
477 |
} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
478 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
479 |
// compl_get_category_list() |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
480 |
@@ -323,48 +446,28 @@ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
481 |
// whole list after use. |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
482 |
GSList *compl_get_category_list(guint categ, guint *dynlist) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
483 |
{ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
484 |
- guint64 cat_flags; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
485 |
- GSList *sl_cat; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
486 |
- |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
487 |
if (!categ) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
488 |
- scr_log_print(LPRINT_LOGNORM, "Error: compl_get_category_list() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
489 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_get_category_list() - " |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
490 |
"Invalid category."); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
491 |
return NULL; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
492 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
493 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
494 |
- *dynlist = FALSE; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
495 |
- cat_flags = 1UL << (categ - 1); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
496 |
+ categ --; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
497 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
498 |
- // Look for the category |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
499 |
- for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
500 |
- if (cat_flags == ((category*)sl_cat->data)->flag) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
501 |
- break; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
502 |
- } |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
503 |
- if (sl_cat) // Category was found, easy... |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
504 |
- return ((category*)sl_cat->data)->words; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
505 |
- |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
506 |
- // Handle dynamic SLists |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
507 |
- *dynlist = TRUE; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
508 |
- if (categ == COMPL_GROUPNAME) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
509 |
- return compl_list(ROSTER_TYPE_GROUP); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
510 |
- } |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
511 |
- if (categ == COMPL_JID) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
512 |
- return compl_list(ROSTER_TYPE_USER); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
513 |
- } |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
514 |
- if (categ == COMPL_RESOURCE) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
515 |
- return buddy_getresources_locale(NULL); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
516 |
- } |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
517 |
- if (categ == COMPL_EVENTSID) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
518 |
- GSList *compl = evs_geteventslist(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
519 |
- GSList *cel; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
520 |
- for (cel = compl; cel; cel = cel->next) |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
521 |
- cel->data = g_strdup(cel->data); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
522 |
- compl = g_slist_append(compl, g_strdup("list")); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
523 |
- return compl; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
524 |
+ if ((categ > num_categories) || |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
525 |
+ !(Categories[categ].flags & COMPL_CAT_ACTIVE)) { |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
526 |
+ scr_log_print(LPRINT_DEBUG, "Error: compl_get_category_list() - " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
527 |
+ "Not existing category."); |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
528 |
+ return NULL; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
529 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
530 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
531 |
- *dynlist = FALSE; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
532 |
- return NULL; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
533 |
+ if (Categories[categ].flags & COMPL_CAT_DYNAMIC) { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
534 |
+ *dynlist = TRUE; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
535 |
+ return (*Categories[categ].dynamic) (); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
536 |
+ } else { |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
537 |
+ *dynlist = FALSE; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
538 |
+ return Categories[categ].words; |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
539 |
+ } |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
540 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
541 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
542 |
/* vim: set expandtab cindent cinoptions=>2\:2(0 sw=2 ts=2: For Vim users... */ |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
543 |
diff -r f8958ab545ac mcabber/mcabber/compl.h |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
544 |
--- a/mcabber/mcabber/compl.h Mon Oct 15 19:53:02 2012 +0200 |
52
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
545 |
+++ b/mcabber/mcabber/compl.h Thu Oct 18 15:34:38 2012 +0300 |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
546 |
@@ -28,10 +28,17 @@ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
547 |
#define COMPL_OTRPOLICY 21 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
548 |
#define COMPL_MODULE 22 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
549 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
550 |
+void compl_init_system(void); /* private */ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
551 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
552 |
#ifdef MODULES_ENABLE |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
553 |
-void compl_init_system(void); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
554 |
+#define COMPL_FLAGS_SORT 0x00 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
555 |
+#define COMPL_FLAGS_REVERSE 0x10 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
556 |
+#define COMPL_FLAGS_APPEND 0x20 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
557 |
+#define COMPL_FLAGS_PREPEND 0x30 |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
558 |
+ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
559 |
guint compl_new_category(void); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
560 |
void compl_del_category(guint id); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
561 |
+void compl_set_flags(guint id, guint flags); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
562 |
#endif |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
563 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
564 |
void compl_add_category_word(guint categ, const gchar *command); |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
565 |
diff -r f8958ab545ac mcabber/mcabber/main.c |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
566 |
--- a/mcabber/mcabber/main.c Mon Oct 15 19:53:02 2012 +0200 |
52
887f44e99aa1
Bump API (v37/38), fix completion flags setting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
51
diff
changeset
|
567 |
+++ b/mcabber/mcabber/main.c Thu Oct 18 15:34:38 2012 +0300 |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
50
diff
changeset
|
568 |
@@ -364,13 +364,13 @@ |
50
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
569 |
} |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
570 |
|
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
571 |
/* Initialize command system, roster and default key bindings */ |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
572 |
+ compl_init_system(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
573 |
cmd_init(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
574 |
roster_init(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
575 |
settings_init(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
576 |
scr_init_bindings(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
577 |
caps_init(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
578 |
#ifdef MODULES_ENABLE |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
579 |
- compl_init_system(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
580 |
modules_init(); |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
581 |
#endif |
1c5d368913c9
Add completion-sorting.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
582 |
/* Initialize charset */ |