completion-sorting.diff
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--
Bump API (v37/38), fix completion flags setting
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 */