2012-10-21 20:02:20 +01:00
/*
2012-02-20 20:07:38 +00:00
* command . c
*
2015-02-10 23:16:09 +00:00
* Copyright ( C ) 2012 - 2015 James Booth < boothj5 @ gmail . com >
2012-10-21 20:02:20 +01:00
*
2012-02-20 20:07:38 +00:00
* This file is part of Profanity .
*
* Profanity is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* Profanity is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with Profanity . If not , see < http : //www.gnu.org/licenses/>.
*
2014-08-24 20:57:39 +01:00
* In addition , as a special exception , the copyright holders give permission to
* link the code of portions of this program with the OpenSSL library under
* certain conditions as described in each individual source file , and
* distribute linked combinations including the two .
*
* You must obey the GNU General Public License in all respects for all of the
* code used other than OpenSSL . If you modify file ( s ) with this exception , you
* may extend this exception to your version of the file ( s ) , but you are not
* obligated to do so . If you do not wish to do so , delete this exception
* statement from your version . If you delete this exception statement from all
* source files in the program , then also delete it here .
*
2012-02-20 20:07:38 +00:00
*/
2015-10-31 23:38:08 +00:00
# include "config.h"
2013-10-14 20:15:51 +02:00
# include <assert.h>
2013-02-02 20:55:58 +00:00
# include <errno.h>
# include <limits.h>
2012-02-19 20:57:46 +00:00
# include <stdlib.h>
2015-02-08 00:42:21 +00:00
# include <stdio.h>
2012-08-26 01:50:50 +01:00
# include <string.h>
2012-04-24 01:02:22 +01:00
# include <glib.h>
2012-10-31 21:30:58 +00:00
# include "chat_session.h"
2013-02-02 21:43:59 +00:00
# include "command/command.h"
2013-12-15 16:10:32 +00:00
# include "command/commands.h"
2012-08-26 01:50:50 +01:00
# include "common.h"
2013-02-02 21:59:29 +00:00
# include "config/accounts.h"
# include "config/preferences.h"
# include "config/theme.h"
2015-09-24 01:06:53 +01:00
# include "config/tlscerts.h"
2015-10-17 23:14:55 +01:00
# include "config/scripts.h"
2012-10-04 22:48:41 +01:00
# include "contact.h"
2013-12-14 15:34:17 +00:00
# include "roster_list.h"
2013-01-13 03:14:36 +00:00
# include "jid.h"
2014-10-18 23:16:19 +01:00
# include "xmpp/form.h"
2012-08-26 01:50:50 +01:00
# include "log.h"
2013-02-02 20:55:58 +00:00
# include "muc.h"
2014-05-19 20:41:19 +01:00
# ifdef HAVE_LIBOTR
2014-02-12 22:19:21 +00:00
# include "otr/otr.h"
2014-05-19 20:41:19 +01:00
# endif
2015-08-25 23:44:03 +01:00
# ifdef HAVE_LIBGPGME
# include "pgp/gpg.h"
# endif
2012-11-19 23:15:42 +00:00
# include "profanity.h"
2013-02-02 21:43:59 +00:00
# include "tools/autocomplete.h"
2013-07-11 22:57:35 +01:00
# include "tools/parser.h"
2013-02-02 21:43:59 +00:00
# include "tools/tinyurl.h"
2013-02-02 19:47:41 +00:00
# include "xmpp/xmpp.h"
2013-07-14 23:58:02 +03:00
# include "xmpp/bookmark.h"
2014-04-06 21:35:17 +01:00
# include "ui/ui.h"
2015-06-15 19:26:28 +01:00
# include "window_list.h"
2012-02-09 23:15:53 +00:00
2015-10-25 00:25:10 +01:00
static gboolean _cmd_execute ( ProfWin * window , const char * const command , const char * const inp ) ;
static char * _cmd_complete_parameters ( ProfWin * window , const char * const input ) ;
2015-11-08 22:31:53 +00:00
static char * _script_autocomplete_func ( const char * const prefix ) ;
2015-10-25 00:25:10 +01:00
static char * _sub_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _notify_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _theme_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _autoaway_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _autoconnect_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _account_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _who_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _roster_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _group_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _bookmark_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _otr_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _pgp_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _connect_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _statuses_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _alias_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _join_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _log_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _form_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _form_field_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _occupants_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _kick_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _ban_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _affiliation_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _role_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _resource_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _titlebar_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _inpblock_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _time_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _receipts_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _help_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _wins_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _tls_autocomplete ( ProfWin * window , const char * const input ) ;
static char * _script_autocomplete ( ProfWin * window , const char * const input ) ;
2015-10-29 21:21:41 +00:00
static char * _subject_autocomplete ( ProfWin * window , const char * const input ) ;
2015-12-29 23:32:32 +00:00
static char * _console_autocomplete ( ProfWin * window , const char * const input ) ;
2016-01-07 00:38:17 +00:00
static char * _win_autocomplete ( ProfWin * window , const char * const input ) ;
2012-08-11 00:18:03 +01:00
2013-12-15 16:10:32 +00:00
GHashTable * commands = NULL ;
2013-06-25 00:49:29 +01:00
2015-07-27 23:55:04 +01:00
# define CMD_TAG_CHAT "chat"
2015-07-27 01:06:10 +01:00
# define CMD_TAG_GROUPCHAT "groupchat"
2015-07-27 23:55:04 +01:00
# define CMD_TAG_ROSTER "roster"
# define CMD_TAG_PRESENCE "presence"
# define CMD_TAG_CONNECTION "connection"
# define CMD_TAG_DISCOVERY "discovery"
2015-07-27 01:06:10 +01:00
# define CMD_TAG_UI "ui"
# define CMD_NOTAGS { { NULL },
# define CMD_TAGS(...) { { __VA_ARGS__, NULL },
# define CMD_SYN(...) { __VA_ARGS__, NULL },
2015-07-26 19:39:12 +01:00
# define CMD_DESC(desc) desc,
2015-07-27 01:06:10 +01:00
# define CMD_NOARGS { { NULL, NULL } },
2015-07-26 19:39:12 +01:00
# define CMD_ARGS(...) { __VA_ARGS__, { NULL, NULL } },
2015-07-27 01:06:10 +01:00
# define CMD_NOEXAMPLES { NULL } }
2015-07-26 19:39:12 +01:00
# define CMD_EXAMPLES(...) { __VA_ARGS__, NULL } }
2015-07-24 00:33:38 +01:00
2012-08-22 23:57:34 +01:00
/*
2013-06-25 00:49:29 +01:00
* Command list
2012-08-22 23:57:34 +01:00
*/
2013-06-25 00:49:29 +01:00
static struct cmd_t command_defs [ ] =
2012-08-12 01:39:51 +01:00
{
2015-07-24 00:33:38 +01:00
{ " /help " ,
2015-07-27 23:55:04 +01:00
cmd_help , parse_args , 0 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_NOTAGS
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /help [<area>|<command>] " )
CMD_DESC (
2015-08-08 22:38:50 +01:00
" Help on using Profanity. Passing no arguments list help areas. "
" For command help, optional arguments are shown using square brackets e.g. [argument], "
" arguments representing variables rather than a literal name are surrounded by angle brackets "
" e.g. <argument>. "
" Arguments that may be one of a number of values are separated by a pipe "
" e.g. val1|val2|val3. " )
2015-07-26 19:39:12 +01:00
CMD_ARGS (
2015-07-25 20:57:21 +01:00
{ " <area> " , " Summary help for commands in a certain area of functionality. " } ,
2015-07-26 19:39:12 +01:00
{ " <command> " , " Full help for a specific command, for example '/help connect'. " } )
CMD_EXAMPLES (
2015-07-24 00:33:38 +01:00
" /help commands " ,
" /help presence " ,
2015-07-26 19:39:12 +01:00
" /help who " )
} ,
2015-07-24 00:33:38 +01:00
{ " /about " ,
cmd_about , parse_args , 0 , 0 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_NOTAGS
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /about " )
CMD_DESC (
" Show version and license information. " )
2015-07-26 20:43:59 +01:00
CMD_NOARGS
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2012-10-23 00:18:28 +01:00
2012-10-21 20:02:20 +01:00
{ " /connect " ,
2015-10-18 03:06:23 +01:00
cmd_connect , parse_args , 0 , 7 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CONNECTION )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-24 00:33:38 +01:00
" /connect [<account>] " ,
2015-10-18 03:06:23 +01:00
" /connect <account> [server <server>] [port <port>] [tls force|allow|disable] " )
2015-07-26 19:39:12 +01:00
CMD_DESC (
2015-07-24 00:33:38 +01:00
" Login to a chat service. "
" If no account is specified, the default is used if one is configured. "
2015-07-26 19:39:12 +01:00
" A local account is created with the JID as it's name if it doesn't already exist. " )
CMD_ARGS (
2015-07-25 20:57:21 +01:00
{ " <account> " , " The local account you wish to connect with, or a JID if connecting for the first time. " } ,
{ " server <server> " , " Supply a server if it is different to the domain part of your JID. " } ,
2015-10-18 03:06:23 +01:00
{ " port <port> " , " The port to use if different to the default (5222, or 5223 for SSL). " } ,
{ " tls force " , " Force TLS connection, and fail if one cannot be established, this is default behaviour. " } ,
{ " tls allow " , " Use TLS for the connection if it is available. " } ,
{ " tls disable " , " Disable TLS for the connection. " } )
2015-07-26 19:39:12 +01:00
CMD_EXAMPLES (
2015-07-24 00:33:38 +01:00
" /connect " ,
" /connect myuser@gmail.com " ,
" /connect myuser@mycompany.com server talk.google.com " ,
" /connect bob@someplace port 5678 " ,
2015-10-18 03:06:23 +01:00
" /connect me@localhost.test.org server 127.0.0.1 tls disable " ,
2015-07-26 19:39:12 +01:00
" /connect me@chatty server chatty.com port 5443 " )
2015-07-24 00:33:38 +01:00
} ,
2015-09-22 21:42:05 +01:00
{ " /tls " ,
2015-09-23 20:37:41 +01:00
cmd_tls , parse_args , 1 , 3 , NULL ,
2015-09-22 21:42:05 +01:00
CMD_TAGS (
2015-10-14 00:58:33 +01:00
CMD_TAG_CONNECTION ,
CMD_TAG_UI )
2015-09-22 21:42:05 +01:00
CMD_SYN (
" /tls allow " ,
2015-09-22 22:44:18 +01:00
" /tls always " ,
2015-09-23 20:37:41 +01:00
" /tls deny " ,
2015-11-22 19:53:41 +00:00
" /tls cert [<fingerprint>] " ,
2015-11-10 23:26:19 +00:00
" /tls trust " ,
2015-09-24 00:43:41 +01:00
" /tls trusted " ,
2015-09-24 01:06:53 +01:00
" /tls revoke <fingerprint> " ,
2015-09-23 20:37:41 +01:00
" /tls certpath " ,
" /tls certpath set <path> " ,
2015-10-14 00:46:16 +01:00
" /tls certpath clear " ,
" /tls show on|off " )
2015-09-22 21:42:05 +01:00
CMD_DESC (
" Handle TLS certificates. " )
CMD_ARGS (
2015-11-10 23:26:19 +00:00
{ " allow " , " Allow connection to continue with TLS certificate. " } ,
{ " always " , " Always allow connections with TLS certificate. " } ,
{ " deny " , " Abort connection. " } ,
2015-11-09 23:31:21 +00:00
{ " cert " , " Show the current TLS certificate. " } ,
2015-11-22 19:53:41 +00:00
{ " cert <fingerprint> " , " Show details of trusted certificate. " } ,
2015-12-06 00:58:51 -08:00
{ " trust " , " Add the current TLS certificate to manually trusted certificates. " } ,
2015-11-22 19:53:41 +00:00
{ " trusted " , " List summary of manually trusted certificates (with '/tls always' or '/tls trust'). " } ,
2015-09-24 01:23:48 +01:00
{ " revoke <fingerprint> " , " Remove a manually trusted certificate. " } ,
{ " certpath " , " Show the trusted certificate path. " } ,
{ " certpath set <path> " , " Specify filesystem path containing trusted certificates. " } ,
2015-10-14 00:46:16 +01:00
{ " certpath clear " , " Clear the trusted certificate path. " } ,
{ " show on|off " , " Show or hide the TLS indicator in the titlebar. " } )
2015-09-22 21:42:05 +01:00
CMD_NOEXAMPLES
} ,
2012-10-27 18:12:04 +01:00
{ " /disconnect " ,
2013-12-15 16:10:32 +00:00
cmd_disconnect , parse_args , 0 , 0 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CONNECTION )
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /disconnect " )
CMD_DESC (
" Disconnect from the current chat service. " )
2015-07-26 20:43:59 +01:00
CMD_NOARGS
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2012-10-27 18:12:04 +01:00
2012-10-21 20:02:20 +01:00
{ " /msg " ,
2013-12-15 16:10:32 +00:00
cmd_msg , parse_args_with_freetext , 1 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-24 00:44:56 +01:00
" /msg <contact> [<message>] " ,
2015-07-26 19:39:12 +01:00
" /msg <nick> [<message>] " )
CMD_DESC (
2015-07-24 00:44:56 +01:00
" Send a one to one chat message, or a private message to a chat room occupant. "
" If the message is omitted, a new chat window will be opened without sending a message. "
2015-07-26 19:39:12 +01:00
" Use quotes if the nickname includes spaces. " )
CMD_ARGS (
2015-07-24 21:20:55 +01:00
{ " <contact> " , " Open chat window with contact, by JID or nickname. " } ,
2015-07-24 00:44:56 +01:00
{ " <contact> [<message>] " , " Send message to contact, by JID or nickname. " } ,
2015-07-24 21:20:55 +01:00
{ " <nick> " , " Open private chat window with chat room occupant. " } ,
2015-07-26 19:39:12 +01:00
{ " <nick> [<message>] " , " Send a private message to a chat room occupant. " } )
CMD_EXAMPLES (
2015-07-24 00:44:56 +01:00
" /msg myfriend@server.com Hey, here's a message! " ,
" /msg otherfriend@server.com " ,
" /msg Bob Here is a private message " ,
2015-07-26 19:39:12 +01:00
" /msg \" My Friend \" Hi, how are you? " )
} ,
2015-07-24 00:44:56 +01:00
2013-05-19 02:07:01 +01:00
{ " /roster " ,
2013-12-15 16:10:32 +00:00
cmd_roster , parse_args_with_freetext , 0 , 3 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_ROSTER ,
2015-07-27 01:06:10 +01:00
CMD_TAG_UI )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-24 21:20:55 +01:00
" /roster " ,
" /roster online " ,
2016-01-02 01:37:03 +00:00
" /roster show [offline|resource|presence|status|empty|count|priority|rooms] " ,
" /roster hide [offline|resource|presence|status|empty|count|priority|rooms] " ,
2015-07-24 21:20:55 +01:00
" /roster by group|presence|none " ,
2015-11-19 01:02:13 +00:00
" /roster order name|presence " ,
2015-11-22 17:45:38 +00:00
" /roster header char <char>|none " ,
" /roster presence indent <indent> " ,
" /roster contact char <char>|none " ,
" /roster contact indent <indent> " ,
" /roster resource char <char>|none " ,
" /roster resource indent <indent> " ,
2015-11-22 16:37:05 +00:00
" /roster resource join on|off " ,
2015-07-24 21:20:55 +01:00
" /roster size <percent> " ,
2015-11-22 01:39:20 +00:00
" /roster wrap on|off " ,
2015-07-24 21:20:55 +01:00
" /roster add <jid> [<nick>] " ,
" /roster remove <jid> " ,
" /roster remove_all contacts " ,
" /roster nick <jid> <nick> " ,
2015-07-26 19:39:12 +01:00
" /roster clearnick <jid> " )
CMD_DESC (
" Manage your roster, and roster display settings. "
" Passing no arguments lists all contacts in your roster. " )
CMD_ARGS (
2015-11-21 21:03:53 +00:00
{ " online " , " Show all online contacts in your roster. " } ,
{ " show " , " Show the roster panel. " } ,
{ " show offline " , " Show offline contacts in the roster panel. " } ,
{ " show resource " , " Show contact's connected resources in the roster panel. " } ,
{ " show presence " , " Show contact's presence in the roster panel. " } ,
{ " show status " , " Show contact's status message in the roster panel. " } ,
{ " show empty " , " When grouping by presence, show empty presence groups. " } ,
{ " show count " , " Show number of contacts in group/presence. " } ,
{ " show priority " , " Show resource priority. " } ,
2016-01-02 01:37:03 +00:00
{ " show rooms " , " Show chat rooms in roster panel. " } ,
2015-11-21 21:03:53 +00:00
{ " hide " , " Hide the roster panel. " } ,
{ " hide offline " , " Hide offline contacts in the roster panel. " } ,
{ " hide resource " , " Hide contact's connected resources in the roster panel. " } ,
{ " hide presence " , " Hide contact's presence in the roster panel. " } ,
{ " hide status " , " Hide contact's status message in the roster panel. " } ,
{ " hide empty " , " When grouping by presence, hide empty presence groups. " } ,
{ " hide count " , " Hide number of contacts in group/presence. " } ,
{ " hide priority " , " Hide resource priority. " } ,
2016-01-02 01:37:03 +00:00
{ " hide rooms " , " Hide chat rooms in roster panel. " } ,
2015-11-21 21:03:53 +00:00
{ " by group " , " Group contacts in the roster panel by roster group. " } ,
{ " by presence " , " Group contacts in the roster panel by presence. " } ,
{ " by none " , " No grouping in the roster panel. " } ,
{ " order name " , " Order roster items by name only. " } ,
{ " order presence " , " Order roster items by presence, and then by name. " } ,
2015-12-06 00:58:51 -08:00
{ " header char <char> " , " Prefix roster headers with specified character. " } ,
2015-11-22 17:45:38 +00:00
{ " header char none " , " Remove roster header character prefix. " } ,
2015-12-06 00:58:51 -08:00
{ " contact char <char> " , " Prefix roster contacts with specified character. " } ,
2015-11-22 17:45:38 +00:00
{ " contact char none " , " Remove roster contact character prefix. " } ,
{ " contact indent <indent> " , " Indent contact line by <indent> spaces (0 to 10). " } ,
2015-12-06 00:58:51 -08:00
{ " resource char <char> " , " Prefix roster resources with specified character. " } ,
2015-11-22 17:45:38 +00:00
{ " resource char none " , " Remove roster resource character prefix. " } ,
{ " resource indent <indent> " , " Indent resource line by <indent> spaces (0 to 10). " } ,
2015-11-22 16:37:05 +00:00
{ " resource join on|off " , " Join resource with previous line when only one available resource. " } ,
2015-11-22 17:45:38 +00:00
{ " presence indent <indent> " , " Indent presence line by <indent> spaces (-1 to 10), a value of -1 will show presence on the previous line. " } ,
2015-11-21 21:03:53 +00:00
{ " size <precent> " , " Percentage of the screen taken up by the roster (1-99). " } ,
2015-12-06 00:58:51 -08:00
{ " wrap on|off " , " Enable or disable line wrapping in roster panel. " } ,
2015-11-21 21:03:53 +00:00
{ " add <jid> [<nick>] " , " Add a new item to the roster. " } ,
{ " remove <jid> " , " Removes an item from the roster. " } ,
{ " remove_all contacts " , " Remove all items from roster. " } ,
{ " nick <jid> <nick> " , " Change a contacts nickname. " } ,
{ " clearnick <jid> " , " Removes the current nickname. " } )
2015-07-26 19:39:12 +01:00
CMD_EXAMPLES (
2015-07-24 21:20:55 +01:00
" /roster " ,
" /roster add someone@contacts.org " ,
" /roster add someone@contacts.org Buddy " ,
" /roster remove someone@contacts.org " ,
" /roster nick myfriend@chat.org My Friend " ,
" /roster clearnick kai@server.com " ,
2015-07-26 19:39:12 +01:00
" /roster size 15 " )
} ,
2015-07-24 21:20:55 +01:00
2013-06-02 17:25:52 +01:00
{ " /group " ,
2013-12-15 16:10:32 +00:00
cmd_group , parse_args_with_freetext , 0 , 3 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_ROSTER ,
CMD_TAG_UI )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /group " ,
" /group show <group> " ,
2015-07-27 01:06:10 +01:00
" /group add <group> <contat> "
2015-07-26 19:39:12 +01:00
" /group remove <group> <contact> " )
CMD_DESC (
" View, add to, and remove from roster groups. "
" Passing no argument will list all roster groups. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " show <group> " , " List all roster items a group. " } ,
{ " add <group> <contact> " , " Add a contact to a group. " } ,
2015-07-26 19:39:12 +01:00
{ " remove <group> <contact> " , " Remove a contact from a group. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /group " ,
" /group show friends " ,
" /group add friends newfriend@server.org " ,
" /group add family Brother " ,
2015-07-26 19:39:12 +01:00
" /group remove colleagues boss@work.com " )
} ,
2013-06-02 17:25:52 +01:00
2012-11-14 01:39:26 +00:00
{ " /info " ,
2013-12-15 16:10:32 +00:00
cmd_info , parse_args , 0 , 1 , NULL ,
2015-07-27 23:55:04 +01:00
CMD_TAGS (
CMD_TAG_ROSTER ,
CMD_TAG_CHAT ,
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /info " ,
2015-07-26 19:39:12 +01:00
" /info <contact>|<nick> " )
CMD_DESC (
" Show information about a contact, room, or room member. "
" Passing no argument in a chat window will use the current recipient. "
" Passing no argument in a chat room will display information about the room. " )
CMD_ARGS (
2015-07-25 20:57:21 +01:00
{ " <contact> " , " The contact you wish to view information about. " } ,
2015-07-26 19:39:12 +01:00
{ " <nick> " , " When in a chat room, the occupant you wish to view information about. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /info mybuddy@chat.server.org " ,
2015-07-26 19:39:12 +01:00
" /info kai " )
} ,
2012-11-13 22:08:46 +00:00
2013-02-17 01:04:10 +00:00
{ " /caps " ,
2013-12-15 16:10:32 +00:00
cmd_caps , parse_args , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_DISCOVERY ,
CMD_TAG_CHAT ,
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /caps " ,
2015-07-26 19:39:12 +01:00
" /caps <fulljid>|<nick> " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Find out a contacts, or room members client software capabilities. "
2015-07-26 19:39:12 +01:00
" If in private chat initiated from a chat room, no parameter is required. " )
CMD_ARGS (
2015-07-25 20:57:21 +01:00
{ " <fulljid> " , " If in the console or a chat window, the full JID for which you wish to see capabilities. " } ,
2015-07-26 19:39:12 +01:00
{ " <nick> " , " If in a chat room, nickname for which you wish to see capabilities. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /caps mybuddy@chat.server.org/laptop " ,
" /caps mybuddy@chat.server.org/phone " ,
2015-07-26 19:39:12 +01:00
" /caps bruce " )
} ,
2013-02-17 01:04:10 +00:00
2013-02-17 02:10:56 +00:00
{ " /software " ,
2013-12-15 16:10:32 +00:00
cmd_software , parse_args , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_DISCOVERY ,
CMD_TAG_CHAT ,
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /software " ,
2015-07-26 19:39:12 +01:00
" /software <fulljid>|<nick> " )
CMD_DESC (
" Find out a contact, or room members software version information. "
" If in private chat initiated from a chat room, no parameter is required. "
" If the contact's software does not support software version requests, nothing will be displayed. " )
CMD_ARGS (
2015-07-25 20:57:21 +01:00
{ " <fulljid> " , " If in the console or a chat window, the full JID for which you wish to see software information. " } ,
2015-07-26 19:39:12 +01:00
{ " <nick> " , " If in a chat room, nickname for which you wish to see software information. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /software mybuddy@chat.server.org/laptop " ,
" /software mybuddy@chat.server.org/phone " ,
2015-07-26 19:39:12 +01:00
" /software bruce " )
} ,
2013-02-17 02:10:56 +00:00
2013-01-21 23:24:59 +00:00
{ " /status " ,
2013-12-15 16:10:32 +00:00
cmd_status , parse_args , 0 , 1 , NULL ,
2015-07-27 23:55:04 +01:00
CMD_TAGS (
CMD_TAG_CHAT ,
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /status " ,
2015-07-26 19:39:12 +01:00
" /status <contact>|<nick> " )
CMD_DESC (
" Find out a contact, or room members presence information. "
" If in a chat window the parameter is not required, the current recipient will be used. " )
CMD_ARGS (
2015-07-25 20:57:21 +01:00
{ " <contact> " , " The contact who's presence you which to see. " } ,
2015-07-26 19:39:12 +01:00
{ " <nick> " , " If in a chat room, the occupant who's presence you wish to see. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /status buddy@server.com " ,
2015-07-26 19:39:12 +01:00
" /status jon " )
} ,
2013-01-21 23:24:59 +00:00
2014-12-02 20:50:21 +00:00
{ " /resource " ,
2015-01-10 19:10:10 +00:00
cmd_resource , parse_args , 1 , 2 , & cons_resource_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT ,
2015-07-27 01:06:10 +01:00
CMD_TAG_UI )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /resource set <resource> " ,
" /resource off " ,
" /resource title on|off " ,
2015-07-26 19:39:12 +01:00
" /resource message on|off " )
CMD_DESC (
" Override chat session resource, and manage resource display settings. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " set <resource> " , " Set the resource to which messages will be sent. " } ,
{ " off " , " Let the server choose which resource to route messages to. " } ,
{ " title on|off " , " Show or hide the current resource in the titlebar. " } ,
2015-07-26 19:39:12 +01:00
{ " message on|off " , " Show or hide the resource when showing an incoming message. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2014-12-02 20:50:21 +00:00
2012-11-04 01:27:01 +00:00
{ " /join " ,
2015-04-11 23:37:52 +01:00
cmd_join , parse_args , 0 , 5 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /join " ,
2015-07-26 19:39:12 +01:00
" /join <room> [nick <nick>] [password <password>] " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Join a chat room at the conference server. "
" If no room is supplied, a generated name will be used with the format private-chat-[UUID]. "
" If the domain part is not included in the room name, the account preference 'muc.service' will be used. "
" If no nickname is specified the account preference 'muc.nick' will be used which by default is the localpart of your JID. "
2015-07-26 19:39:12 +01:00
" If the room doesn't exist, and the server allows it, a new one will be created. " )
CMD_ARGS (
{ " <room> " , " The chat room to join. " } ,
2015-07-25 00:45:20 +01:00
{ " nick <nick> " , " Nickname to use in the room. " } ,
2015-07-26 19:39:12 +01:00
{ " password <password> " , " Password if the room requires one. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /join " ,
" /join jdev@conference.jabber.org " ,
" /join jdev@conference.jabber.org nick mynick " ,
" /join private@conference.jabber.org nick mynick password mypassword " ,
2015-07-26 19:39:12 +01:00
" /join jdev " )
} ,
2012-11-04 01:27:01 +00:00
2013-05-30 22:48:56 +01:00
{ " /leave " ,
2013-12-15 16:10:32 +00:00
cmd_leave , parse_args , 0 , 0 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /leave " )
CMD_DESC (
" Leave the current chat room. " )
2015-07-26 20:43:59 +01:00
CMD_NOARGS
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2013-05-30 22:48:56 +01:00
2013-04-20 20:18:13 +01:00
{ " /invite " ,
2013-12-15 16:10:32 +00:00
cmd_invite , parse_args_with_freetext , 1 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /invite <contact> [<message>] " )
CMD_DESC (
" Send an invite to a contact for the current chat room. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " <contact> " , " The contact you wish to invite. " } ,
2015-07-26 19:39:12 +01:00
{ " <message> " , " An optional message to send with the invite. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2013-04-20 20:18:13 +01:00
2013-04-24 23:50:47 +01:00
{ " /invites " ,
2013-12-15 16:10:32 +00:00
cmd_invites , parse_args_with_freetext , 0 , 0 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /invites " )
CMD_DESC (
" Show all rooms that you have been invited to, and not accepted or declined. " )
2015-07-26 20:43:59 +01:00
CMD_NOARGS
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2013-04-24 23:50:47 +01:00
{ " /decline " ,
2013-12-15 16:10:32 +00:00
cmd_decline , parse_args_with_freetext , 1 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /decline <room> " )
CMD_DESC (
" Decline a chat room invitation. " )
CMD_ARGS (
{ " <room> " , " The room for the invite you wish to decline. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2013-04-24 23:50:47 +01:00
2014-09-03 00:36:42 +01:00
{ " /room " ,
2014-10-12 01:32:15 +01:00
cmd_room , parse_args , 1 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /room accept|destroy|config " )
CMD_DESC (
" Chat room configuration. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " accept " , " Accept default room configuration. " } ,
{ " destroy " , " Reject default room configuration, and destroy the room. " } ,
2015-07-26 19:39:12 +01:00
{ " config " , " Edit room configuration. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2014-10-09 13:16:36 +01:00
2014-10-10 13:35:50 +01:00
{ " /kick " ,
cmd_kick , parse_args_with_freetext , 1 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /kick <nick> [<reason>] " )
CMD_DESC (
" Kick occupant from chat room. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " <nick> " , " Nickname of the occupant to kick from the room. " } ,
2015-07-26 19:39:12 +01:00
{ " <reason> " , " Optional reason for kicking the occupant. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2014-10-10 13:35:50 +01:00
2014-10-11 22:43:54 +01:00
{ " /ban " ,
2014-10-12 01:32:15 +01:00
cmd_ban , parse_args_with_freetext , 1 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /ban <jid> [<reason>] " )
CMD_DESC (
" Ban user from chat room. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " <jid> " , " Bare JID of the user to ban from the room. " } ,
2015-07-26 19:39:12 +01:00
{ " <reason> " , " Optional reason for banning the user. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2014-10-11 22:43:54 +01:00
2014-10-11 23:13:48 +01:00
{ " /subject " ,
cmd_subject , parse_args_with_freetext , 0 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /subject set <subject> " ,
2015-10-29 21:21:41 +00:00
" /subject edit <subject> " ,
2015-10-29 21:02:46 +00:00
" /subject prepend <text> " ,
2015-10-29 20:55:37 +00:00
" /subject append <text> " ,
2015-07-26 19:39:12 +01:00
" /subject clear " )
CMD_DESC (
2015-10-29 21:02:46 +00:00
" Set, modify, or clear room subject. " )
2015-07-26 19:39:12 +01:00
CMD_ARGS (
2015-10-29 21:02:46 +00:00
{ " set <subject> " , " Set the room subject. " } ,
2015-10-29 21:21:41 +00:00
{ " edit <subject> " , " Edit the current room subject, tab autocompletion will display the subject to edit. " } ,
2015-10-29 21:02:46 +00:00
{ " prepend <text> " , " Prepend text to the current room subject, use double quotes if a trailing space is needed. " } ,
2015-12-06 00:58:51 -08:00
{ " append <text> " , " Append text to the current room subject, use double quotes if a preceding space is needed. " } ,
2015-10-29 21:02:46 +00:00
{ " clear " , " Clear the room subject. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2014-10-11 23:13:48 +01:00
2014-10-12 00:43:58 +01:00
{ " /affiliation " ,
2014-10-18 01:37:52 +01:00
cmd_affiliation , parse_args_with_freetext , 1 , 4 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /affiliation set <affiliation> <jid> [<reason>] " ,
2015-07-26 19:39:12 +01:00
" /list [<affiliation>] " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Manage room affiliations. "
2015-07-26 19:39:12 +01:00
" Affiliation may be one of owner, admin, member, outcast or none. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " set <affiliation> <jid> [<reason>] " , " Set the affiliation of user with jid, with an optional reason. " } ,
2015-07-26 19:39:12 +01:00
{ " list [<affiliation>] " , " List all users with the specified affiliation, or all if none specified. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2014-10-12 00:43:58 +01:00
{ " /role " ,
2014-10-18 01:37:52 +01:00
cmd_role , parse_args_with_freetext , 1 , 4 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /role set <role> <nick> [<reason>] " ,
2015-07-26 19:39:12 +01:00
" /list [<role>] " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Manage room roles. "
2015-07-26 19:39:12 +01:00
" Role may be one of moderator, participant, visitor or none. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " set <role> <nick> [<reason>] " , " Set the role of occupant with nick, with an optional reason. " } ,
2015-07-26 19:39:12 +01:00
{ " list [<role>] " , " List all occupants with the specified role, or all if none specified. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2014-10-12 00:43:58 +01:00
2014-10-09 13:16:36 +01:00
{ " /occupants " ,
2015-04-12 02:14:37 +01:00
cmd_occupants , parse_args , 1 , 3 , cons_occupants_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_GROUPCHAT ,
2015-07-27 01:06:10 +01:00
CMD_TAG_UI )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /occupants show|hide [jid] " ,
" /occupants default show|hide [jid] " ,
2015-07-26 19:39:12 +01:00
" /occupants size [<percent>] " )
CMD_DESC (
" Show or hide room occupants, and occupants panel display settings. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " show " , " Show the occupants panel in current room. " } ,
{ " hide " , " Hide the occupants panel in current room. " } ,
{ " show jid " , " Show jid in the occupants panel in current room. " } ,
{ " hide jid " , " Hide jid in the occupants panel in current room. " } ,
{ " default show|hide " , " Whether occupants are shown by default in new rooms. " } ,
{ " default show|hide jid " , " Whether occupants jids are shown by default in new rooms. " } ,
2015-07-26 19:39:12 +01:00
{ " size <percent> " , " Percentage of the screen taken by the occupants list in rooms (1-99). " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2014-09-15 21:33:25 +01:00
{ " /form " ,
2014-10-19 01:23:06 +01:00
cmd_form , parse_args , 1 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /form show " ,
" /form submit " ,
" /form cancel " ,
2015-07-26 19:39:12 +01:00
" /form help [<tag>] " )
CMD_DESC (
" Form configuration. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " show " , " Show the current form. " } ,
{ " submit " , " Submit the current form. " } ,
{ " cancel " , " Cancel changes to the current form. " } ,
2015-07-26 19:39:12 +01:00
{ " help [<tag>] " , " Display help for form, or a specific field. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
2015-07-26 19:39:12 +01:00
} ,
2014-09-03 00:36:42 +01:00
2015-02-16 22:52:18 +00:00
{ " /rooms " ,
2013-12-15 16:10:32 +00:00
cmd_rooms , parse_args , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 19:39:12 +01:00
CMD_SYN (
" /rooms [<service>] " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" List the chat rooms available at the specified conference service. "
2015-07-26 19:39:12 +01:00
" If no argument is supplied, the account preference 'muc.service' is used, 'conference.<domain-part>' by default. " )
CMD_ARGS (
{ " <service> " , " The conference service to query. " } )
CMD_EXAMPLES (
" /rooms conference.jabber.org " )
} ,
2014-03-29 22:58:48 +00:00
2013-07-14 23:58:02 +03:00
{ " /bookmark " ,
2014-08-19 22:51:00 +01:00
cmd_bookmark , parse_args , 0 , 8 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /bookmark " ,
" /bookmark list " ,
" /bookmark add <room> [nick <nick>] [password <password>] [autojoin on|off] " ,
" /bookmark update <room> [nick <nick>] [password <password>] [autojoin on|off] " ,
" /bookmark remove <room> " ,
2015-07-26 20:43:59 +01:00
" /bookmark join <room> " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Manage bookmarks and join bookmarked rooms. "
2015-07-26 20:43:59 +01:00
" In a chat room, no arguments will bookmark the current room, setting autojoin to \" on \" . " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " list " , " List all bookmarks. " } ,
{ " add <room> " , " Add a bookmark. " } ,
{ " remove <room> " , " Remove a bookmark. " } ,
{ " update <room> " , " Update the properties associated with a bookmark. " } ,
{ " nick <nick> " , " Nickname used in the chat room. " } ,
{ " password <password> " , " Password if required, may be stored in plaintext on your server. " } ,
{ " autojoin on|off " , " Whether to join the room automatically on login. " } ,
2015-07-26 20:43:59 +01:00
{ " join <room> " , " Join room using the properties associated with the bookmark. " } )
CMD_NOEXAMPLES
} ,
2014-03-29 22:58:48 +00:00
2013-03-14 20:50:09 +00:00
{ " /disco " ,
2013-12-15 16:10:32 +00:00
cmd_disco , parse_args , 1 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_DISCOVERY )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /disco info [<jid>] " ,
2015-07-26 20:43:59 +01:00
" /disco items [<jid>] " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Find out information about an entities supported services. "
2015-07-26 20:43:59 +01:00
" Calling with no arguments will query the server you are currently connected to. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " info [<jid>] " , " List protocols and features supported by an entity. " } ,
2015-07-26 20:43:59 +01:00
{ " items [<jid>] " , " List items associated with an entity. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /disco info " ,
" /disco items myserver.org " ,
" /disco items conference.jabber.org " ,
2015-07-26 20:43:59 +01:00
" /disco info myfriend@server.com/laptop " )
} ,
2013-03-14 20:50:09 +00:00
2015-09-29 00:01:38 +01:00
{ " /lastactivity " ,
cmd_lastactivity , parse_args , 0 , 1 , NULL ,
CMD_TAGS (
CMD_TAG_PRESENCE )
CMD_SYN (
2015-10-14 22:09:18 +01:00
" /lastactivity on|off " ,
2015-09-29 00:01:38 +01:00
" /lastactivity [<jid>] " )
CMD_DESC (
2015-10-14 22:09:18 +01:00
" Enable/disable sending last activity, and send last activity requests. " )
2015-09-29 00:01:38 +01:00
CMD_ARGS (
2015-10-14 22:09:18 +01:00
{ " on|off " , " Enable or disable sending of last activity. " } ,
{ " <jid> " , " The JID of the entity to query, omitting the JID will query your server. " } )
2015-09-29 00:01:38 +01:00
CMD_EXAMPLES (
" /lastactivity " ,
2015-10-14 22:09:18 +01:00
" /lastactivity off " ,
2015-09-29 00:01:38 +01:00
" /lastactivity alice@securechat.org " ,
" /lastactivity alice@securechat.org/laptop " ,
" /lastactivity someserver.com " )
} ,
2012-11-18 18:36:17 +00:00
{ " /nick " ,
2013-12-15 16:10:32 +00:00
cmd_nick , parse_args_with_freetext , 1 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_GROUPCHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /nick <nickname> " )
CMD_DESC (
" Change your nickname in the current chat room. " )
CMD_ARGS (
{ " <nickname> " , " Your new nickname. " } )
CMD_NOEXAMPLES
} ,
2012-11-18 18:36:17 +00:00
2013-08-29 21:41:10 +01:00
{ " /win " ,
2013-12-15 16:10:32 +00:00
cmd_win , parse_args , 1 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2016-01-07 00:38:17 +00:00
" /win console " ,
" /win <num> " ,
" /win <barejid> " ,
" /win <nick> " ,
" /win <roomjid> " ,
" /win <roomoccupantjid> " ,
" /win xmlconsole " )
2015-07-26 20:43:59 +01:00
CMD_DESC (
" Move to the specified window. " )
CMD_ARGS (
2016-01-07 00:38:17 +00:00
{ " console " , " Go to the Console window. " } ,
{ " <num> " , " Go to specified window number. " } ,
{ " <barejid> " , " Go to chat window with contact by JID if open. " } ,
{ " <nick> " , " Go to chat window with contact by nickname if open. " } ,
{ " <roomjid> " , " Go to chat room window with roomjid if open. " } ,
{ " <roomoccupantjid> " , " Go to private chat roomjidoccupant if open. " } ,
{ " xmlconsole " , " Go to the XML Console window if open. " } )
CMD_EXAMPLES (
" /win console " ,
" /win 4 " ,
" /win friend@chat.org " ,
" /win Eddie " ,
" /win bigroom@conference.chat.org " ,
" /win bigroom@conference.chat.org/bruce " )
2015-07-26 20:43:59 +01:00
} ,
2013-08-29 21:41:10 +01:00
2012-11-14 00:39:34 +00:00
{ " /wins " ,
2014-04-24 21:50:59 +01:00
cmd_wins , parse_args , 0 , 3 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-11-30 00:17:44 +00:00
" /wins " ,
" /wins unread " ,
2015-07-25 00:45:20 +01:00
" /wins tidy " ,
2015-09-19 23:31:04 +01:00
" /wins autotidy on|off " ,
2015-07-25 00:45:20 +01:00
" /wins prune " ,
2015-07-26 20:43:59 +01:00
" /wins swap <source> <target> " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Manage windows. "
2015-07-26 20:43:59 +01:00
" Passing no argument will list all currently active windows and information about their usage. " )
CMD_ARGS (
2015-11-30 00:17:44 +00:00
{ " unread " , " List windows with unread messages. " } ,
2015-09-19 23:31:04 +01:00
{ " tidy " , " Move windows so there are no gaps. " } ,
{ " autotidy on|off " , " Automatically remove gaps when closing windows. " } ,
{ " prune " , " Close all windows with no unread messages, and then tidy so there are no gaps. " } ,
2015-07-26 20:43:59 +01:00
{ " swap <source> <target> " , " Swap windows, target may be an empty position. " } )
CMD_NOEXAMPLES
} ,
2012-11-14 00:39:34 +00:00
2012-10-28 18:51:13 +00:00
{ " /sub " ,
2013-12-15 16:10:32 +00:00
cmd_sub , parse_args , 1 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_ROSTER )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /sub request [<jid>] " ,
" /sub allow [<jid>] " ,
" /sub deny [<jid>] " ,
" /sub show [<jid>] " ,
" /sub sent " ,
2015-07-26 20:43:59 +01:00
" /sub received " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Manage subscriptions to contact presence. "
2015-07-26 20:43:59 +01:00
" If jid is omitted, the contact of the current window is used. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " request [<jid>] " , " Send a subscription request to the user. " } ,
{ " allow [<jid>] " , " Approve a contact's subscription request. " } ,
{ " deny [<jid>] " , " Remove subscription for a contact, or deny a request. " } ,
{ " show [<jid>] " , " Show subscription status for a contact. " } ,
{ " sent " , " Show all sent subscription requests pending a response. " } ,
2015-07-26 20:43:59 +01:00
{ " received " , " Show all received subscription requests awaiting your response. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /sub request myfriend@jabber.org " ,
" /sub allow myfriend@jabber.org " ,
" /sub request " ,
2015-07-26 20:43:59 +01:00
" /sub sent " )
} ,
2012-10-28 18:51:13 +00:00
2012-10-21 20:02:20 +01:00
{ " /tiny " ,
2013-12-15 16:10:32 +00:00
cmd_tiny , parse_args , 1 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT ,
CMD_TAG_GROUPCHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /tiny <url> " )
CMD_DESC (
" Send url as tinyurl in current chat. " )
CMD_ARGS (
{ " <url> " , " The url to make tiny. " } )
CMD_EXAMPLES (
" Example: /tiny http://www.profanity.im " )
} ,
2012-08-12 01:39:51 +01:00
2012-10-21 20:02:20 +01:00
{ " /who " ,
2013-12-15 16:10:32 +00:00
cmd_who , parse_args , 0 , 2 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT ,
CMD_TAG_GROUPCHAT ,
CMD_TAG_ROSTER )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /who " ,
" /who online|offline|away|dnd|xa|chat|available|unavailable|any [<group>] " ,
" /who moderator|participant|visitor " ,
2015-07-26 20:43:59 +01:00
" /who owner|admin|member " )
CMD_DESC (
" Show contacts or room occupants with chosen status, role or affiliation " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " offline|away|dnd|xa|chat " , " Show contacts or room occupants with specified presence. " } ,
{ " online " , " Contacts that are online, chat, away, xa, dnd. " } ,
{ " available " , " Contacts that are available for chat - online, chat. " } ,
{ " unavailable " , " Contacts that are not available for chat - offline, away, xa, dnd. " } ,
{ " any " , " Contacts with any status (same as calling with no argument). " } ,
{ " <group> " , " Filter the results by the specified roster group, not applicable in chat rooms. " } ,
{ " moderator|participant|visitor " , " Room occupants with the specified role. " } ,
2015-07-26 20:43:59 +01:00
{ " owner|admin|member " , " Room occupants with the specified affiliation. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /who " ,
" /who xa " ,
" /who online friends " ,
" /who any family " ,
2015-07-25 20:57:21 +01:00
" /who participant " ,
2015-07-26 20:43:59 +01:00
" /who admin " )
} ,
2012-08-12 01:39:51 +01:00
2012-10-21 20:02:20 +01:00
{ " /close " ,
2013-12-15 16:10:32 +00:00
cmd_close , parse_args , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /close [<num>] " ,
2015-07-26 20:43:59 +01:00
" /close all|read " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Close windows. "
2015-07-26 20:43:59 +01:00
" Passing no argument closes the current window. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " <num> " , " Close the specified window. " } ,
{ " all " , " Close all windows. " } ,
2015-07-26 20:43:59 +01:00
{ " read " , " Close all windows that have no unread messages. " } )
CMD_NOEXAMPLES
} ,
2012-08-14 22:06:27 +01:00
2013-03-02 21:55:55 +00:00
{ " /clear " ,
2013-12-15 16:10:32 +00:00
cmd_clear , parse_args , 0 , 0 , NULL ,
2015-07-27 23:55:04 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /clear " )
CMD_DESC (
" Clear the current window. " )
CMD_NOARGS
CMD_NOEXAMPLES
} ,
2013-03-02 21:55:55 +00:00
2012-10-21 20:02:20 +01:00
{ " /quit " ,
2013-12-15 16:10:32 +00:00
cmd_quit , parse_args , 0 , 0 , NULL ,
2015-07-27 23:55:04 +01:00
CMD_NOTAGS
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /quit " )
CMD_DESC (
" Logout of any current session, and quit Profanity. " )
CMD_NOARGS
CMD_NOEXAMPLES
} ,
2012-08-11 00:18:03 +01:00
2014-10-18 20:22:34 +01:00
{ " /privileges " ,
cmd_privileges , parse_args , 1 , 1 , & cons_privileges_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_GROUPCHAT ,
2015-07-27 01:06:10 +01:00
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /privileges on|off " )
CMD_DESC (
" Group occupants panel by role, and show role information in chat rooms. " )
CMD_ARGS (
{ " on|off " , " Enable or disable privilege information. " } )
CMD_NOEXAMPLES
} ,
2014-10-18 20:22:34 +01:00
2015-12-19 23:32:58 +00:00
{ " /charset " ,
cmd_charset , parse_args , 0 , 0 , NULL ,
CMD_TAGS (
CMD_TAG_UI )
CMD_SYN (
2015-12-20 03:15:00 +00:00
" /charset " )
2015-12-19 23:32:58 +00:00
CMD_DESC (
" Display information about the current character set supported by the terminal. " )
CMD_NOARGS
CMD_NOEXAMPLES
} ,
2012-08-12 01:39:51 +01:00
{ " /beep " ,
2013-12-22 22:14:15 +00:00
cmd_beep , parse_args , 1 , 1 , & cons_beep_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /beep on|off " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Switch the terminal bell on or off. "
" The bell will sound when incoming messages are received. "
2015-07-26 20:43:59 +01:00
" If the terminal does not support sounds, it may attempt to flash the screen instead. " )
CMD_ARGS (
{ " on|off " , " Enable or disable terminal bell. " } )
CMD_NOEXAMPLES
} ,
2012-08-14 23:22:12 +01:00
2015-12-29 23:32:32 +00:00
{ " /console " ,
cmd_console , parse_args , 2 , 2 , & cons_console_setting ,
CMD_TAGS (
CMD_TAG_UI ,
CMD_TAG_GROUPCHAT )
CMD_SYN (
" /console muc all|first|none " )
CMD_DESC (
" Configure what is displayed in the console window when new chat room messages are received. "
" The default is set to 'all'. " )
CMD_ARGS (
{ " muc all " , " Indicate all new chat room messages in the console. " } ,
{ " muc first " , " Indicate only the first new message in each room in the console. " } ,
{ " muc none " , " Do not show any new messages in the console window. " } )
CMD_NOEXAMPLES
} ,
2015-06-21 21:07:57 +01:00
{ " /encwarn " ,
cmd_encwarn , parse_args , 1 , 1 , & cons_encwarn_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT ,
2015-07-27 01:06:10 +01:00
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /encwarn on|off " )
CMD_DESC (
" Titlebar encryption warning. " )
CMD_ARGS (
2015-12-06 00:58:51 -08:00
{ " on|off " , " Enable or disable the unencrypted warning message in the titlebar. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
} ,
2015-06-21 21:07:57 +01:00
2014-11-07 22:38:34 +00:00
{ " /presence " ,
cmd_presence , parse_args , 1 , 1 , & cons_presence_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_UI ,
CMD_TAG_CHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /presence on|off " )
CMD_DESC (
" Show the contacts presence in the titlebar. " )
CMD_ARGS (
{ " on|off " , " Switch display of the contacts presence in the titlebar on or off. " } )
CMD_NOEXAMPLES
} ,
2014-11-07 22:38:34 +00:00
2014-11-09 23:29:25 +00:00
{ " /wrap " ,
cmd_wrap , parse_args , 1 , 1 , & cons_wrap_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /wrap on|off " )
CMD_DESC (
" Word wrapping. " )
CMD_ARGS (
{ " on|off " , " Enable or disable word wrapping in the main window. " } )
CMD_NOEXAMPLES
} ,
2014-11-09 23:29:25 +00:00
2014-11-16 00:40:54 +00:00
{ " /time " ,
2015-05-29 19:53:37 -05:00
cmd_time , parse_args , 1 , 3 , & cons_time_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-09-30 22:34:27 +01:00
" /time console|chat|muc|mucconfig|private|xml set <format> " ,
" /time console|chat|muc|mucconfig|private|xml off " ,
2015-07-25 00:45:20 +01:00
" /time statusbar set <format> " ,
2015-09-29 23:30:23 +01:00
" /time statusbar off " ,
" /time lastactivity set <format> " )
2015-07-26 20:43:59 +01:00
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Configure time display preferences. "
" Time formats are strings supported by g_date_time_format. "
" See https://developer.gnome.org/glib/stable/glib-GDateTime.html#g-date-time-format for more details. "
" Setting the format to an unsupported string, will display the string. "
2015-07-26 20:43:59 +01:00
" If the format contains spaces, it must be surrounded with double quotes. " )
CMD_ARGS (
2015-09-30 22:34:27 +01:00
{ " console set <format> " , " Set time format for console window. " } ,
{ " console off " , " Do not show time in console window. " } ,
{ " chat set <format> " , " Set time format for chat windows. " } ,
{ " chat off " , " Do not show time in chat windows. " } ,
{ " muc set <format> " , " Set time format for chat room windows. " } ,
{ " muc off " , " Do not show time in chat room windows. " } ,
{ " mucconfig set <format> " , " Set time format for chat room config windows. " } ,
{ " mucconfig off " , " Do not show time in chat room config windows. " } ,
{ " private set <format> " , " Set time format for private chat windows. " } ,
{ " private off " , " Do not show time in private chat windows. " } ,
{ " xml set <format> " , " Set time format for XML console window. " } ,
{ " xml off " , " Do not show time in XML console window. " } ,
2015-09-29 23:30:23 +01:00
{ " statusbar set <format> " , " Change time format in statusbar. " } ,
{ " statusbar off " , " Do not show time in status bar. " } ,
{ " lastactivity set <format> " , " Change time format for last activity. " } )
2015-07-26 20:43:59 +01:00
CMD_EXAMPLES (
2015-11-08 22:43:42 +00:00
" /time console set %H:%M:%S " ,
" /time chat set \" %d-%m-%y %H:%M:%S \" " ,
" /time xml off " ,
2015-09-29 23:30:23 +01:00
" /time statusbar set %H:%M " ,
2015-11-08 22:43:42 +00:00
" /time lastactivity set \" %d-%m-%y %H:%M:%S \" " )
2015-07-26 20:43:59 +01:00
} ,
2014-11-16 00:40:54 +00:00
2015-02-23 00:15:33 +00:00
{ " /inpblock " ,
2015-01-12 11:32:32 +01:00
cmd_inpblock , parse_args , 2 , 2 , & cons_inpblock_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /inpblock timeout <millis> " ,
2015-07-26 20:43:59 +01:00
" /inpblock dynamic on|off " )
CMD_DESC (
" How long to wait for keyboard input before checking for new messages or checking for state changes such as 'idle'. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " timeout <millis> " , " Time to wait (1-1000) in milliseconds before reading input from the terminal buffer, default: 1000. " } ,
2015-07-26 20:43:59 +01:00
{ " dynamic on|off " , " Start with 0 millis and dynamically increase up to timeout when no activity, default: on. " } )
CMD_NOEXAMPLES
} ,
2014-12-21 18:15:29 +00:00
2012-08-12 01:39:51 +01:00
{ " /notify " ,
2015-11-28 00:15:53 +00:00
cmd_notify , parse_args_with_freetext , 0 , 4 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_UI ,
CMD_TAG_CHAT ,
CMD_TAG_GROUPCHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-11-29 00:08:49 +00:00
" /notify chat on|off " ,
" /notify chat current on|off " ,
" /notify chat text on|off " ,
2015-11-25 21:24:21 +00:00
" /notify room on|off " ,
" /notify room mention on|off " ,
2015-07-25 00:45:20 +01:00
" /notify room current on|off " ,
" /notify room text on|off " ,
2015-11-23 23:43:53 +00:00
" /notify room trigger add <text> " ,
" /notify room trigger remove <text> " ,
" /notify room trigger list " ,
" /notify room trigger on|off " ,
2015-11-28 00:15:53 +00:00
" /notify on|off " ,
" /notify mention on|off " ,
2015-11-29 00:08:49 +00:00
" /notify trigger on|off " ,
" /notify reset " ,
2015-07-25 00:45:20 +01:00
" /notify remind <seconds> " ,
" /notify typing on|off " ,
" /notify typing current on|off " ,
" /notify invite on|off " ,
2015-07-26 20:43:59 +01:00
" /notify sub on|off " )
CMD_DESC (
" Settings for various kinds of desktop notifications. " )
CMD_ARGS (
2015-11-29 00:08:49 +00:00
{ " chat on|off " , " Notifications for regular chat messages. " } ,
{ " chat current on|off " , " Whether to show regular chat message notifications when the window is focussed. " } ,
{ " chat text on|off " , " Show message text in regular message notifications. " } ,
{ " room on|off " , " Notifications for all chat room messages, 'mention' only notifies when your nick is mentioned. " } ,
{ " room mention on|off " , " Notifications for all chat room messages when your nick is mentioned. " } ,
{ " room current on|off " , " Whether to show all chat room messages notifications when the window is focussed. " } ,
{ " room text on|off " , " Show message text in chat room message notifications. " } ,
{ " room trigger add <text> " , " Notify when specified text included in all chat room messages. " } ,
{ " room trigger remove <text> " , " Remove chat room notification trigger. " } ,
{ " room trigger list " , " List all chat room triggers. " } ,
{ " room trigger on|off " , " Enable or disable all chat room notification triggers. " } ,
{ " on|off " , " Override the global message setting for the current chat room. " } ,
{ " mention on|off " , " Override the global 'mention' setting for the current chat room. " } ,
{ " trigger on|off " , " Override the global 'trigger' setting for the current chat room. " } ,
{ " remind <seconds> " , " Notification reminder period for unread messages, use 0 to disable. " } ,
{ " typing on|off " , " Notifications when contacts are typing. " } ,
{ " typing current on|off " , " Whether typing notifications are triggered for the current window. " } ,
{ " invite on|off " , " Notifications for chat room invites. " } ,
{ " sub on|off " , " Notifications for subscription requests. " } )
2015-07-26 20:43:59 +01:00
CMD_EXAMPLES (
2015-11-29 00:08:49 +00:00
" /notify chat on " ,
" /notify chat text on " ,
2015-11-25 21:24:21 +00:00
" /notify room mention on " ,
2015-11-28 23:43:02 +00:00
" /notify room trigger add beer " ,
" /notify room trigger on " ,
2015-07-25 00:45:20 +01:00
" /notify room current off " ,
" /notify room text off " ,
2015-11-29 00:08:49 +00:00
" /notify remind 60 " ,
2015-07-25 00:45:20 +01:00
" /notify typing on " ,
2015-07-26 20:43:59 +01:00
" /notify invite on " )
} ,
2012-09-23 22:24:31 +01:00
2012-10-21 20:02:20 +01:00
{ " /flash " ,
2013-12-22 22:14:15 +00:00
cmd_flash , parse_args , 1 , 1 , & cons_flash_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /flash on|off " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Make the terminal flash when incoming messages are received in another window. "
2015-07-26 20:43:59 +01:00
" If the terminal doesn't support flashing, it may attempt to beep. " )
CMD_ARGS (
{ " on|off " , " Enable or disable terminal flash. " } )
CMD_NOEXAMPLES
} ,
2012-08-12 01:39:51 +01:00
2012-10-28 00:33:20 +01:00
{ " /intype " ,
2013-12-22 22:14:15 +00:00
cmd_intype , parse_args , 1 , 1 , & cons_intype_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_UI ,
CMD_TAG_CHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /intype on|off " )
CMD_DESC (
" Show when a contact is typing in the console, and in active message window. " )
CMD_ARGS (
{ " on|off " , " Enable or disable contact typing messages. " } )
CMD_NOEXAMPLES
} ,
2012-10-28 00:33:20 +01:00
2012-12-02 02:21:59 +00:00
{ " /splash " ,
2013-12-22 22:14:15 +00:00
cmd_splash , parse_args , 1 , 1 , & cons_splash_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /splash on|off " )
CMD_DESC (
" Switch on or off the ascii logo on start up and when the /about command is called. " )
CMD_ARGS (
{ " on|off " , " Enable or disable splash logo. " } )
CMD_NOEXAMPLES
} ,
2012-10-27 17:40:17 +01:00
2013-11-07 23:04:12 +00:00
{ " /autoconnect " ,
2013-12-22 22:14:15 +00:00
cmd_autoconnect , parse_args , 1 , 2 , & cons_autoconnect_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CONNECTION )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /autoconnect set <account> " ,
2015-07-26 20:43:59 +01:00
" /autoconnect off " )
CMD_DESC (
2015-07-25 00:45:20 +01:00
" Enable or disable autoconnect on start up. "
2015-07-26 20:43:59 +01:00
" The setting can be overridden by the -a (--account) command line option. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " set <account> " , " Connect with account on start up. " } ,
2015-07-26 20:43:59 +01:00
{ " off " , " Disable autoconnect. " } )
CMD_EXAMPLES (
2015-07-25 00:45:20 +01:00
" /autoconnect set jc@stuntteam.org " ,
2015-07-26 20:43:59 +01:00
" /autoconnect off " )
} ,
2013-11-07 23:04:12 +00:00
2012-10-24 01:35:36 +01:00
{ " /vercheck " ,
2013-12-15 16:10:32 +00:00
cmd_vercheck , parse_args , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /vercheck on|off " )
CMD_DESC (
" Check for new versions when Profanity starts, and when the /about command is run. " )
CMD_ARGS (
{ " on|off " , " Enable or disable the version check. " } )
CMD_NOEXAMPLES
} ,
2012-08-12 01:39:51 +01:00
2012-12-02 20:53:45 +00:00
{ " /titlebar " ,
2015-01-12 00:43:42 +00:00
cmd_titlebar , parse_args , 2 , 2 , & cons_titlebar_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-25 00:45:20 +01:00
" /titlebar show on|off " ,
2015-07-26 20:43:59 +01:00
" /titlebar goodbye on|off " )
CMD_DESC (
" Allow Profanity to modify the window title bar. " )
CMD_ARGS (
2015-07-25 00:45:20 +01:00
{ " show on|off " , " Show current logged in user, and unread messages as the window title. " } ,
2015-07-26 20:43:59 +01:00
{ " goodbye on|off " , " Show a message in the title when exiting profanity. " } )
CMD_NOEXAMPLES
} ,
2015-07-25 00:45:20 +01:00
2014-01-23 19:56:33 +00:00
{ " /alias " ,
2014-01-23 23:53:20 +00:00
cmd_alias , parse_args_with_freetext , 1 , 3 , NULL ,
2015-07-27 23:55:04 +01:00
CMD_NOTAGS
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-26 00:17:16 +01:00
" /alias list " ,
" /alias add <name> <value> " ,
2015-07-26 20:43:59 +01:00
" /alias remove <name> " )
CMD_DESC (
" Add, remove or list command aliases. " )
CMD_ARGS (
2015-07-26 00:17:16 +01:00
{ " list " , " List all aliases. " } ,
{ " add <name> <value> " , " Add a new command alias. " } ,
2015-07-26 20:43:59 +01:00
{ " remove <name> " , " Remove a command alias. " } )
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /alias add friends /who online friends " ,
" /alias add /q /quit " ,
" /alias a /away \" I'm in a meeting. \" " ,
" /alias remove q " ,
2015-07-26 20:43:59 +01:00
" /alias list " )
} ,
2014-01-23 19:56:33 +00:00
2012-10-21 20:02:20 +01:00
{ " /chlog " ,
2013-12-22 22:14:15 +00:00
cmd_chlog , parse_args , 1 , 1 , & cons_chlog_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /chlog on|off " )
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Switch chat logging on or off. "
" This setting will be enabled if /history is set to on. "
" When disabling this option, /history will also be disabled. "
2015-07-26 20:43:59 +01:00
" See the /grlog setting for enabling logging of chat room (groupchat) messages. " )
CMD_ARGS (
{ " on|off " , " Enable or disable chat logging. " } )
CMD_NOEXAMPLES
} ,
2013-05-05 00:16:10 +01:00
{ " /grlog " ,
2013-12-22 22:14:15 +00:00
cmd_grlog , parse_args , 1 , 1 , & cons_grlog_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_GROUPCHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /grlog on|off " )
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Switch chat room logging on or off. "
2015-07-26 20:43:59 +01:00
" See the /chlog setting for enabling logging of one to one chat. " )
CMD_ARGS (
{ " on|off " , " Enable or disable chat room logging. " } )
CMD_NOEXAMPLES
} ,
2012-10-31 21:41:00 +00:00
{ " /states " ,
2013-12-22 22:14:15 +00:00
cmd_states , parse_args , 1 , 1 , & cons_states_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /states on|off " )
CMD_DESC (
" Send chat state notifications to recipient during chat sessions, such as typing, paused, active, gone. " )
CMD_ARGS (
{ " on|off " , " Enable or disable sending of chat state notifications. " } )
CMD_NOEXAMPLES
} ,
2012-10-14 18:26:08 +01:00
2015-03-22 00:12:14 +00:00
{ " /pgp " ,
2015-06-23 23:29:10 +01:00
cmd_pgp , parse_args , 1 , 3 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-08-26 01:24:53 +01:00
CMD_TAG_CHAT ,
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-26 00:17:16 +01:00
" /pgp libver " ,
" /pgp keys " ,
2015-08-25 22:45:51 +01:00
" /pgp contacts " ,
2015-07-26 00:17:16 +01:00
" /pgp setkey <contact> <keyid> " ,
" /pgp start [<contact>] " ,
" /pgp end " ,
2015-08-26 01:24:53 +01:00
" /pgp log on|off|redact " ,
" /pgp char <char> " )
2015-07-26 20:43:59 +01:00
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Open PGP commands to manage keys, and perform PGP encryption during chat sessions. "
2015-07-26 20:43:59 +01:00
" See the /account command to set your own PGP key. " )
CMD_ARGS (
2015-07-26 00:17:16 +01:00
{ " libver " , " Show which version of the libgpgme library is being used. " } ,
2015-08-25 22:45:51 +01:00
{ " keys " , " List all keys known to the system. " } ,
2015-08-25 23:04:21 +01:00
{ " contacts " , " Show contacts with assigned public keys. " } ,
{ " setkey <contact> <keyid> " , " Manually associate a contact with a public key. " } ,
2015-07-26 00:17:16 +01:00
{ " start [<contact>] " , " Start PGP encrypted chat, current contact will be used if not specified. " } ,
{ " end " , " End PGP encrypted chat with the current recipient. " } ,
{ " log on|off " , " Enable or disable plaintext logging of PGP encrypted messages. " } ,
2015-08-26 01:24:53 +01:00
{ " log redact " , " Log PGP encrypted messages, but replace the contents with [redacted]. This is the default. " } ,
{ " char <char> " , " Set the character to be displayed next to PGP encrypted messages. " } )
2015-07-26 20:43:59 +01:00
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /pgp log off " ,
" /pgp setkey buddy@buddychat.org BA19CACE5A9592C5 " ,
" /pgp start buddy@buddychat.org " ,
2015-08-26 01:24:53 +01:00
" /pgp end " ,
" /pgp char P " )
2015-07-26 20:43:59 +01:00
} ,
2015-03-22 00:12:14 +00:00
2013-09-21 22:33:43 +01:00
{ " /otr " ,
2014-04-30 23:59:40 +01:00
cmd_otr , parse_args , 1 , 3 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-08-26 01:24:53 +01:00
CMD_TAG_CHAT ,
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-26 00:17:16 +01:00
" /otr libver " ,
" /otr gen " ,
" /otr myfp|theirfp " ,
" /otr start [<contact>] " ,
" /otr end " ,
" /otr trust|untrust " ,
" /otr secret <secret> " ,
" /otr question <question> <answer> " ,
" /otr answer <answer> " ,
2015-09-28 21:34:27 +01:00
" /otr policy manual|opportunistic|always [<contact>] " ,
2015-08-26 01:24:53 +01:00
" /otr log on|off|redact " ,
" /otr char <char> " )
2015-07-26 20:43:59 +01:00
CMD_DESC (
" Off The Record (OTR) commands to manage keys, and perform OTR encryption during chat sessions. " )
CMD_ARGS (
2015-09-28 21:34:27 +01:00
{ " libver " , " Show which version of the libotr library is being used. " } ,
{ " gen " , " Generate your private key. " } ,
{ " myfp " , " Show your fingerprint. " } ,
{ " theirfp " , " Show contacts fingerprint. " } ,
{ " start [<contact>] " , " Start an OTR session with contact, or current recipient if omitted. " } ,
{ " end " , " End the current OTR session, " } ,
{ " trust|untrust " , " Indicate whether or not you trust the contact's fingerprint. " } ,
{ " secret <secret> " , " Verify a contact's identity using a shared secret. " } ,
{ " question <question> <answer> " , " Verify a contact's identity using a question and expected answer. " } ,
{ " answer <answer> " , " Respond to a question answer verification request with your answer. " } ,
{ " policy manual " , " Set the global OTR policy to manual, OTR sessions must be started manually. " } ,
{ " policy manual <contact> " , " Set the OTR policy to manual for a specific contact. " } ,
{ " policy opportunistic " , " Set the global OTR policy to opportunistic, an OTR session will be attempted upon starting a conversation. " } ,
{ " policy opportunistic <contact> " , " Set the OTR policy to opportunistic for a specific contact. " } ,
{ " policy always " , " Set the global OTR policy to always, an error will be displayed if an OTR session cannot be initiated upon starting a conversation. " } ,
{ " policy always <contact> " , " Set the OTR policy to always for a specific contact. " } ,
{ " log on|off " , " Enable or disable plaintext logging of OTR encrypted messages. " } ,
{ " log redact " , " Log OTR encrypted messages, but replace the contents with [redacted]. This is the default. " } ,
{ " char <char> " , " Set the character to be displayed next to OTR encrypted messages. " } )
2015-07-26 20:43:59 +01:00
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /otr log off " ,
" /otr policy manual " ,
2015-09-28 21:34:27 +01:00
" /otr policy opportunistic mrfriend@workchat.org " ,
2015-07-26 00:17:16 +01:00
" /otr gen " ,
" /otr start buddy@buddychat.org " ,
" /otr myfp " ,
" /otr theirfp " ,
" /otr question \" What is the name of my rabbit? \" fiffi " ,
2015-08-26 01:24:53 +01:00
" /otr end " ,
" /otr char * " )
2015-07-26 20:43:59 +01:00
} ,
2013-09-21 22:33:43 +01:00
2012-11-01 00:12:35 +00:00
{ " /outtype " ,
2013-12-22 22:14:15 +00:00
cmd_outtype , parse_args , 1 , 1 , & cons_outtype_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /outtype on|off " )
CMD_DESC (
" Send typing notifications, chat states (/states) will be enabled if this setting is enabled. " )
CMD_ARGS (
{ " on|off " , " Enable or disable sending typing notifications. " } )
CMD_NOEXAMPLES
} ,
2012-10-31 21:41:00 +00:00
2012-12-19 23:31:25 +00:00
{ " /gone " ,
2013-12-22 22:14:15 +00:00
cmd_gone , parse_args , 1 , 1 , & cons_gone_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /gone <minutes> " )
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Send a 'gone' state to the recipient after the specified number of minutes. "
2015-07-26 20:43:59 +01:00
" Chat states (/states) will be enabled if this setting is set. " )
CMD_ARGS (
{ " <minutes> " , " Number of minutes of inactivity before sending the 'gone' state, a value of 0 will disable sending this state. " } )
CMD_NOEXAMPLES
} ,
2012-12-19 23:31:25 +00:00
2012-10-21 20:02:20 +01:00
{ " /history " ,
2013-12-22 22:14:15 +00:00
cmd_history , parse_args , 1 , 1 , & cons_history_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_UI ,
CMD_TAG_CHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /history on|off " )
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Switch chat history on or off, /chlog will automatically be enabled when this setting is on. "
2015-07-26 20:43:59 +01:00
" When history is enabled, previous messages are shown in chat windows. " )
CMD_ARGS (
{ " on|off " , " Enable or disable showing chat history. " } )
CMD_NOEXAMPLES
} ,
2012-11-12 11:13:03 +02:00
{ " /log " ,
2014-04-13 22:20:15 +01:00
cmd_log , parse_args , 1 , 2 , & cons_log_setting ,
2015-07-27 23:55:04 +01:00
CMD_NOTAGS
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-26 00:17:16 +01:00
" /log where " ,
" /log rotate on|off " ,
" /log maxsize <bytes> " ,
2015-07-26 20:43:59 +01:00
" /log shared on|off " )
CMD_DESC (
" Manage profanity log settings. " )
CMD_ARGS (
2015-07-26 00:17:16 +01:00
{ " where " , " Show the current log file location. " } ,
{ " rotate on|off " , " Rotate log, default on. " } ,
{ " maxsize <bytes> " , " With rotate enabled, specifies the max log size, defaults to 1048580 (1MB). " } ,
2015-07-26 20:43:59 +01:00
{ " shared on|off " , " Share logs between all instances, default: on. When off, the process id will be included in the log. " } )
CMD_NOEXAMPLES
} ,
2012-11-13 12:51:28 +02:00
2015-02-02 11:10:05 +01:00
{ " /carbons " ,
2015-07-26 00:17:16 +01:00
cmd_carbons , parse_args , 1 , 1 , & cons_carbons_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /carbons on|off " )
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Enable or disable message carbons. "
2015-07-26 20:43:59 +01:00
" Message carbons ensure that both sides of all conversations are shared with all the user's clients that implement this protocol. " )
CMD_ARGS (
{ " on|off " , " Enable or disable message carbons. " } )
CMD_NOEXAMPLES
} ,
2015-02-02 11:10:05 +01:00
2015-03-15 19:48:19 +00:00
{ " /receipts " ,
2015-07-26 00:17:16 +01:00
cmd_receipts , parse_args , 2 , 2 , & cons_receipts_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-26 00:17:16 +01:00
" /receipts request on|off " ,
2015-07-26 20:43:59 +01:00
" /receipts send on|off " )
CMD_DESC (
" Enable or disable message delivery receipts. The interface will indicate when a message has been received. " )
CMD_ARGS (
2015-07-26 00:17:16 +01:00
{ " request on|off " , " Whether or not to request a receipt upon sending a message. " } ,
2015-07-26 20:43:59 +01:00
{ " send on|off " , " Whether or not to send a receipt if one has been requested with a received message. " } )
CMD_NOEXAMPLES
} ,
2015-03-15 19:48:19 +00:00
2012-11-25 02:14:38 +00:00
{ " /reconnect " ,
2013-12-22 22:14:15 +00:00
cmd_reconnect , parse_args , 1 , 1 , & cons_reconnect_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CONNECTION )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /reconnect <seconds> " )
CMD_DESC (
" Set the reconnect attempt interval for when the connection is lost. " )
CMD_ARGS (
{ " <seconds> " , " Number of seconds before attempting to reconnect, a value of 0 disables reconnect. " } )
CMD_NOEXAMPLES
} ,
2012-11-25 02:14:38 +00:00
2012-11-26 23:58:24 +00:00
{ " /autoping " ,
2016-01-01 19:50:13 +00:00
cmd_autoping , parse_args , 2 , 2 , & cons_autoping_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CONNECTION )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2016-01-01 19:50:13 +00:00
" /autoping set <seconds> " ,
" /autoping timeout <seconds> " )
2015-07-26 20:43:59 +01:00
CMD_DESC (
" Set the interval between sending ping requests to the server to ensure the connection is kept alive. " )
CMD_ARGS (
2016-01-01 19:50:13 +00:00
{ " set <seconds> " , " Number of seconds between sending pings, a value of 0 disables autoping. " } ,
{ " timeout <seconds> " , " Seconds to wait for autoping responses, after which the connection is considered broken. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
} ,
2012-11-26 23:58:24 +00:00
2014-09-04 01:08:10 +01:00
{ " /ping " ,
cmd_ping , parse_args , 0 , 1 , NULL ,
2015-07-27 23:55:04 +01:00
CMD_TAGS (
CMD_TAG_CONNECTION )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /ping [<jid>] " )
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Sends an IQ ping stanza to the specified JID. "
2015-07-26 20:43:59 +01:00
" If no JID is supplied, your chat server will be pinged. " )
CMD_ARGS (
{ " <jid> " , " The Jabber ID to send the ping request to. " } )
CMD_NOEXAMPLES
} ,
2014-09-04 01:08:10 +01:00
2012-11-30 23:34:14 +00:00
{ " /autoaway " ,
2015-09-27 23:08:30 +01:00
cmd_autoaway , parse_args_with_freetext , 2 , 3 , & cons_autoaway_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_PRESENCE )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-26 00:17:16 +01:00
" /autoaway mode idle|away|off " ,
2015-09-27 23:08:30 +01:00
" /autoaway time away|xa <minutes> " ,
" /autoaway message away|xa <message>|off " ,
2015-07-26 20:43:59 +01:00
" /autoaway check on|off " )
CMD_DESC (
" Manage autoway settings for idle time. " )
CMD_ARGS (
2015-09-27 23:08:30 +01:00
{ " mode idle " , " Sends idle time, status remains online. " } ,
{ " mode away " , " Sends away and xa presence as well as idle time. " } ,
{ " mode off " , " Disabled (default). " } ,
{ " time away <minutes> " , " Number of minutes before the away presence is sent, default: 15. " } ,
{ " time xa <minutes> " , " Number of minutes before the xa presence is sent, default: 0 (disabled). " } ,
{ " message away <message> " , " Optional message to send with the away presence, default: off (disabled). " } ,
{ " message xa <message> " , " Optional message to send with the xa presence, default: off (disabled). " } ,
{ " message away off " , " Send no message with away presence. " } ,
{ " message xa off " , " Send no message with xa presence. " } ,
{ " check on|off " , " When enabled, checks for activity and sends online presence, default: on. " } )
2015-07-26 20:43:59 +01:00
CMD_EXAMPLES (
2015-09-27 23:08:30 +01:00
" /autoaway mode away " ,
" /autoaway time away 30 " ,
" /autoaway message away Away from computer for a while " ,
" /autoaway time xa 120 " ,
" /autoaway message xa Away from computer for a very long time " ,
2015-07-26 20:43:59 +01:00
" /autoaway check off " )
} ,
2012-11-30 23:34:14 +00:00
2012-11-13 12:51:28 +02:00
{ " /priority " ,
2015-11-20 00:18:13 +00:00
cmd_priority , parse_args , 1 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_PRESENCE )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /priority <priority> " )
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Set priority for the current account. "
2015-07-26 20:43:59 +01:00
" See the /account command for specific priority settings per presence status. " )
CMD_ARGS (
{ " <priority> " , " Number between -128 and 127, default: 0. " } )
CMD_NOEXAMPLES
} ,
2013-01-21 10:26:09 +09:00
2013-06-23 19:19:39 +01:00
{ " /account " ,
2013-12-15 16:10:32 +00:00
cmd_account , parse_args , 0 , 4 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_CONNECTION
CMD_TAG_PRESENCE ,
CMD_TAG_CHAT ,
CMD_TAG_GROUPCHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-26 00:17:16 +01:00
" /account " ,
" /account list " ,
" /account show <account> " ,
" /account enable|disable <account> " ,
" /account default set <account> " ,
" /account default off " ,
" /account add <account> " ,
" /account remove <account> " ,
" /account rename <account> <newaccount> " ,
" /account set <account> jid <jid> " ,
" /account set <account> server <server> " ,
" /account set <account> port <port> " ,
2015-08-03 00:45:14 +01:00
" /account set <account> status <presence> " ,
" /account set <account> status last " ,
" /account set <account> <presence> <priority> " ,
2015-07-26 00:17:16 +01:00
" /account set <account> resource <resource> " ,
" /account set <account> password <password> " ,
" /account set <account> eval_password <command> " ,
" /account set <account> muc <service> " ,
" /account set <account> nick <nick> " ,
2015-08-03 00:45:14 +01:00
" /account set <account> otr <policy> " ,
2015-07-26 00:17:16 +01:00
" /account set <account> pgpkeyid <pgpkeyid> " ,
2015-10-15 01:19:24 +01:00
" /account set <account> startscript <script> " ,
2015-10-18 03:06:23 +01:00
" /account set <account> tls force|allow|disable " ,
2015-07-26 00:17:16 +01:00
" /account clear <account> password " ,
" /account clear <account> eval_password " ,
" /account clear <account> server " ,
" /account clear <account> port " ,
" /account clear <account> otr " ,
2015-10-15 01:19:24 +01:00
" /account clear <account> pgpkeyid " ,
" /account clear <account> startscript " )
2015-07-26 20:43:59 +01:00
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Commands for creating and managing accounts. "
2015-07-26 20:43:59 +01:00
" Calling with no arguments will display information for the current account. " )
CMD_ARGS (
2015-08-03 00:45:14 +01:00
{ " list " , " List all accounts. " } ,
{ " enable <account> " , " Enable the account, it will be used for autocompletion. " } ,
{ " show <account> " , " Show details for the specified account. " } ,
{ " disable <account> " , " Disable the account. " } ,
{ " default set <account> " , " Set the default account, used when no argument passed to the /connect command. " } ,
{ " default off " , " Clear the default account setting. " } ,
{ " add <account> " , " Create a new account. " } ,
{ " remove <account> " , " Remove an account. " } ,
{ " rename <account> <newaccount> " , " Rename 'account' to 'newaccount'. " } ,
{ " set <account> jid <jid> " , " Set the Jabber ID for the account, account name will be used if not set. " } ,
{ " set <account> server <server> " , " The chat server, if different to the domainpart of the JID. " } ,
{ " set <account> port <port> " , " The port used for connecting if not the default (5222, or 5223 for SSL). " } ,
{ " set <account> status <presence> " , " The presence status to use on login. " } ,
{ " set <account> status last " , " Use your last status before logging out, when logging in. " } ,
{ " set <account> <presence> <priority> " , " Set the priority (-128..127) to use for the specified presence. " } ,
{ " set <account> resource <resource> " , " The resource to be used for this account. " } ,
{ " set <account> password <password> " , " Password for the account, note this is currently stored in plaintext if set. " } ,
{ " set <account> eval_password <command> " , " Shell command evaluated to retrieve password for the account. Can be used to retrieve password from keyring. " } ,
{ " set <account> muc <service> " , " The default MUC chat service to use, defaults to 'conference.<domainpart>' where the domain part is from the account JID. " } ,
{ " set <account> nick <nick> " , " The default nickname to use when joining chat rooms. " } ,
{ " set <account> otr <policy> " , " Override global OTR policy for this account, see /otr. " } ,
{ " set <account> pgpkeyid <pgpkeyid> " , " Set the ID of the PGP key for this account, see /pgp. " } ,
2015-10-15 01:19:24 +01:00
{ " set <account> startscript <script> " , " Set the script to execute after connecting. " } ,
2015-10-18 03:06:23 +01:00
{ " set <account> tls force " , " Force TLS connection, and fail if one cannot be established, this is default behaviour. " } ,
{ " set <account> tls allow " , " Use TLS for the connection if it is available. " } ,
{ " set <account> tls disable " , " Disable TLS for the connection. " } ,
2015-08-03 00:45:14 +01:00
{ " clear <account> server " , " Remove the server setting for this account. " } ,
{ " clear <account> port " , " Remove the port setting for this account. " } ,
{ " clear <account> password " , " Remove the password setting for this account. " } ,
{ " clear <account> eval_password " , " Remove the eval_password setting for this account. " } ,
{ " clear <account> otr " , " Remove the OTR policy setting for this account. " } ,
2015-10-15 01:19:24 +01:00
{ " clear <account> pgpkeyid " , " Remove pgpkeyid associated with this account. " } ,
{ " clear <account> startscript " , " Remove startscript associated with this account. " } )
2015-07-26 20:43:59 +01:00
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /account add me " ,
" /account set me jid me@chatty " ,
" /account set me server talk.chat.com " ,
" /account set me port 5111 " ,
" /account set me muc chatservice.mycompany.com " ,
" /account set me nick dennis " ,
" /account set me status dnd " ,
" /account set me dnd -1 " ,
2015-07-26 20:43:59 +01:00
" /account rename me gtalk " )
} ,
2013-06-23 19:19:39 +01:00
{ " /prefs " ,
2013-12-15 16:10:32 +00:00
cmd_prefs , parse_args , 0 , 1 , NULL ,
2015-07-27 23:55:04 +01:00
CMD_NOTAGS
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-09-09 22:59:23 +01:00
" /prefs [ui|desktop|chat|log|conn|presence|otr|pgp] " )
2015-07-26 20:43:59 +01:00
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Show preferences for different areas of functionality. "
2015-07-26 20:43:59 +01:00
" Passing no arguments shows all preferences. " )
CMD_ARGS (
2015-07-26 00:17:16 +01:00
{ " ui " , " User interface preferences. " } ,
{ " desktop " , " Desktop notification preferences. " } ,
{ " chat " , " Chat state preferences. " } ,
{ " log " , " Logging preferences. " } ,
{ " conn " , " Connection handling preferences. " } ,
2015-09-09 22:59:23 +01:00
{ " presence " , " Chat presence preferences. " } ,
{ " otr " , " Off The Record preferences. " } ,
{ " pgp " , " OpenPGP preferences. " } )
2015-07-26 20:43:59 +01:00
CMD_NOEXAMPLES
} ,
2013-06-23 19:19:39 +01:00
{ " /theme " ,
2013-12-22 22:14:15 +00:00
cmd_theme , parse_args , 1 , 2 , & cons_theme_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
2015-07-26 00:17:16 +01:00
" /theme list " ,
" /theme load <theme> " ,
2015-07-26 20:43:59 +01:00
" /theme colours " )
CMD_DESC (
" Load a theme, includes colours and UI options. " )
CMD_ARGS (
2015-07-26 00:17:16 +01:00
{ " list " , " List all available themes. " } ,
{ " load <theme> " , " Load the specified theme. 'default' will reset to the default theme. " } ,
2015-07-26 20:43:59 +01:00
{ " colours " , " Show the colour values as rendered by the terminal. " } )
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /theme list " ,
2015-07-26 20:43:59 +01:00
" /theme load forest " )
} ,
2013-06-23 19:19:39 +01:00
2013-01-21 10:26:09 +09:00
{ " /statuses " ,
2014-01-19 01:25:04 +00:00
cmd_statuses , parse_args , 2 , 2 , & cons_statuses_setting ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_UI ,
CMD_TAG_CHAT ,
CMD_TAG_GROUPCHAT )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /statuses console|chat|muc all|online|none " )
CMD_DESC (
2015-07-26 00:17:16 +01:00
" Configure which presence changes are displayed in various windows. "
2015-07-26 20:43:59 +01:00
" The default is 'all' for all windows. " )
CMD_ARGS (
2015-07-26 00:17:16 +01:00
{ " console " , " Configure what is displayed in the console window. " } ,
{ " chat " , " Configure what is displayed in chat windows. " } ,
{ " muc " , " Configure what is displayed in chat room windows. " } ,
{ " all " , " Show all presence changes. " } ,
{ " online " , " Show only online/offline changes. " } ,
2015-07-26 20:43:59 +01:00
{ " none " , " Don't show any presence changes. " } )
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /statuses console none " ,
" /statuses chat online " ,
2015-07-26 20:43:59 +01:00
" /statuses muc all " )
} ,
2012-08-11 00:18:03 +01:00
2014-04-15 13:16:32 +01:00
{ " /xmlconsole " ,
cmd_xmlconsole , parse_args , 0 , 0 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
CMD_TAG_UI )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /xmlconsole " )
CMD_DESC (
" Open the XML console to view incoming and outgoing XMPP traffic. " )
CMD_NOARGS
CMD_NOEXAMPLES
} ,
2014-04-15 13:16:32 +01:00
2012-08-12 01:39:51 +01:00
{ " /away " ,
2013-12-15 16:10:32 +00:00
cmd_away , parse_args_with_freetext , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_PRESENCE )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /away [<message>] " )
CMD_DESC (
" Set your status to 'away'. " )
CMD_ARGS (
{ " <message> " , " Optional message to use with the status. " } )
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /away " ,
2015-07-26 20:43:59 +01:00
" /away Gone for lunch " )
} ,
2012-08-12 01:39:51 +01:00
{ " /chat " ,
2013-12-15 16:10:32 +00:00
cmd_chat , parse_args_with_freetext , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_PRESENCE )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /chat [<message>] " )
CMD_DESC (
" Set your status to 'chat' (available for chat). " )
CMD_ARGS (
{ " <message> " , " Optional message to use with the status. " } )
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /chat " ,
2015-07-26 20:43:59 +01:00
" /chat Please talk to me! " )
} ,
2012-08-12 01:39:51 +01:00
{ " /dnd " ,
2013-12-15 16:10:32 +00:00
cmd_dnd , parse_args_with_freetext , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_PRESENCE )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /dnd [<message>] " )
CMD_DESC (
" Set your status to 'dnd' (do not disturb). " )
CMD_ARGS (
{ " <message> " , " Optional message to use with the status. " } )
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /dnd " ,
2015-07-26 20:43:59 +01:00
" /dnd I'm in the zone " )
} ,
2012-08-12 01:39:51 +01:00
2012-10-21 20:02:20 +01:00
{ " /online " ,
2013-12-15 16:10:32 +00:00
cmd_online , parse_args_with_freetext , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_PRESENCE )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /online [<message>] " )
CMD_DESC (
" Set your status to 'online'. " )
CMD_ARGS (
{ " <message> " , " Optional message to use with the status. " } )
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /online " ,
2015-07-26 20:43:59 +01:00
" /online Up the Irons! " )
} ,
2012-08-12 01:39:51 +01:00
{ " /xa " ,
2013-12-15 16:10:32 +00:00
cmd_xa , parse_args_with_freetext , 0 , 1 , NULL ,
2015-07-27 01:06:10 +01:00
CMD_TAGS (
2015-07-27 23:55:04 +01:00
CMD_TAG_PRESENCE )
2015-07-26 20:43:59 +01:00
CMD_SYN (
" /xa [<message>] " )
CMD_DESC (
" Set your status to 'xa' (extended away). " )
CMD_ARGS (
{ " <message> " , " Optional message to use with the status. " } )
CMD_EXAMPLES (
2015-07-26 00:17:16 +01:00
" /xa " ,
2015-07-26 20:43:59 +01:00
" /xa This meeting is going to be a long one " )
} ,
2015-10-15 23:57:52 +01:00
{ " /script " ,
2015-10-17 22:30:01 +01:00
cmd_script , parse_args , 1 , 2 , NULL ,
2015-10-15 23:57:52 +01:00
CMD_NOTAGS
CMD_SYN (
" /script run <script> " ,
" /script list " ,
" /script show <script> " )
CMD_DESC (
2015-10-17 22:30:01 +01:00
" Run command scripts. "
2015-10-15 23:57:52 +01:00
" Scripts are stored in $XDG_DATA_HOME/profanity/scripts/ which is usually $HOME/.local/share/profanity/scripts/. " )
CMD_ARGS (
{ " script run <script> " , " Execute a script. " } ,
{ " script list " , " List all scripts TODO. " } ,
{ " script show <script> " , " Show the commands in script TODO. " } )
CMD_EXAMPLES (
" /script list " ,
" /script run myscript " ,
" /script show somescript " )
} ,
2015-11-23 20:09:51 -06:00
{ " /export " ,
cmd_export , parse_args , 1 , 1 , NULL ,
CMD_NOTAGS
CMD_SYN (
" /export <filepath> " )
CMD_DESC (
" Exports contacts to a csv file. " )
CMD_ARGS (
{ " <filepath> " , " Path to the output file. " } )
CMD_EXAMPLES (
2015-11-23 20:29:17 -06:00
" /export /path/to/output.csv " ,
2015-11-23 20:09:51 -06:00
" /export ~/contacts.csv " )
} ,
2012-06-04 20:49:18 +01:00
} ;
2012-10-21 20:02:20 +01:00
2013-01-25 01:11:49 +00:00
static Autocomplete commands_ac ;
2014-10-04 22:43:22 +01:00
static Autocomplete who_room_ac ;
static Autocomplete who_roster_ac ;
2013-01-25 01:11:49 +00:00
static Autocomplete help_ac ;
2015-07-27 23:55:04 +01:00
static Autocomplete help_commands_ac ;
2013-01-25 01:11:49 +00:00
static Autocomplete notify_ac ;
2015-11-29 00:08:49 +00:00
static Autocomplete notify_chat_ac ;
2014-05-24 16:46:05 +01:00
static Autocomplete notify_room_ac ;
2014-05-24 21:13:33 +01:00
static Autocomplete notify_typing_ac ;
2015-11-23 23:43:53 +00:00
static Autocomplete notify_trigger_ac ;
2013-01-25 01:11:49 +00:00
static Autocomplete prefs_ac ;
static Autocomplete sub_ac ;
static Autocomplete log_ac ;
static Autocomplete autoaway_ac ;
static Autocomplete autoaway_mode_ac ;
2015-09-27 23:08:30 +01:00
static Autocomplete autoaway_presence_ac ;
2013-12-08 21:49:34 +00:00
static Autocomplete autoconnect_ac ;
2013-01-25 01:11:49 +00:00
static Autocomplete titlebar_ac ;
static Autocomplete theme_ac ;
static Autocomplete theme_load_ac ;
static Autocomplete account_ac ;
2013-12-10 22:11:48 +00:00
static Autocomplete account_set_ac ;
static Autocomplete account_clear_ac ;
2014-11-27 12:07:18 -06:00
static Autocomplete account_default_ac ;
2015-08-03 00:33:16 +01:00
static Autocomplete account_status_ac ;
2013-03-14 20:50:09 +00:00
static Autocomplete disco_ac ;
2013-05-16 22:49:35 +01:00
static Autocomplete close_ac ;
2013-05-17 00:33:00 +01:00
static Autocomplete wins_ac ;
2013-05-19 02:30:03 +01:00
static Autocomplete roster_ac ;
2015-11-22 17:45:38 +00:00
static Autocomplete roster_show_ac ;
2014-11-11 00:30:29 +00:00
static Autocomplete roster_by_ac ;
2015-11-17 23:37:33 +00:00
static Autocomplete roster_order_ac ;
2015-11-22 17:45:38 +00:00
static Autocomplete roster_header_ac ;
static Autocomplete roster_contact_ac ;
static Autocomplete roster_resource_ac ;
static Autocomplete roster_presence_ac ;
static Autocomplete roster_char_ac ;
2015-07-08 20:51:39 +01:00
static Autocomplete roster_remove_all_ac ;
2013-06-02 17:51:38 +01:00
static Autocomplete group_ac ;
2014-03-29 22:58:48 +00:00
static Autocomplete bookmark_ac ;
2014-05-11 00:17:10 +01:00
static Autocomplete bookmark_property_ac ;
2014-01-12 00:10:16 +00:00
static Autocomplete otr_ac ;
2014-01-13 20:17:45 +00:00
static Autocomplete otr_log_ac ;
2014-04-23 00:01:18 +01:00
static Autocomplete otr_policy_ac ;
2014-01-18 23:05:35 +00:00
static Autocomplete connect_property_ac ;
2015-10-18 03:06:23 +01:00
static Autocomplete tls_property_ac ;
2014-01-21 00:28:56 +00:00
static Autocomplete statuses_ac ;
2014-03-15 22:25:15 +00:00
static Autocomplete statuses_setting_ac ;
2014-01-23 19:56:33 +00:00
static Autocomplete alias_ac ;
2014-01-25 01:00:51 +00:00
static Autocomplete aliases_ac ;
2014-03-05 20:57:59 +00:00
static Autocomplete join_property_ac ;
2014-09-03 00:36:42 +01:00
static Autocomplete room_ac ;
2014-10-12 00:43:58 +01:00
static Autocomplete affiliation_ac ;
static Autocomplete role_ac ;
static Autocomplete privilege_cmd_ac ;
2014-10-11 23:13:48 +01:00
static Autocomplete subject_ac ;
2014-09-15 21:33:25 +01:00
static Autocomplete form_ac ;
2014-10-19 01:01:31 +01:00
static Autocomplete form_field_multi_ac ;
2014-10-09 21:42:09 +01:00
static Autocomplete occupants_ac ;
2014-10-09 22:39:57 +01:00
static Autocomplete occupants_default_ac ;
2015-04-12 02:14:37 +01:00
static Autocomplete occupants_show_ac ;
2014-11-16 00:40:54 +00:00
static Autocomplete time_ac ;
2015-05-29 20:49:28 -05:00
static Autocomplete time_format_ac ;
2014-12-04 00:16:42 +00:00
static Autocomplete resource_ac ;
2015-01-12 23:41:15 +00:00
static Autocomplete inpblock_ac ;
2015-03-19 22:57:51 +00:00
static Autocomplete receipts_ac ;
2015-03-22 00:12:14 +00:00
static Autocomplete pgp_ac ;
2015-06-21 21:42:58 +01:00
static Autocomplete pgp_log_ac ;
2015-09-22 21:42:05 +01:00
static Autocomplete tls_ac ;
2015-09-23 20:37:41 +01:00
static Autocomplete tls_certpath_ac ;
2015-10-15 23:57:52 +01:00
static Autocomplete script_ac ;
2015-10-17 23:14:55 +01:00
static Autocomplete script_show_ac ;
2015-12-29 23:32:32 +00:00
static Autocomplete console_ac ;
static Autocomplete console_muc_ac ;
2016-01-01 19:50:13 +00:00
static Autocomplete autoping_ac ;
2012-08-11 00:18:03 +01:00
2012-08-22 23:57:34 +01:00
/*
* Initialise command autocompleter and history
*/
2012-07-24 23:19:48 +01:00
void
2012-08-23 00:30:11 +01:00
cmd_init ( void )
2012-05-01 00:24:31 +01:00
{
2012-08-26 00:54:18 +01:00
log_info ( " Initialising commands " ) ;
2012-10-28 01:47:57 +01:00
2013-01-25 01:11:49 +00:00
commands_ac = autocomplete_new ( ) ;
2014-01-25 01:00:51 +00:00
aliases_ac = autocomplete_new ( ) ;
2013-06-25 00:49:29 +01:00
help_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( help_ac , " commands " ) ;
autocomplete_add ( help_ac , " navigation " ) ;
2013-06-25 00:49:29 +01:00
// load command defs into hash table
commands = g_hash_table_new ( g_str_hash , g_str_equal ) ;
unsigned int i ;
for ( i = 0 ; i < ARRAY_SIZE ( command_defs ) ; i + + ) {
Command * pcmd = command_defs + i ;
// add to hash
g_hash_table_insert ( commands , pcmd - > cmd , pcmd ) ;
// add to commands and help autocompleters
2013-08-26 03:29:50 +03:00
autocomplete_add ( commands_ac , pcmd - > cmd ) ;
autocomplete_add ( help_ac , pcmd - > cmd + 1 ) ;
2013-06-25 00:49:29 +01:00
}
2013-01-25 01:11:49 +00:00
2014-01-23 23:53:20 +00:00
// load aliases
GList * aliases = prefs_get_aliases ( ) ;
GList * curr = aliases ;
2015-05-04 22:16:39 +01:00
while ( curr ) {
2014-01-23 23:53:20 +00:00
ProfAlias * alias = curr - > data ;
GString * ac_alias = g_string_new ( " / " ) ;
g_string_append ( ac_alias , alias - > name ) ;
autocomplete_add ( commands_ac , ac_alias - > str ) ;
2014-01-25 01:00:51 +00:00
autocomplete_add ( aliases_ac , alias - > name ) ;
2014-01-23 23:53:20 +00:00
g_string_free ( ac_alias , TRUE ) ;
curr = g_list_next ( curr ) ;
}
2014-06-18 21:36:09 +01:00
prefs_free_aliases ( aliases ) ;
2014-01-23 23:53:20 +00:00
2015-07-27 23:55:04 +01:00
help_commands_ac = autocomplete_new ( ) ;
autocomplete_add ( help_commands_ac , " chat " ) ;
autocomplete_add ( help_commands_ac , " groupchat " ) ;
autocomplete_add ( help_commands_ac , " roster " ) ;
autocomplete_add ( help_commands_ac , " presence " ) ;
autocomplete_add ( help_commands_ac , " discovery " ) ;
autocomplete_add ( help_commands_ac , " connection " ) ;
autocomplete_add ( help_commands_ac , " ui " ) ;
2013-01-25 01:11:49 +00:00
prefs_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( prefs_ac , " ui " ) ;
autocomplete_add ( prefs_ac , " desktop " ) ;
autocomplete_add ( prefs_ac , " chat " ) ;
autocomplete_add ( prefs_ac , " log " ) ;
autocomplete_add ( prefs_ac , " conn " ) ;
autocomplete_add ( prefs_ac , " presence " ) ;
2014-05-11 13:32:59 +01:00
autocomplete_add ( prefs_ac , " otr " ) ;
2015-06-22 21:09:14 +01:00
autocomplete_add ( prefs_ac , " pgp " ) ;
2013-01-25 01:11:49 +00:00
notify_ac = autocomplete_new ( ) ;
2015-11-29 00:08:49 +00:00
autocomplete_add ( notify_ac , " chat " ) ;
2014-05-24 15:54:10 +01:00
autocomplete_add ( notify_ac , " room " ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( notify_ac , " typing " ) ;
autocomplete_add ( notify_ac , " remind " ) ;
autocomplete_add ( notify_ac , " invite " ) ;
autocomplete_add ( notify_ac , " sub " ) ;
2015-11-28 00:15:53 +00:00
autocomplete_add ( notify_ac , " on " ) ;
autocomplete_add ( notify_ac , " off " ) ;
autocomplete_add ( notify_ac , " mention " ) ;
autocomplete_add ( notify_ac , " trigger " ) ;
2015-11-28 23:47:08 +00:00
autocomplete_add ( notify_ac , " reset " ) ;
2013-01-25 01:11:49 +00:00
2015-11-29 00:08:49 +00:00
notify_chat_ac = autocomplete_new ( ) ;
autocomplete_add ( notify_chat_ac , " on " ) ;
autocomplete_add ( notify_chat_ac , " off " ) ;
autocomplete_add ( notify_chat_ac , " current " ) ;
autocomplete_add ( notify_chat_ac , " text " ) ;
2014-05-24 20:46:03 +01:00
2014-05-24 16:46:05 +01:00
notify_room_ac = autocomplete_new ( ) ;
autocomplete_add ( notify_room_ac , " on " ) ;
autocomplete_add ( notify_room_ac , " off " ) ;
autocomplete_add ( notify_room_ac , " mention " ) ;
2014-05-24 20:46:03 +01:00
autocomplete_add ( notify_room_ac , " current " ) ;
2014-05-24 22:14:26 +01:00
autocomplete_add ( notify_room_ac , " text " ) ;
2015-11-23 23:43:53 +00:00
autocomplete_add ( notify_room_ac , " trigger " ) ;
2014-05-24 16:46:05 +01:00
2014-05-24 21:13:33 +01:00
notify_typing_ac = autocomplete_new ( ) ;
autocomplete_add ( notify_typing_ac , " on " ) ;
autocomplete_add ( notify_typing_ac , " off " ) ;
autocomplete_add ( notify_typing_ac , " current " ) ;
2015-11-23 23:43:53 +00:00
notify_trigger_ac = autocomplete_new ( ) ;
autocomplete_add ( notify_trigger_ac , " add " ) ;
autocomplete_add ( notify_trigger_ac , " remove " ) ;
autocomplete_add ( notify_trigger_ac , " list " ) ;
autocomplete_add ( notify_trigger_ac , " on " ) ;
autocomplete_add ( notify_trigger_ac , " off " ) ;
2013-01-25 01:11:49 +00:00
sub_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( sub_ac , " request " ) ;
autocomplete_add ( sub_ac , " allow " ) ;
autocomplete_add ( sub_ac , " deny " ) ;
autocomplete_add ( sub_ac , " show " ) ;
autocomplete_add ( sub_ac , " sent " ) ;
autocomplete_add ( sub_ac , " received " ) ;
2013-01-25 01:11:49 +00:00
titlebar_ac = autocomplete_new ( ) ;
2015-01-12 00:43:42 +00:00
autocomplete_add ( titlebar_ac , " show " ) ;
2015-01-12 01:12:42 +00:00
autocomplete_add ( titlebar_ac , " goodbye " ) ;
2013-01-25 01:11:49 +00:00
log_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( log_ac , " maxsize " ) ;
2014-04-13 20:41:11 +01:00
autocomplete_add ( log_ac , " rotate " ) ;
2014-04-13 21:56:35 +01:00
autocomplete_add ( log_ac , " shared " ) ;
2014-04-13 22:20:15 +01:00
autocomplete_add ( log_ac , " where " ) ;
2013-01-25 01:11:49 +00:00
autoaway_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( autoaway_ac , " mode " ) ;
autocomplete_add ( autoaway_ac , " time " ) ;
autocomplete_add ( autoaway_ac , " message " ) ;
autocomplete_add ( autoaway_ac , " check " ) ;
2013-01-25 01:11:49 +00:00
autoaway_mode_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( autoaway_mode_ac , " away " ) ;
autocomplete_add ( autoaway_mode_ac , " idle " ) ;
autocomplete_add ( autoaway_mode_ac , " off " ) ;
2013-01-25 01:11:49 +00:00
2015-09-27 23:08:30 +01:00
autoaway_presence_ac = autocomplete_new ( ) ;
autocomplete_add ( autoaway_presence_ac , " away " ) ;
autocomplete_add ( autoaway_presence_ac , " xa " ) ;
2013-12-08 21:49:34 +00:00
autoconnect_ac = autocomplete_new ( ) ;
autocomplete_add ( autoconnect_ac , " set " ) ;
autocomplete_add ( autoconnect_ac , " off " ) ;
2013-01-25 01:11:49 +00:00
theme_ac = autocomplete_new ( ) ;
2015-02-26 00:49:21 +00:00
autocomplete_add ( theme_ac , " load " ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( theme_ac , " list " ) ;
2014-11-17 21:10:08 +00:00
autocomplete_add ( theme_ac , " colours " ) ;
2013-01-25 01:11:49 +00:00
2013-03-14 20:50:09 +00:00
disco_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( disco_ac , " info " ) ;
autocomplete_add ( disco_ac , " items " ) ;
2013-03-14 20:50:09 +00:00
2013-01-25 01:11:49 +00:00
account_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( account_ac , " list " ) ;
autocomplete_add ( account_ac , " show " ) ;
autocomplete_add ( account_ac , " add " ) ;
2014-11-23 15:37:10 -06:00
autocomplete_add ( account_ac , " remove " ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( account_ac , " enable " ) ;
autocomplete_add ( account_ac , " disable " ) ;
2014-11-27 12:07:18 -06:00
autocomplete_add ( account_ac , " default " ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( account_ac , " rename " ) ;
autocomplete_add ( account_ac , " set " ) ;
2013-12-08 23:36:00 +00:00
autocomplete_add ( account_ac , " clear " ) ;
2012-12-09 22:58:45 +00:00
2013-12-10 22:11:48 +00:00
account_set_ac = autocomplete_new ( ) ;
autocomplete_add ( account_set_ac , " jid " ) ;
autocomplete_add ( account_set_ac , " server " ) ;
2014-01-19 00:05:04 +00:00
autocomplete_add ( account_set_ac , " port " ) ;
2013-12-10 22:11:48 +00:00
autocomplete_add ( account_set_ac , " status " ) ;
autocomplete_add ( account_set_ac , " online " ) ;
autocomplete_add ( account_set_ac , " chat " ) ;
autocomplete_add ( account_set_ac , " away " ) ;
autocomplete_add ( account_set_ac , " xa " ) ;
autocomplete_add ( account_set_ac , " dnd " ) ;
autocomplete_add ( account_set_ac , " resource " ) ;
autocomplete_add ( account_set_ac , " password " ) ;
2015-01-06 23:00:02 -06:00
autocomplete_add ( account_set_ac , " eval_password " ) ;
2013-12-10 22:11:48 +00:00
autocomplete_add ( account_set_ac , " muc " ) ;
autocomplete_add ( account_set_ac , " nick " ) ;
2014-05-11 13:48:41 +01:00
autocomplete_add ( account_set_ac , " otr " ) ;
2015-03-23 23:38:06 +00:00
autocomplete_add ( account_set_ac , " pgpkeyid " ) ;
2015-10-15 01:19:24 +01:00
autocomplete_add ( account_set_ac , " startscript " ) ;
2015-10-18 03:06:23 +01:00
autocomplete_add ( account_set_ac , " tls " ) ;
2013-12-10 22:11:48 +00:00
account_clear_ac = autocomplete_new ( ) ;
autocomplete_add ( account_clear_ac , " password " ) ;
2015-01-07 00:17:59 -06:00
autocomplete_add ( account_clear_ac , " eval_password " ) ;
2014-10-23 23:07:27 +01:00
autocomplete_add ( account_clear_ac , " server " ) ;
2014-10-23 23:12:15 +01:00
autocomplete_add ( account_clear_ac , " port " ) ;
2014-05-11 15:32:38 +01:00
autocomplete_add ( account_clear_ac , " otr " ) ;
2015-03-23 23:38:06 +00:00
autocomplete_add ( account_clear_ac , " pgpkeyid " ) ;
2015-10-15 01:19:24 +01:00
autocomplete_add ( account_clear_ac , " startscript " ) ;
2013-12-10 22:11:48 +00:00
2014-11-27 12:07:18 -06:00
account_default_ac = autocomplete_new ( ) ;
autocomplete_add ( account_default_ac , " set " ) ;
autocomplete_add ( account_default_ac , " off " ) ;
2015-08-03 00:33:16 +01:00
account_status_ac = autocomplete_new ( ) ;
autocomplete_add ( account_status_ac , " online " ) ;
autocomplete_add ( account_status_ac , " chat " ) ;
autocomplete_add ( account_status_ac , " away " ) ;
autocomplete_add ( account_status_ac , " xa " ) ;
autocomplete_add ( account_status_ac , " dnd " ) ;
autocomplete_add ( account_status_ac , " last " ) ;
2013-05-16 22:49:35 +01:00
close_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( close_ac , " read " ) ;
autocomplete_add ( close_ac , " all " ) ;
2013-05-16 22:49:35 +01:00
2013-05-17 00:33:00 +01:00
wins_ac = autocomplete_new ( ) ;
2015-11-30 00:17:44 +00:00
autocomplete_add ( wins_ac , " unread " ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( wins_ac , " prune " ) ;
autocomplete_add ( wins_ac , " tidy " ) ;
2015-09-19 23:31:04 +01:00
autocomplete_add ( wins_ac , " autotidy " ) ;
2014-04-24 21:50:59 +01:00
autocomplete_add ( wins_ac , " swap " ) ;
2013-05-17 00:33:00 +01:00
2013-05-19 02:30:03 +01:00
roster_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( roster_ac , " add " ) ;
2014-11-24 00:54:51 +00:00
autocomplete_add ( roster_ac , " online " ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( roster_ac , " nick " ) ;
2014-03-16 17:53:41 +00:00
autocomplete_add ( roster_ac , " clearnick " ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( roster_ac , " remove " ) ;
2015-07-08 20:51:39 +01:00
autocomplete_add ( roster_ac , " remove_all " ) ;
2014-11-10 23:23:02 +00:00
autocomplete_add ( roster_ac , " show " ) ;
autocomplete_add ( roster_ac , " hide " ) ;
2014-11-11 00:30:29 +00:00
autocomplete_add ( roster_ac , " by " ) ;
2015-11-17 23:37:33 +00:00
autocomplete_add ( roster_ac , " order " ) ;
2014-11-15 23:47:27 +00:00
autocomplete_add ( roster_ac , " size " ) ;
2015-11-22 01:39:20 +00:00
autocomplete_add ( roster_ac , " wrap " ) ;
2015-11-22 17:45:38 +00:00
autocomplete_add ( roster_ac , " header " ) ;
autocomplete_add ( roster_ac , " contact " ) ;
2015-11-22 16:37:05 +00:00
autocomplete_add ( roster_ac , " resource " ) ;
2015-11-22 17:45:38 +00:00
autocomplete_add ( roster_ac , " presence " ) ;
roster_header_ac = autocomplete_new ( ) ;
autocomplete_add ( roster_header_ac , " char " ) ;
roster_contact_ac = autocomplete_new ( ) ;
autocomplete_add ( roster_contact_ac , " char " ) ;
autocomplete_add ( roster_contact_ac , " indent " ) ;
2015-11-22 16:37:05 +00:00
roster_resource_ac = autocomplete_new ( ) ;
2015-11-22 17:45:38 +00:00
autocomplete_add ( roster_resource_ac , " char " ) ;
autocomplete_add ( roster_resource_ac , " indent " ) ;
2015-11-22 16:37:05 +00:00
autocomplete_add ( roster_resource_ac , " join " ) ;
2015-11-19 23:21:51 +00:00
2015-11-22 17:45:38 +00:00
roster_presence_ac = autocomplete_new ( ) ;
autocomplete_add ( roster_presence_ac , " indent " ) ;
2015-11-19 23:21:51 +00:00
roster_char_ac = autocomplete_new ( ) ;
2015-11-22 17:45:38 +00:00
autocomplete_add ( roster_char_ac , " none " ) ;
roster_show_ac = autocomplete_new ( ) ;
autocomplete_add ( roster_show_ac , " offline " ) ;
autocomplete_add ( roster_show_ac , " resource " ) ;
autocomplete_add ( roster_show_ac , " presence " ) ;
autocomplete_add ( roster_show_ac , " status " ) ;
autocomplete_add ( roster_show_ac , " empty " ) ;
autocomplete_add ( roster_show_ac , " count " ) ;
autocomplete_add ( roster_show_ac , " priority " ) ;
2016-01-02 01:37:03 +00:00
autocomplete_add ( roster_show_ac , " rooms " ) ;
2014-11-10 23:51:13 +00:00
2014-11-11 00:30:29 +00:00
roster_by_ac = autocomplete_new ( ) ;
autocomplete_add ( roster_by_ac , " group " ) ;
autocomplete_add ( roster_by_ac , " presence " ) ;
autocomplete_add ( roster_by_ac , " none " ) ;
2015-11-17 23:37:33 +00:00
roster_order_ac = autocomplete_new ( ) ;
autocomplete_add ( roster_order_ac , " name " ) ;
autocomplete_add ( roster_order_ac , " presence " ) ;
2015-07-08 20:51:39 +01:00
roster_remove_all_ac = autocomplete_new ( ) ;
autocomplete_add ( roster_remove_all_ac , " contacts " ) ;
2013-06-02 17:51:38 +01:00
group_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( group_ac , " show " ) ;
autocomplete_add ( group_ac , " add " ) ;
autocomplete_add ( group_ac , " remove " ) ;
2013-06-02 17:51:38 +01:00
2012-12-09 00:46:14 +00:00
theme_load_ac = NULL ;
2014-10-04 22:43:22 +01:00
who_roster_ac = autocomplete_new ( ) ;
autocomplete_add ( who_roster_ac , " chat " ) ;
autocomplete_add ( who_roster_ac , " online " ) ;
autocomplete_add ( who_roster_ac , " away " ) ;
autocomplete_add ( who_roster_ac , " xa " ) ;
autocomplete_add ( who_roster_ac , " dnd " ) ;
autocomplete_add ( who_roster_ac , " offline " ) ;
autocomplete_add ( who_roster_ac , " available " ) ;
autocomplete_add ( who_roster_ac , " unavailable " ) ;
autocomplete_add ( who_roster_ac , " any " ) ;
who_room_ac = autocomplete_new ( ) ;
autocomplete_add ( who_room_ac , " chat " ) ;
autocomplete_add ( who_room_ac , " online " ) ;
autocomplete_add ( who_room_ac , " away " ) ;
autocomplete_add ( who_room_ac , " xa " ) ;
autocomplete_add ( who_room_ac , " dnd " ) ;
autocomplete_add ( who_room_ac , " available " ) ;
autocomplete_add ( who_room_ac , " unavailable " ) ;
autocomplete_add ( who_room_ac , " moderator " ) ;
autocomplete_add ( who_room_ac , " participant " ) ;
autocomplete_add ( who_room_ac , " visitor " ) ;
autocomplete_add ( who_room_ac , " owner " ) ;
autocomplete_add ( who_room_ac , " admin " ) ;
autocomplete_add ( who_room_ac , " member " ) ;
2014-03-29 22:58:48 +00:00
2013-07-14 23:58:02 +03:00
bookmark_ac = autocomplete_new ( ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( bookmark_ac , " list " ) ;
2014-05-10 00:50:43 +01:00
autocomplete_add ( bookmark_ac , " add " ) ;
autocomplete_add ( bookmark_ac , " update " ) ;
2013-08-26 03:29:50 +03:00
autocomplete_add ( bookmark_ac , " remove " ) ;
2014-05-10 00:50:43 +01:00
autocomplete_add ( bookmark_ac , " join " ) ;
2014-03-29 22:58:48 +00:00
2014-05-11 00:17:10 +01:00
bookmark_property_ac = autocomplete_new ( ) ;
autocomplete_add ( bookmark_property_ac , " nick " ) ;
autocomplete_add ( bookmark_property_ac , " password " ) ;
autocomplete_add ( bookmark_property_ac , " autojoin " ) ;
2014-01-12 00:10:16 +00:00
otr_ac = autocomplete_new ( ) ;
autocomplete_add ( otr_ac , " gen " ) ;
autocomplete_add ( otr_ac , " start " ) ;
autocomplete_add ( otr_ac , " end " ) ;
autocomplete_add ( otr_ac , " myfp " ) ;
autocomplete_add ( otr_ac , " theirfp " ) ;
2014-01-12 01:20:22 +00:00
autocomplete_add ( otr_ac , " trust " ) ;
autocomplete_add ( otr_ac , " untrust " ) ;
2014-04-26 22:08:53 +01:00
autocomplete_add ( otr_ac , " secret " ) ;
2014-01-13 20:17:45 +00:00
autocomplete_add ( otr_ac , " log " ) ;
2014-02-11 23:19:09 +00:00
autocomplete_add ( otr_ac , " libver " ) ;
2014-04-23 00:01:18 +01:00
autocomplete_add ( otr_ac , " policy " ) ;
2014-04-30 23:59:40 +01:00
autocomplete_add ( otr_ac , " question " ) ;
autocomplete_add ( otr_ac , " answer " ) ;
2015-08-26 01:24:53 +01:00
autocomplete_add ( otr_ac , " char " ) ;
2014-01-13 20:17:45 +00:00
otr_log_ac = autocomplete_new ( ) ;
autocomplete_add ( otr_log_ac , " on " ) ;
autocomplete_add ( otr_log_ac , " off " ) ;
autocomplete_add ( otr_log_ac , " redact " ) ;
2014-01-12 00:10:16 +00:00
2014-04-23 00:01:18 +01:00
otr_policy_ac = autocomplete_new ( ) ;
autocomplete_add ( otr_policy_ac , " manual " ) ;
autocomplete_add ( otr_policy_ac , " opportunistic " ) ;
autocomplete_add ( otr_policy_ac , " always " ) ;
2014-01-18 23:05:35 +00:00
connect_property_ac = autocomplete_new ( ) ;
autocomplete_add ( connect_property_ac , " server " ) ;
autocomplete_add ( connect_property_ac , " port " ) ;
2015-10-18 03:06:23 +01:00
autocomplete_add ( connect_property_ac , " tls " ) ;
tls_property_ac = autocomplete_new ( ) ;
autocomplete_add ( tls_property_ac , " force " ) ;
autocomplete_add ( tls_property_ac , " allow " ) ;
autocomplete_add ( tls_property_ac , " disable " ) ;
2014-01-18 23:05:35 +00:00
2014-03-05 20:57:59 +00:00
join_property_ac = autocomplete_new ( ) ;
autocomplete_add ( join_property_ac , " nick " ) ;
2014-03-16 18:12:16 +00:00
autocomplete_add ( join_property_ac , " password " ) ;
2014-03-05 20:57:59 +00:00
2014-01-21 00:28:56 +00:00
statuses_ac = autocomplete_new ( ) ;
autocomplete_add ( statuses_ac , " console " ) ;
autocomplete_add ( statuses_ac , " chat " ) ;
autocomplete_add ( statuses_ac , " muc " ) ;
2014-03-15 22:25:15 +00:00
statuses_setting_ac = autocomplete_new ( ) ;
autocomplete_add ( statuses_setting_ac , " all " ) ;
autocomplete_add ( statuses_setting_ac , " online " ) ;
autocomplete_add ( statuses_setting_ac , " none " ) ;
2014-01-21 00:28:56 +00:00
2014-01-23 19:56:33 +00:00
alias_ac = autocomplete_new ( ) ;
autocomplete_add ( alias_ac , " add " ) ;
autocomplete_add ( alias_ac , " remove " ) ;
autocomplete_add ( alias_ac , " list " ) ;
2014-09-03 00:36:42 +01:00
room_ac = autocomplete_new ( ) ;
2014-09-11 00:01:44 +01:00
autocomplete_add ( room_ac , " accept " ) ;
autocomplete_add ( room_ac , " destroy " ) ;
2014-09-03 00:36:42 +01:00
autocomplete_add ( room_ac , " config " ) ;
2014-10-12 00:43:58 +01:00
affiliation_ac = autocomplete_new ( ) ;
autocomplete_add ( affiliation_ac , " owner " ) ;
autocomplete_add ( affiliation_ac , " admin " ) ;
autocomplete_add ( affiliation_ac , " member " ) ;
autocomplete_add ( affiliation_ac , " none " ) ;
autocomplete_add ( affiliation_ac , " outcast " ) ;
role_ac = autocomplete_new ( ) ;
autocomplete_add ( role_ac , " moderator " ) ;
autocomplete_add ( role_ac , " participant " ) ;
autocomplete_add ( role_ac , " visitor " ) ;
autocomplete_add ( role_ac , " none " ) ;
privilege_cmd_ac = autocomplete_new ( ) ;
autocomplete_add ( privilege_cmd_ac , " list " ) ;
autocomplete_add ( privilege_cmd_ac , " set " ) ;
2014-10-04 23:58:54 +01:00
2014-10-11 23:13:48 +01:00
subject_ac = autocomplete_new ( ) ;
autocomplete_add ( subject_ac , " set " ) ;
2015-10-29 21:21:41 +00:00
autocomplete_add ( subject_ac , " edit " ) ;
2015-10-29 21:02:46 +00:00
autocomplete_add ( subject_ac , " prepend " ) ;
2015-10-29 20:55:37 +00:00
autocomplete_add ( subject_ac , " append " ) ;
2014-10-11 23:13:48 +01:00
autocomplete_add ( subject_ac , " clear " ) ;
2014-10-05 03:05:46 +01:00
2014-09-15 21:33:25 +01:00
form_ac = autocomplete_new ( ) ;
autocomplete_add ( form_ac , " submit " ) ;
autocomplete_add ( form_ac , " cancel " ) ;
2014-09-15 22:51:53 +01:00
autocomplete_add ( form_ac , " show " ) ;
2014-09-16 20:52:38 +01:00
autocomplete_add ( form_ac , " help " ) ;
2014-09-03 00:36:42 +01:00
2014-10-19 01:01:31 +01:00
form_field_multi_ac = autocomplete_new ( ) ;
autocomplete_add ( form_field_multi_ac , " add " ) ;
autocomplete_add ( form_field_multi_ac , " remove " ) ;
2014-10-09 21:42:09 +01:00
occupants_ac = autocomplete_new ( ) ;
autocomplete_add ( occupants_ac , " show " ) ;
autocomplete_add ( occupants_ac , " hide " ) ;
2014-10-09 22:39:57 +01:00
autocomplete_add ( occupants_ac , " default " ) ;
2014-11-15 23:47:27 +00:00
autocomplete_add ( occupants_ac , " size " ) ;
2014-10-09 22:39:57 +01:00
occupants_default_ac = autocomplete_new ( ) ;
autocomplete_add ( occupants_default_ac , " show " ) ;
autocomplete_add ( occupants_default_ac , " hide " ) ;
2014-10-09 21:42:09 +01:00
2015-04-12 02:14:37 +01:00
occupants_show_ac = autocomplete_new ( ) ;
autocomplete_add ( occupants_show_ac , " jid " ) ;
2014-11-16 00:40:54 +00:00
time_ac = autocomplete_new ( ) ;
2015-09-30 22:34:27 +01:00
autocomplete_add ( time_ac , " console " ) ;
autocomplete_add ( time_ac , " chat " ) ;
autocomplete_add ( time_ac , " muc " ) ;
autocomplete_add ( time_ac , " mucconfig " ) ;
autocomplete_add ( time_ac , " private " ) ;
autocomplete_add ( time_ac , " xml " ) ;
2015-03-10 23:35:08 +00:00
autocomplete_add ( time_ac , " statusbar " ) ;
2015-09-29 23:30:23 +01:00
autocomplete_add ( time_ac , " lastactivity " ) ;
2015-03-10 23:35:08 +00:00
2015-05-29 20:49:28 -05:00
time_format_ac = autocomplete_new ( ) ;
autocomplete_add ( time_format_ac , " set " ) ;
autocomplete_add ( time_format_ac , " off " ) ;
2014-11-16 00:40:54 +00:00
2014-12-04 00:16:42 +00:00
resource_ac = autocomplete_new ( ) ;
autocomplete_add ( resource_ac , " set " ) ;
autocomplete_add ( resource_ac , " off " ) ;
2015-01-10 19:10:10 +00:00
autocomplete_add ( resource_ac , " title " ) ;
autocomplete_add ( resource_ac , " message " ) ;
2014-12-04 00:16:42 +00:00
2015-01-12 23:41:15 +00:00
inpblock_ac = autocomplete_new ( ) ;
autocomplete_add ( inpblock_ac , " timeout " ) ;
autocomplete_add ( inpblock_ac , " dynamic " ) ;
2015-03-19 22:57:51 +00:00
receipts_ac = autocomplete_new ( ) ;
autocomplete_add ( receipts_ac , " send " ) ;
autocomplete_add ( receipts_ac , " request " ) ;
2015-03-22 00:12:14 +00:00
pgp_ac = autocomplete_new ( ) ;
autocomplete_add ( pgp_ac , " keys " ) ;
2015-08-25 22:45:51 +01:00
autocomplete_add ( pgp_ac , " contacts " ) ;
2015-06-23 23:29:10 +01:00
autocomplete_add ( pgp_ac , " setkey " ) ;
2015-03-22 00:29:57 +00:00
autocomplete_add ( pgp_ac , " libver " ) ;
2015-06-20 23:49:24 +01:00
autocomplete_add ( pgp_ac , " start " ) ;
2015-06-21 20:20:28 +01:00
autocomplete_add ( pgp_ac , " end " ) ;
2015-06-21 21:42:58 +01:00
autocomplete_add ( pgp_ac , " log " ) ;
2015-08-26 01:24:53 +01:00
autocomplete_add ( pgp_ac , " char " ) ;
2015-06-21 21:42:58 +01:00
pgp_log_ac = autocomplete_new ( ) ;
autocomplete_add ( pgp_log_ac , " on " ) ;
autocomplete_add ( pgp_log_ac , " off " ) ;
autocomplete_add ( pgp_log_ac , " redact " ) ;
2015-09-22 21:42:05 +01:00
tls_ac = autocomplete_new ( ) ;
autocomplete_add ( tls_ac , " allow " ) ;
2015-09-22 22:44:18 +01:00
autocomplete_add ( tls_ac , " always " ) ;
2015-09-22 21:42:05 +01:00
autocomplete_add ( tls_ac , " deny " ) ;
2015-11-09 23:31:21 +00:00
autocomplete_add ( tls_ac , " cert " ) ;
2015-11-10 23:26:19 +00:00
autocomplete_add ( tls_ac , " trust " ) ;
2015-09-24 00:43:41 +01:00
autocomplete_add ( tls_ac , " trusted " ) ;
2015-09-24 01:06:53 +01:00
autocomplete_add ( tls_ac , " revoke " ) ;
2015-09-23 20:37:41 +01:00
autocomplete_add ( tls_ac , " certpath " ) ;
2015-10-14 00:46:16 +01:00
autocomplete_add ( tls_ac , " show " ) ;
2015-09-23 20:37:41 +01:00
tls_certpath_ac = autocomplete_new ( ) ;
autocomplete_add ( tls_certpath_ac , " set " ) ;
autocomplete_add ( tls_certpath_ac , " clear " ) ;
2015-10-15 23:57:52 +01:00
script_ac = autocomplete_new ( ) ;
autocomplete_add ( script_ac , " run " ) ;
autocomplete_add ( script_ac , " list " ) ;
autocomplete_add ( script_ac , " show " ) ;
2015-10-17 23:14:55 +01:00
script_show_ac = NULL ;
2015-12-29 23:32:32 +00:00
console_ac = autocomplete_new ( ) ;
autocomplete_add ( console_ac , " muc " ) ;
console_muc_ac = autocomplete_new ( ) ;
autocomplete_add ( console_muc_ac , " all " ) ;
autocomplete_add ( console_muc_ac , " first " ) ;
autocomplete_add ( console_muc_ac , " none " ) ;
2016-01-01 19:50:13 +00:00
autoping_ac = autocomplete_new ( ) ;
autocomplete_add ( autoping_ac , " set " ) ;
autocomplete_add ( autoping_ac , " timeout " ) ;
2012-05-01 00:24:31 +01:00
}
2012-10-22 00:29:39 +01:00
void
2013-12-15 16:10:32 +00:00
cmd_uninit ( void )
2012-10-22 00:29:39 +01:00
{
2013-01-25 01:11:49 +00:00
autocomplete_free ( commands_ac ) ;
2014-10-04 22:43:22 +01:00
autocomplete_free ( who_room_ac ) ;
autocomplete_free ( who_roster_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_free ( help_ac ) ;
2015-07-27 23:55:04 +01:00
autocomplete_free ( help_commands_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_free ( notify_ac ) ;
2015-11-29 00:08:49 +00:00
autocomplete_free ( notify_chat_ac ) ;
2014-05-24 16:46:05 +01:00
autocomplete_free ( notify_room_ac ) ;
2014-05-24 21:13:33 +01:00
autocomplete_free ( notify_typing_ac ) ;
2015-11-23 23:43:53 +00:00
autocomplete_free ( notify_trigger_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_free ( sub_ac ) ;
2013-08-24 00:30:54 +03:00
autocomplete_free ( titlebar_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_free ( log_ac ) ;
autocomplete_free ( prefs_ac ) ;
autocomplete_free ( autoaway_ac ) ;
autocomplete_free ( autoaway_mode_ac ) ;
2015-09-27 23:08:30 +01:00
autocomplete_free ( autoaway_presence_ac ) ;
2013-12-08 21:49:34 +00:00
autocomplete_free ( autoconnect_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_free ( theme_ac ) ;
2014-09-26 00:48:48 +01:00
autocomplete_free ( theme_load_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_free ( account_ac ) ;
2013-12-10 22:11:48 +00:00
autocomplete_free ( account_set_ac ) ;
autocomplete_free ( account_clear_ac ) ;
2014-11-27 12:07:18 -06:00
autocomplete_free ( account_default_ac ) ;
2015-08-03 00:33:16 +01:00
autocomplete_free ( account_status_ac ) ;
2013-03-14 20:50:09 +00:00
autocomplete_free ( disco_ac ) ;
2013-05-16 22:49:35 +01:00
autocomplete_free ( close_ac ) ;
2013-05-17 00:33:00 +01:00
autocomplete_free ( wins_ac ) ;
2013-05-19 02:30:03 +01:00
autocomplete_free ( roster_ac ) ;
2015-11-22 17:45:38 +00:00
autocomplete_free ( roster_header_ac ) ;
autocomplete_free ( roster_contact_ac ) ;
2015-11-22 16:37:05 +00:00
autocomplete_free ( roster_resource_ac ) ;
2015-11-22 17:45:38 +00:00
autocomplete_free ( roster_presence_ac ) ;
2015-11-19 23:21:51 +00:00
autocomplete_free ( roster_char_ac ) ;
2015-11-22 17:45:38 +00:00
autocomplete_free ( roster_show_ac ) ;
2014-11-11 00:30:29 +00:00
autocomplete_free ( roster_by_ac ) ;
2015-11-17 23:37:33 +00:00
autocomplete_free ( roster_order_ac ) ;
2015-07-08 20:51:39 +01:00
autocomplete_free ( roster_remove_all_ac ) ;
2013-06-02 17:51:38 +01:00
autocomplete_free ( group_ac ) ;
2014-03-29 22:58:48 +00:00
autocomplete_free ( bookmark_ac ) ;
2014-05-11 00:17:10 +01:00
autocomplete_free ( bookmark_property_ac ) ;
2014-01-12 00:10:16 +00:00
autocomplete_free ( otr_ac ) ;
2014-01-13 20:17:45 +00:00
autocomplete_free ( otr_log_ac ) ;
2014-04-23 00:01:18 +01:00
autocomplete_free ( otr_policy_ac ) ;
2014-01-18 23:05:35 +00:00
autocomplete_free ( connect_property_ac ) ;
2015-10-18 03:06:23 +01:00
autocomplete_free ( tls_property_ac ) ;
2014-01-21 00:28:56 +00:00
autocomplete_free ( statuses_ac ) ;
2014-03-15 22:25:15 +00:00
autocomplete_free ( statuses_setting_ac ) ;
2014-01-23 19:56:33 +00:00
autocomplete_free ( alias_ac ) ;
2014-01-25 01:00:51 +00:00
autocomplete_free ( aliases_ac ) ;
2014-03-05 20:57:59 +00:00
autocomplete_free ( join_property_ac ) ;
2014-09-03 00:36:42 +01:00
autocomplete_free ( room_ac ) ;
2014-10-12 00:43:58 +01:00
autocomplete_free ( affiliation_ac ) ;
autocomplete_free ( role_ac ) ;
autocomplete_free ( privilege_cmd_ac ) ;
2014-10-11 23:13:48 +01:00
autocomplete_free ( subject_ac ) ;
2014-09-15 21:33:25 +01:00
autocomplete_free ( form_ac ) ;
2014-10-19 01:01:31 +01:00
autocomplete_free ( form_field_multi_ac ) ;
2014-10-09 21:42:09 +01:00
autocomplete_free ( occupants_ac ) ;
2014-10-09 22:39:57 +01:00
autocomplete_free ( occupants_default_ac ) ;
2015-04-12 02:14:37 +01:00
autocomplete_free ( occupants_show_ac ) ;
2014-11-16 00:40:54 +00:00
autocomplete_free ( time_ac ) ;
2015-05-29 20:49:28 -05:00
autocomplete_free ( time_format_ac ) ;
2014-12-04 00:16:42 +00:00
autocomplete_free ( resource_ac ) ;
2015-01-12 23:41:15 +00:00
autocomplete_free ( inpblock_ac ) ;
2015-03-19 22:57:51 +00:00
autocomplete_free ( receipts_ac ) ;
2015-03-22 00:12:14 +00:00
autocomplete_free ( pgp_ac ) ;
2015-06-21 21:42:58 +01:00
autocomplete_free ( pgp_log_ac ) ;
2015-09-22 21:42:05 +01:00
autocomplete_free ( tls_ac ) ;
2015-09-23 20:37:41 +01:00
autocomplete_free ( tls_certpath_ac ) ;
2015-10-15 23:57:52 +01:00
autocomplete_free ( script_ac ) ;
2015-10-17 23:14:55 +01:00
autocomplete_free ( script_show_ac ) ;
2015-12-29 23:32:32 +00:00
autocomplete_free ( console_ac ) ;
autocomplete_free ( console_muc_ac ) ;
2016-01-01 19:50:13 +00:00
autocomplete_free ( autoping_ac ) ;
2012-10-22 00:29:39 +01:00
}
2014-01-25 01:39:12 +00:00
gboolean
cmd_exists ( char * cmd )
{
if ( commands_ac = = NULL ) {
return FALSE ;
} else {
return autocomplete_contains ( commands_ac , cmd ) ;
}
}
2014-01-23 23:53:20 +00:00
void
cmd_autocomplete_add ( char * value )
{
2015-05-04 22:16:39 +01:00
if ( commands_ac ) {
2014-01-23 23:53:20 +00:00
autocomplete_add ( commands_ac , value ) ;
}
}
2014-10-18 23:16:19 +01:00
void
cmd_autocomplete_add_form_fields ( DataForm * form )
{
2015-05-05 00:13:41 +01:00
if ( form = = NULL ) {
return ;
}
GSList * fields = autocomplete_create_list ( form - > tag_ac ) ;
GSList * curr_field = fields ;
while ( curr_field ) {
GString * field_str = g_string_new ( " / " ) ;
g_string_append ( field_str , curr_field - > data ) ;
cmd_autocomplete_add ( field_str - > str ) ;
g_string_free ( field_str , TRUE ) ;
curr_field = g_slist_next ( curr_field ) ;
2014-10-18 23:16:19 +01:00
}
2015-05-05 00:13:41 +01:00
g_slist_free_full ( fields , free ) ;
2014-10-18 23:16:19 +01:00
}
void
cmd_autocomplete_remove_form_fields ( DataForm * form )
{
2015-05-05 00:13:41 +01:00
if ( form = = NULL ) {
return ;
}
GSList * fields = autocomplete_create_list ( form - > tag_ac ) ;
GSList * curr_field = fields ;
while ( curr_field ) {
GString * field_str = g_string_new ( " / " ) ;
g_string_append ( field_str , curr_field - > data ) ;
cmd_autocomplete_remove ( field_str - > str ) ;
g_string_free ( field_str , TRUE ) ;
curr_field = g_slist_next ( curr_field ) ;
2014-10-18 23:16:19 +01:00
}
2015-05-05 00:13:41 +01:00
g_slist_free_full ( fields , free ) ;
2014-10-18 23:16:19 +01:00
}
2014-01-23 23:53:20 +00:00
void
cmd_autocomplete_remove ( char * value )
{
2015-05-04 22:16:39 +01:00
if ( commands_ac ) {
2014-01-23 23:53:20 +00:00
autocomplete_remove ( commands_ac , value ) ;
}
}
2014-01-25 01:00:51 +00:00
void
cmd_alias_add ( char * value )
{
2015-05-04 22:16:39 +01:00
if ( aliases_ac ) {
2014-01-25 01:00:51 +00:00
autocomplete_add ( aliases_ac , value ) ;
}
}
void
cmd_alias_remove ( char * value )
{
2015-05-04 22:16:39 +01:00
if ( aliases_ac ) {
2014-01-25 01:00:51 +00:00
autocomplete_remove ( aliases_ac , value ) ;
}
}
2012-08-23 00:44:14 +01:00
// Command autocompletion functions
2015-01-16 22:50:40 +00:00
char *
2015-10-25 00:25:10 +01:00
cmd_autocomplete ( ProfWin * window , const char * const input )
2012-10-21 23:37:20 +01:00
{
2012-12-02 00:38:10 +00:00
// autocomplete command
2015-01-16 22:50:40 +00:00
if ( ( strncmp ( input , " / " , 1 ) = = 0 ) & & ( ! str_contains ( input , strlen ( input ) , ' ' ) ) ) {
2014-04-26 00:36:36 +01:00
char * found = NULL ;
2015-01-16 22:50:40 +00:00
found = autocomplete_complete ( commands_ac , input , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-01-16 22:50:40 +00:00
return found ;
2012-10-28 01:42:26 +01:00
}
2012-08-23 00:44:14 +01:00
2012-12-02 00:38:10 +00:00
// autocomplete parameters
} else {
2015-06-16 22:59:08 +01:00
char * found = _cmd_complete_parameters ( window , input ) ;
2015-01-16 22:50:40 +00:00
if ( found ) {
return found ;
}
2012-12-02 00:38:10 +00:00
}
2015-01-16 22:50:40 +00:00
return NULL ;
2012-10-27 22:22:30 +01:00
}
void
2015-06-16 22:59:08 +01:00
cmd_reset_autocomplete ( ProfWin * window )
2012-10-27 22:22:30 +01:00
{
2016-01-05 00:06:50 +00:00
jabber_conn_status_t conn_status = jabber_get_connection_status ( ) ;
if ( conn_status = = JABBER_CONNECTED ) {
roster_reset_search_attempts ( ) ;
if ( window - > type = = WIN_CHAT ) {
ProfChatWin * chatwin = ( ProfChatWin * ) window ;
assert ( chatwin - > memcheck = = PROFCHATWIN_MEMCHECK ) ;
PContact contact = roster_get_contact ( chatwin - > barejid ) ;
if ( contact ) {
p_contact_resource_ac_reset ( contact ) ;
}
}
}
2014-09-28 22:09:20 +01:00
muc_invites_reset_ac ( ) ;
2012-12-10 00:53:57 +00:00
accounts_reset_all_search ( ) ;
accounts_reset_enabled_search ( ) ;
2015-09-24 01:06:53 +01:00
tlscerts_reset_ac ( ) ;
2012-10-28 01:42:26 +01:00
prefs_reset_boolean_choice ( ) ;
2013-05-05 23:42:11 +01:00
presence_reset_sub_request_search ( ) ;
2015-08-25 23:44:03 +01:00
# ifdef HAVE_LIBGPGME
p_gpg_autocomplete_key_reset ( ) ;
# endif
2013-01-25 01:11:49 +00:00
autocomplete_reset ( help_ac ) ;
2015-07-27 23:55:04 +01:00
autocomplete_reset ( help_commands_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_reset ( notify_ac ) ;
2015-11-29 00:08:49 +00:00
autocomplete_reset ( notify_chat_ac ) ;
2014-05-24 16:46:05 +01:00
autocomplete_reset ( notify_room_ac ) ;
2014-05-24 21:13:33 +01:00
autocomplete_reset ( notify_typing_ac ) ;
2015-11-23 23:43:53 +00:00
autocomplete_reset ( notify_trigger_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_reset ( sub_ac ) ;
2013-01-11 00:48:58 +00:00
2014-10-04 22:43:22 +01:00
autocomplete_reset ( who_room_ac ) ;
autocomplete_reset ( who_roster_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_reset ( prefs_ac ) ;
autocomplete_reset ( log_ac ) ;
autocomplete_reset ( commands_ac ) ;
autocomplete_reset ( autoaway_ac ) ;
autocomplete_reset ( autoaway_mode_ac ) ;
2015-09-27 23:08:30 +01:00
autocomplete_reset ( autoaway_presence_ac ) ;
2013-12-08 21:49:34 +00:00
autocomplete_reset ( autoconnect_ac ) ;
2013-01-25 01:11:49 +00:00
autocomplete_reset ( theme_ac ) ;
2015-05-04 22:16:39 +01:00
if ( theme_load_ac ) {
2015-02-09 21:21:22 +00:00
autocomplete_free ( theme_load_ac ) ;
2012-12-09 00:46:14 +00:00
theme_load_ac = NULL ;
}
2013-01-25 01:11:49 +00:00
autocomplete_reset ( account_ac ) ;
2013-12-10 22:11:48 +00:00
autocomplete_reset ( account_set_ac ) ;
autocomplete_reset ( account_clear_ac ) ;
2014-11-27 12:07:18 -06:00
autocomplete_reset ( account_default_ac ) ;
2015-08-03 00:33:16 +01:00
autocomplete_reset ( account_status_ac ) ;
2013-03-14 20:50:09 +00:00
autocomplete_reset ( disco_ac ) ;
2013-05-16 22:49:35 +01:00
autocomplete_reset ( close_ac ) ;
2013-05-17 00:33:00 +01:00
autocomplete_reset ( wins_ac ) ;
2013-05-19 02:30:03 +01:00
autocomplete_reset ( roster_ac ) ;
2015-11-22 17:45:38 +00:00
autocomplete_reset ( roster_header_ac ) ;
autocomplete_reset ( roster_contact_ac ) ;
2015-11-22 16:37:05 +00:00
autocomplete_reset ( roster_resource_ac ) ;
2015-11-22 17:45:38 +00:00
autocomplete_reset ( roster_presence_ac ) ;
2015-11-19 23:21:51 +00:00
autocomplete_reset ( roster_char_ac ) ;
2015-11-22 17:45:38 +00:00
autocomplete_reset ( roster_show_ac ) ;
2014-11-11 00:30:29 +00:00
autocomplete_reset ( roster_by_ac ) ;
2015-11-17 23:37:33 +00:00
autocomplete_reset ( roster_order_ac ) ;
2015-07-08 20:51:39 +01:00
autocomplete_reset ( roster_remove_all_ac ) ;
2013-06-02 17:51:38 +01:00
autocomplete_reset ( group_ac ) ;
2015-01-12 00:43:42 +00:00
autocomplete_reset ( titlebar_ac ) ;
2014-03-29 22:58:48 +00:00
autocomplete_reset ( bookmark_ac ) ;
2014-05-11 00:17:10 +01:00
autocomplete_reset ( bookmark_property_ac ) ;
2014-01-12 00:10:16 +00:00
autocomplete_reset ( otr_ac ) ;
2014-01-13 20:17:45 +00:00
autocomplete_reset ( otr_log_ac ) ;
2014-04-23 00:01:18 +01:00
autocomplete_reset ( otr_policy_ac ) ;
2014-01-18 23:05:35 +00:00
autocomplete_reset ( connect_property_ac ) ;
2015-10-18 03:06:23 +01:00
autocomplete_reset ( tls_property_ac ) ;
2014-01-21 00:28:56 +00:00
autocomplete_reset ( statuses_ac ) ;
2014-03-15 22:25:15 +00:00
autocomplete_reset ( statuses_setting_ac ) ;
2014-01-23 19:56:33 +00:00
autocomplete_reset ( alias_ac ) ;
2014-01-25 01:00:51 +00:00
autocomplete_reset ( aliases_ac ) ;
2014-03-05 20:57:59 +00:00
autocomplete_reset ( join_property_ac ) ;
2014-09-03 00:36:42 +01:00
autocomplete_reset ( room_ac ) ;
2014-10-12 00:43:58 +01:00
autocomplete_reset ( affiliation_ac ) ;
autocomplete_reset ( role_ac ) ;
autocomplete_reset ( privilege_cmd_ac ) ;
2014-10-11 23:13:48 +01:00
autocomplete_reset ( subject_ac ) ;
2014-09-15 21:33:25 +01:00
autocomplete_reset ( form_ac ) ;
2014-10-19 01:01:31 +01:00
autocomplete_reset ( form_field_multi_ac ) ;
2014-10-09 21:42:09 +01:00
autocomplete_reset ( occupants_ac ) ;
2014-10-09 22:39:57 +01:00
autocomplete_reset ( occupants_default_ac ) ;
2015-04-12 02:14:37 +01:00
autocomplete_reset ( occupants_show_ac ) ;
2014-11-16 00:40:54 +00:00
autocomplete_reset ( time_ac ) ;
2015-05-29 20:49:28 -05:00
autocomplete_reset ( time_format_ac ) ;
2014-12-04 00:16:42 +00:00
autocomplete_reset ( resource_ac ) ;
2015-01-12 23:41:15 +00:00
autocomplete_reset ( inpblock_ac ) ;
2015-03-19 22:57:51 +00:00
autocomplete_reset ( receipts_ac ) ;
2015-03-22 00:12:14 +00:00
autocomplete_reset ( pgp_ac ) ;
2015-06-21 21:42:58 +01:00
autocomplete_reset ( pgp_log_ac ) ;
2015-09-22 21:42:05 +01:00
autocomplete_reset ( tls_ac ) ;
2015-09-23 20:37:41 +01:00
autocomplete_reset ( tls_certpath_ac ) ;
2015-12-29 23:32:32 +00:00
autocomplete_reset ( console_ac ) ;
autocomplete_reset ( console_muc_ac ) ;
2016-01-01 19:50:13 +00:00
autocomplete_reset ( autoping_ac ) ;
2015-10-15 23:57:52 +01:00
autocomplete_reset ( script_ac ) ;
2015-10-17 23:14:55 +01:00
if ( script_show_ac ) {
autocomplete_free ( script_show_ac ) ;
script_show_ac = NULL ;
}
2014-09-17 22:51:52 +01:00
2015-06-16 22:59:08 +01:00
if ( window - > type = = WIN_MUC ) {
2015-06-17 19:49:55 +01:00
ProfMucWin * mucwin = ( ProfMucWin * ) window ;
assert ( mucwin - > memcheck = = PROFMUCWIN_MEMCHECK ) ;
2014-12-18 23:57:19 +00:00
muc_autocomplete_reset ( mucwin - > roomjid ) ;
muc_jid_autocomplete_reset ( mucwin - > roomjid ) ;
}
2015-06-16 22:59:08 +01:00
if ( window - > type = = WIN_MUC_CONFIG ) {
2015-06-17 19:49:55 +01:00
ProfMucConfWin * confwin = ( ProfMucConfWin * ) window ;
assert ( confwin - > memcheck = = PROFCONFWIN_MEMCHECK ) ;
2014-12-18 23:57:19 +00:00
if ( confwin - > form ) {
form_reset_autocompleters ( confwin - > form ) ;
}
}
2014-03-29 22:58:48 +00:00
bookmark_autocomplete_reset ( ) ;
2015-11-24 01:34:06 +00:00
prefs_reset_room_trigger_ac ( ) ;
2016-01-07 00:38:17 +00:00
win_reset_search_attempts ( ) ;
2012-10-27 22:22:30 +01:00
}
2015-07-27 01:06:10 +01:00
gboolean
2015-10-25 00:25:10 +01:00
cmd_valid_tag ( const char * const str )
2015-07-27 01:06:10 +01:00
{
2015-07-27 23:55:04 +01:00
return ( ( g_strcmp0 ( str , CMD_TAG_CHAT ) = = 0 ) | |
2015-07-27 01:06:10 +01:00
( g_strcmp0 ( str , CMD_TAG_GROUPCHAT ) = = 0 ) | |
2015-07-27 23:55:04 +01:00
( g_strcmp0 ( str , CMD_TAG_PRESENCE ) = = 0 ) | |
( g_strcmp0 ( str , CMD_TAG_ROSTER ) = = 0 ) | |
( g_strcmp0 ( str , CMD_TAG_DISCOVERY ) = = 0 ) | |
( g_strcmp0 ( str , CMD_TAG_CONNECTION ) = = 0 ) | |
( g_strcmp0 ( str , CMD_TAG_UI ) = = 0 ) ) ;
2015-07-27 01:06:10 +01:00
}
gboolean
2015-10-25 00:25:10 +01:00
cmd_has_tag ( Command * pcmd , const char * const tag )
2015-07-27 01:06:10 +01:00
{
int i = 0 ;
for ( i = 0 ; pcmd - > help . tags [ i ] ! = NULL ; i + + ) {
if ( g_strcmp0 ( tag , pcmd - > help . tags [ i ] ) = = 0 ) {
return TRUE ;
}
}
return FALSE ;
}
2015-01-15 20:34:45 +00:00
/*
* Take a line of input and process it , return TRUE if profanity is to
* continue , FALSE otherwise
*/
gboolean
2015-06-16 22:59:08 +01:00
cmd_process_input ( ProfWin * window , char * inp )
2015-01-15 20:34:45 +00:00
{
log_debug ( " Input received: %s " , inp ) ;
gboolean result = FALSE ;
2015-06-16 09:46:02 +02:00
g_strchomp ( inp ) ;
2015-01-15 20:34:45 +00:00
// just carry on if no input
if ( strlen ( inp ) = = 0 ) {
result = TRUE ;
// handle command if input starts with a '/'
} else if ( inp [ 0 ] = = ' / ' ) {
char * inp_cpy = strdup ( inp ) ;
char * command = strtok ( inp_cpy , " " ) ;
2015-06-16 22:59:08 +01:00
result = _cmd_execute ( window , command , inp ) ;
2015-01-15 20:34:45 +00:00
free ( inp_cpy ) ;
// call a default handler if input didn't start with '/'
} else {
2015-06-17 00:15:28 +01:00
result = cmd_execute_default ( window , inp ) ;
2015-01-15 20:34:45 +00:00
}
return result ;
}
2012-08-23 00:44:14 +01:00
// Command execution
2015-01-15 20:34:45 +00:00
void
2015-10-25 00:25:10 +01:00
cmd_execute_connect ( ProfWin * window , const char * const account )
2015-01-15 20:34:45 +00:00
{
2015-01-15 23:43:22 +00:00
GString * command = g_string_new ( " /connect " ) ;
g_string_append ( command , account ) ;
2015-06-16 22:59:08 +01:00
cmd_process_input ( window , command - > str ) ;
2015-01-15 23:43:22 +00:00
g_string_free ( command , TRUE ) ;
2015-01-15 20:34:45 +00:00
}
static gboolean
2015-10-25 00:25:10 +01:00
_cmd_execute ( ProfWin * window , const char * const command , const char * const inp )
2012-08-15 00:42:38 +01:00
{
2015-06-16 22:59:08 +01:00
if ( g_str_has_prefix ( command , " /field " ) & & window - > type = = WIN_MUC_CONFIG ) {
2014-10-19 03:27:34 +01:00
gboolean result = FALSE ;
gchar * * args = parse_args_with_freetext ( inp , 1 , 2 , & result ) ;
if ( ! result ) {
ui_current_print_formatted_line ( ' ! ' , 0 , " Invalid command, see /form help " ) ;
result = TRUE ;
} else {
gchar * * tokens = g_strsplit ( inp , " " , 2 ) ;
char * field = tokens [ 0 ] + 1 ;
2015-06-17 00:15:28 +01:00
result = cmd_form_field ( window , field , args ) ;
2014-10-19 03:27:34 +01:00
g_strfreev ( tokens ) ;
}
g_strfreev ( args ) ;
return result ;
}
2013-06-25 00:49:29 +01:00
Command * cmd = g_hash_table_lookup ( commands , command ) ;
2014-04-09 21:31:43 +01:00
gboolean result = FALSE ;
2012-10-21 20:02:20 +01:00
2015-05-04 22:16:39 +01:00
if ( cmd ) {
2014-04-09 21:31:43 +01:00
gchar * * args = cmd - > parser ( inp , cmd - > min_args , cmd - > max_args , & result ) ;
2014-04-09 21:38:42 +01:00
if ( result = = FALSE ) {
2015-07-26 02:05:53 +01:00
ui_invalid_command_usage ( cmd - > cmd , cmd - > setting_func ) ;
2012-11-18 02:40:49 +00:00
return TRUE ;
} else {
2015-07-26 02:28:45 +01:00
gboolean result = cmd - > func ( window , command , args ) ;
2012-11-18 02:40:49 +00:00
g_strfreev ( args ) ;
return result ;
}
2012-08-15 00:42:38 +01:00
} else {
2014-01-23 23:04:00 +00:00
gboolean ran_alias = FALSE ;
2015-06-16 22:59:08 +01:00
gboolean alias_result = cmd_execute_alias ( window , inp , & ran_alias ) ;
2014-01-23 23:04:00 +00:00
if ( ! ran_alias ) {
2015-06-17 00:15:28 +01:00
return cmd_execute_default ( window , inp ) ;
2014-01-23 23:04:00 +00:00
} else {
return alias_result ;
}
}
}
2015-10-25 00:25:10 +01:00
static char *
_cmd_complete_parameters ( ProfWin * window , const char * const input )
2012-10-28 01:08:04 +01:00
{
2013-06-02 19:56:35 +01:00
int i ;
char * result = NULL ;
2016-01-05 00:06:50 +00:00
jabber_conn_status_t conn_status = jabber_get_connection_status ( ) ;
2013-06-02 19:56:35 +01:00
// autocomplete boolean settings
gchar * boolean_choices [ ] = { " /beep " , " /intype " , " /states " , " /outtype " ,
2015-07-19 22:48:12 +01:00
" /flash " , " /splash " , " /chlog " , " /grlog " , " /history " , " /vercheck " ,
2015-10-14 22:09:18 +01:00
" /privileges " , " /presence " , " /wrap " , " /winstidy " , " /carbons " , " /encwarn " , " /lastactivity " } ;
2013-06-02 19:56:35 +01:00
for ( i = 0 ; i < ARRAY_SIZE ( boolean_choices ) ; i + + ) {
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_func ( input , boolean_choices [ i ] , prefs_autocomplete_boolean_choice ) ;
if ( result ) {
return result ;
2013-06-02 19:56:35 +01:00
}
}
2012-10-28 01:08:04 +01:00
2013-06-02 19:56:35 +01:00
// autocomplete nickname in chat rooms
2015-06-16 22:59:08 +01:00
if ( window - > type = = WIN_MUC ) {
2015-06-17 19:49:55 +01:00
ProfMucWin * mucwin = ( ProfMucWin * ) window ;
assert ( mucwin - > memcheck = = PROFMUCWIN_MEMCHECK ) ;
2014-12-18 23:57:19 +00:00
Autocomplete nick_ac = muc_roster_ac ( mucwin - > roomjid ) ;
2015-01-16 22:50:40 +00:00
if ( nick_ac ) {
2013-06-02 19:56:35 +01:00
gchar * nick_choices [ ] = { " /msg " , " /info " , " /caps " , " /status " , " /software " } ;
2015-01-14 17:14:00 -06:00
// Remove quote character before and after names when doing autocomplete
2015-02-08 20:59:51 +00:00
char * unquoted = strip_arg_quotes ( input ) ;
2013-06-02 19:56:35 +01:00
for ( i = 0 ; i < ARRAY_SIZE ( nick_choices ) ; i + + ) {
2015-02-08 20:34:20 +00:00
result = autocomplete_param_with_ac ( unquoted , nick_choices [ i ] , nick_ac , TRUE ) ;
2015-01-16 22:50:40 +00:00
if ( result ) {
2015-02-08 20:34:20 +00:00
free ( unquoted ) ;
2015-01-16 22:50:40 +00:00
return result ;
2013-06-02 19:56:35 +01:00
}
}
2015-02-08 20:34:20 +00:00
free ( unquoted ) ;
2013-01-11 00:48:58 +00:00
}
2013-06-02 19:56:35 +01:00
2014-05-17 18:19:30 -07:00
// otherwise autocomplete using roster
2016-01-05 00:06:50 +00:00
} else if ( conn_status = = JABBER_CONNECTED ) {
2013-06-02 19:56:35 +01:00
gchar * contact_choices [ ] = { " /msg " , " /info " , " /status " } ;
2015-01-14 17:14:00 -06:00
// Remove quote character before and after names when doing autocomplete
2015-02-08 20:59:51 +00:00
char * unquoted = strip_arg_quotes ( input ) ;
2013-06-02 19:56:35 +01:00
for ( i = 0 ; i < ARRAY_SIZE ( contact_choices ) ; i + + ) {
2015-02-08 20:34:20 +00:00
result = autocomplete_param_with_func ( unquoted , contact_choices [ i ] , roster_contact_autocomplete ) ;
2015-01-16 22:50:40 +00:00
if ( result ) {
2015-02-08 20:34:20 +00:00
free ( unquoted ) ;
2015-01-16 22:50:40 +00:00
return result ;
2013-06-02 19:56:35 +01:00
}
}
2015-02-08 20:34:20 +00:00
free ( unquoted ) ;
2013-06-02 19:56:35 +01:00
2014-09-04 01:08:10 +01:00
gchar * resource_choices [ ] = { " /caps " , " /software " , " /ping " } ;
2013-06-02 19:56:35 +01:00
for ( i = 0 ; i < ARRAY_SIZE ( resource_choices ) ; i + + ) {
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_func ( input , resource_choices [ i ] , roster_fulljid_autocomplete ) ;
if ( result ) {
return result ;
2013-06-02 19:56:35 +01:00
}
}
}
2016-01-05 00:06:50 +00:00
if ( conn_status = = JABBER_CONNECTED ) {
result = autocomplete_param_with_func ( input , " /invite " , roster_contact_autocomplete ) ;
if ( result ) {
return result ;
}
2013-06-02 19:56:35 +01:00
}
gchar * invite_choices [ ] = { " /decline " , " /join " } ;
for ( i = 0 ; i < ARRAY_SIZE ( invite_choices ) ; i + + ) {
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_func ( input , invite_choices [ i ] , muc_invites_find ) ;
if ( result ) {
return result ;
2013-06-02 19:56:35 +01:00
}
}
2016-01-01 19:50:13 +00:00
gchar * cmds [ ] = { " /prefs " , " /disco " , " /close " , " /room " , " /autoping " } ;
Autocomplete completers [ ] = { prefs_ac , disco_ac , close_ac , room_ac , autoping_ac } ;
2013-06-02 19:56:35 +01:00
2013-06-24 21:38:02 +01:00
for ( i = 0 ; i < ARRAY_SIZE ( cmds ) ; i + + ) {
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , cmds [ i ] , completers [ i ] , TRUE ) ;
if ( result ) {
return result ;
2013-06-02 19:56:35 +01:00
}
}
2014-05-14 21:54:38 +01:00
GHashTable * ac_funcs = g_hash_table_new ( g_str_hash , g_str_equal ) ;
2015-07-27 23:55:04 +01:00
g_hash_table_insert ( ac_funcs , " /help " , _help_autocomplete ) ;
2014-05-14 21:54:38 +01:00
g_hash_table_insert ( ac_funcs , " /who " , _who_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /sub " , _sub_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /notify " , _notify_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /autoaway " , _autoaway_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /theme " , _theme_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /log " , _log_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /account " , _account_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /roster " , _roster_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /group " , _group_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /bookmark " , _bookmark_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /autoconnect " , _autoconnect_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /otr " , _otr_autocomplete ) ;
2015-06-20 23:49:24 +01:00
g_hash_table_insert ( ac_funcs , " /pgp " , _pgp_autocomplete ) ;
2014-05-14 21:54:38 +01:00
g_hash_table_insert ( ac_funcs , " /connect " , _connect_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /statuses " , _statuses_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /alias " , _alias_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /join " , _join_autocomplete ) ;
2014-10-19 01:23:06 +01:00
g_hash_table_insert ( ac_funcs , " /form " , _form_autocomplete ) ;
2014-10-09 22:39:57 +01:00
g_hash_table_insert ( ac_funcs , " /occupants " , _occupants_autocomplete ) ;
2014-10-10 13:35:50 +01:00
g_hash_table_insert ( ac_funcs , " /kick " , _kick_autocomplete ) ;
2014-10-11 22:43:54 +01:00
g_hash_table_insert ( ac_funcs , " /ban " , _ban_autocomplete ) ;
2014-10-12 00:43:58 +01:00
g_hash_table_insert ( ac_funcs , " /affiliation " , _affiliation_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /role " , _role_autocomplete ) ;
2014-12-04 00:16:42 +00:00
g_hash_table_insert ( ac_funcs , " /resource " , _resource_autocomplete ) ;
2015-01-12 00:43:42 +00:00
g_hash_table_insert ( ac_funcs , " /titlebar " , _titlebar_autocomplete ) ;
2015-01-12 23:41:15 +00:00
g_hash_table_insert ( ac_funcs , " /inpblock " , _inpblock_autocomplete ) ;
2015-03-10 23:35:08 +00:00
g_hash_table_insert ( ac_funcs , " /time " , _time_autocomplete ) ;
2015-03-19 22:57:51 +00:00
g_hash_table_insert ( ac_funcs , " /receipts " , _receipts_autocomplete ) ;
2015-09-19 23:31:04 +01:00
g_hash_table_insert ( ac_funcs , " /wins " , _wins_autocomplete ) ;
2015-09-23 20:37:41 +01:00
g_hash_table_insert ( ac_funcs , " /tls " , _tls_autocomplete ) ;
2015-10-17 23:14:55 +01:00
g_hash_table_insert ( ac_funcs , " /script " , _script_autocomplete ) ;
2015-12-29 23:32:32 +00:00
g_hash_table_insert ( ac_funcs , " /subject " , _subject_autocomplete ) ;
g_hash_table_insert ( ac_funcs , " /console " , _console_autocomplete ) ;
2016-01-07 00:38:17 +00:00
g_hash_table_insert ( ac_funcs , " /win " , _win_autocomplete ) ;
2014-05-14 21:54:38 +01:00
2015-01-16 22:50:40 +00:00
int len = strlen ( input ) ;
char parsed [ len + 1 ] ;
2014-05-14 21:54:38 +01:00
i = 0 ;
2015-01-16 22:50:40 +00:00
while ( i < len ) {
2014-05-14 21:54:38 +01:00
if ( input [ i ] = = ' ' ) {
break ;
} else {
parsed [ i ] = input [ i ] ;
}
i + + ;
}
parsed [ i ] = ' \0 ' ;
2015-06-16 22:59:08 +01:00
char * ( * ac_func ) ( ProfWin * , const char * const ) = g_hash_table_lookup ( ac_funcs , parsed ) ;
2015-05-04 22:16:39 +01:00
if ( ac_func ) {
2015-06-16 22:59:08 +01:00
result = ac_func ( window , input ) ;
2015-01-16 22:50:40 +00:00
if ( result ) {
2014-05-17 22:49:24 +01:00
g_hash_table_destroy ( ac_funcs ) ;
2015-01-16 22:50:40 +00:00
return result ;
2013-06-02 20:11:42 +01:00
}
2013-06-02 19:56:35 +01:00
}
2014-05-17 22:49:24 +01:00
g_hash_table_destroy ( ac_funcs ) ;
2013-06-02 19:56:35 +01:00
2014-10-19 01:09:53 +01:00
if ( g_str_has_prefix ( input , " /field " ) ) {
2015-06-16 22:59:08 +01:00
result = _form_field_autocomplete ( window , input ) ;
2015-01-16 22:50:40 +00:00
if ( result ) {
return result ;
2014-10-19 00:26:02 +01:00
}
}
2015-01-16 22:50:40 +00:00
return NULL ;
2012-10-28 01:08:04 +01:00
}
2015-10-25 00:25:10 +01:00
static char *
_sub_autocomplete ( ProfWin * window , const char * const input )
2012-02-18 23:09:21 +00:00
{
2013-12-15 16:10:32 +00:00
char * result = NULL ;
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_func ( input , " /sub allow " , presence_sub_request_find ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_func ( input , " /sub deny " , presence_sub_request_find ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /sub " , sub_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
2012-02-18 23:09:21 +00:00
}
2012-10-21 20:02:20 +01:00
2013-12-15 16:10:32 +00:00
return NULL ;
2012-02-18 23:09:21 +00:00
}
2015-10-25 00:25:10 +01:00
static char *
_who_autocomplete ( ProfWin * window , const char * const input )
2012-12-09 20:18:38 +00:00
{
2013-12-15 16:10:32 +00:00
char * result = NULL ;
2012-12-10 00:23:55 +00:00
2015-06-16 22:59:08 +01:00
if ( window - > type = = WIN_MUC ) {
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /who " , who_room_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
2012-12-10 00:23:55 +00:00
}
2014-10-04 22:43:22 +01:00
} else {
2016-01-05 00:06:50 +00:00
jabber_conn_status_t conn_status = jabber_get_connection_status ( ) ;
if ( conn_status = = JABBER_CONNECTED ) {
int i = 0 ;
gchar * group_commands [ ] = { " /who any " , " /who online " , " /who offline " ,
" /who chat " , " /who away " , " /who xa " , " /who dnd " , " /who available " ,
" /who unavailable " } ;
for ( i = 0 ; i < ARRAY_SIZE ( group_commands ) ; i + + ) {
result = autocomplete_param_with_func ( input , group_commands [ i ] , roster_group_autocomplete ) ;
if ( result ) {
return result ;
}
2014-10-04 22:43:22 +01:00
}
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /who " , who_roster_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-10-04 22:43:22 +01:00
return result ;
}
2012-12-09 20:18:38 +00:00
}
2013-12-15 16:10:32 +00:00
return NULL ;
2012-12-09 20:18:38 +00:00
}
2015-10-25 00:25:10 +01:00
static char *
_roster_autocomplete ( ProfWin * window , const char * const input )
2012-10-28 18:51:13 +00:00
{
2013-12-15 16:10:32 +00:00
char * result = NULL ;
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_ac ( input , " /roster header char " , roster_char_ac , TRUE ) ;
2015-11-22 16:37:05 +00:00
if ( result ) {
return result ;
}
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_ac ( input , " /roster contact char " , roster_char_ac , TRUE ) ;
2015-11-19 23:21:51 +00:00
if ( result ) {
return result ;
}
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_ac ( input , " /roster resource char " , roster_char_ac , TRUE ) ;
2015-11-20 00:06:46 +00:00
if ( result ) {
return result ;
}
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_func ( input , " /roster resource join " , prefs_autocomplete_boolean_choice ) ;
2015-11-22 02:04:59 +00:00
if ( result ) {
return result ;
}
2016-01-05 00:06:50 +00:00
jabber_conn_status_t conn_status = jabber_get_connection_status ( ) ;
if ( conn_status = = JABBER_CONNECTED ) {
result = autocomplete_param_with_func ( input , " /roster nick " , roster_barejid_autocomplete ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_with_func ( input , " /roster clearnick " , roster_barejid_autocomplete ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_with_func ( input , " /roster remove " , roster_barejid_autocomplete ) ;
if ( result ) {
return result ;
}
2013-12-15 16:10:32 +00:00
}
2016-01-05 00:06:50 +00:00
2015-07-08 20:51:39 +01:00
result = autocomplete_param_with_ac ( input , " /roster remove_all " , roster_remove_all_ac , TRUE ) ;
if ( result ) {
return result ;
}
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_ac ( input , " /roster show " , roster_show_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-11-10 23:51:13 +00:00
return result ;
}
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_ac ( input , " /roster hide " , roster_show_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-11-10 23:51:13 +00:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /roster by " , roster_by_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-11-11 00:30:29 +00:00
return result ;
}
2015-11-17 23:37:33 +00:00
result = autocomplete_param_with_ac ( input , " /roster order " , roster_order_ac , TRUE ) ;
if ( result ) {
return result ;
}
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_func ( input , " /roster wrap " , prefs_autocomplete_boolean_choice ) ;
2015-11-19 23:21:51 +00:00
if ( result ) {
return result ;
}
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_ac ( input , " /roster header " , roster_header_ac , TRUE ) ;
2015-11-21 21:03:53 +00:00
if ( result ) {
return result ;
}
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_ac ( input , " /roster contact " , roster_contact_ac , TRUE ) ;
2015-11-22 01:39:20 +00:00
if ( result ) {
return result ;
}
2015-11-22 16:37:05 +00:00
result = autocomplete_param_with_ac ( input , " /roster resource " , roster_resource_ac , TRUE ) ;
if ( result ) {
return result ;
}
2015-11-22 17:45:38 +00:00
result = autocomplete_param_with_ac ( input , " /roster presence " , roster_presence_ac , TRUE ) ;
if ( result ) {
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /roster " , roster_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
2012-11-27 21:20:00 +00:00
}
2012-11-11 14:00:21 +02:00
2013-12-15 16:10:32 +00:00
return NULL ;
}
2012-11-15 02:31:31 +00:00
2015-10-25 00:25:10 +01:00
static char *
_group_autocomplete ( ProfWin * window , const char * const input )
2013-12-15 16:10:32 +00:00
{
char * result = NULL ;
2012-11-18 02:40:49 +00:00
2016-01-05 00:06:50 +00:00
jabber_conn_status_t conn_status = jabber_get_connection_status ( ) ;
if ( conn_status = = JABBER_CONNECTED ) {
result = autocomplete_param_with_func ( input , " /group show " , roster_group_autocomplete ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_no_with_func ( input , " /group add " , 4 , roster_contact_autocomplete ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_no_with_func ( input , " /group remove " , 4 , roster_contact_autocomplete ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_with_func ( input , " /group add " , roster_group_autocomplete ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_with_func ( input , " /group remove " , roster_group_autocomplete ) ;
if ( result ) {
return result ;
}
2012-10-28 18:51:13 +00:00
}
2016-01-05 00:06:50 +00:00
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /group " , group_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
2012-11-27 21:20:00 +00:00
}
2013-12-15 16:10:32 +00:00
return NULL ;
2012-10-28 18:51:13 +00:00
}
2014-03-29 22:58:48 +00:00
2015-10-25 00:25:10 +01:00
static char *
_bookmark_autocomplete ( ProfWin * window , const char * const input )
2012-10-27 18:12:04 +01:00
{
2014-05-11 00:17:10 +01:00
char * found = NULL ;
gboolean result ;
2014-05-14 20:49:25 +01:00
gchar * * args = parse_args ( input , 3 , 8 , & result ) ;
2014-05-14 21:01:54 +01:00
gboolean handle_options = result & & ( g_strv_length ( args ) > 2 ) ;
2014-05-11 00:17:10 +01:00
2014-05-14 21:01:54 +01:00
if ( handle_options & & ( ( strcmp ( args [ 0 ] , " add " ) = = 0 ) | | ( strcmp ( args [ 0 ] , " update " ) = = 0 ) ) ) {
GString * beginning = g_string_new ( " /bookmark " ) ;
2014-05-14 20:49:25 +01:00
gboolean autojoin = FALSE ;
int num_args = g_strv_length ( args ) ;
2014-05-11 00:17:10 +01:00
2014-05-14 21:01:54 +01:00
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 0 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
if ( num_args = = 4 & & g_strcmp0 ( args [ 2 ] , " autojoin " ) = = 0 ) {
2014-05-11 00:17:10 +01:00
g_string_append ( beginning , " " ) ;
2014-05-14 21:01:54 +01:00
g_string_append ( beginning , args [ 2 ] ) ;
autojoin = TRUE ;
2014-05-14 20:53:31 +01:00
}
2014-05-11 00:17:10 +01:00
2014-05-14 20:53:31 +01:00
if ( num_args > 4 ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 2 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 3 ] ) ;
if ( num_args = = 6 & & g_strcmp0 ( args [ 4 ] , " autojoin " ) = = 0 ) {
2014-05-11 00:17:10 +01:00
g_string_append ( beginning , " " ) ;
2014-05-14 20:53:31 +01:00
g_string_append ( beginning , args [ 4 ] ) ;
autojoin = TRUE ;
}
}
2014-05-11 00:17:10 +01:00
2014-05-14 20:53:31 +01:00
if ( num_args > 6 ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 4 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 5 ] ) ;
if ( num_args = = 8 & & g_strcmp0 ( args [ 6 ] , " autojoin " ) = = 0 ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 6 ] ) ;
autojoin = TRUE ;
2014-05-11 00:17:10 +01:00
}
2014-05-14 20:53:31 +01:00
}
2012-02-09 23:15:53 +00:00
2014-05-14 21:01:54 +01:00
if ( autojoin ) {
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , beginning - > str , prefs_autocomplete_boolean_choice ) ;
2014-05-14 21:01:54 +01:00
} else {
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , beginning - > str , bookmark_property_ac , TRUE ) ;
2014-05-14 21:01:54 +01:00
}
g_string_free ( beginning , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-11-03 20:57:22 +00:00
g_strfreev ( args ) ;
2014-05-14 21:01:54 +01:00
return found ;
2014-05-11 00:17:10 +01:00
}
2013-05-17 00:33:00 +01:00
}
2012-11-14 00:39:34 +00:00
2014-11-03 20:57:22 +00:00
g_strfreev ( args ) ;
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /bookmark remove " , bookmark_find ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-05-11 00:17:10 +01:00
return found ;
2013-12-15 16:10:32 +00:00
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /bookmark join " , bookmark_find ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-05-11 00:17:10 +01:00
return found ;
2014-05-10 00:50:43 +01:00
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /bookmark update " , bookmark_find ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-05-11 00:17:10 +01:00
return found ;
2013-08-29 21:41:10 +01:00
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /bookmark " , bookmark_ac , TRUE ) ;
2014-05-11 00:17:10 +01:00
return found ;
2013-06-25 00:49:29 +01:00
}
2015-10-25 00:25:10 +01:00
static char *
_notify_autocomplete ( ProfWin * window , const char * const input )
2013-06-25 00:49:29 +01:00
{
2013-12-15 16:10:32 +00:00
int i = 0 ;
char * result = NULL ;
2013-06-25 00:49:29 +01:00
2015-11-24 01:34:06 +00:00
result = autocomplete_param_with_func ( input , " /notify room trigger remove " , prefs_autocomplete_room_trigger ) ;
if ( result ) {
return result ;
}
2015-11-29 00:08:49 +00:00
gchar * boolean_choices1 [ ] = { " /notify room current " , " /notify chat current " , " /notify typing current " ,
" /notify room text " , " /notify room mention " , " /notify chat text " } ;
2015-11-28 00:15:53 +00:00
for ( i = 0 ; i < ARRAY_SIZE ( boolean_choices1 ) ; i + + ) {
2015-11-29 00:08:49 +00:00
result = autocomplete_param_with_func ( input , boolean_choices1 [ i ] , prefs_autocomplete_boolean_choice ) ;
2015-11-28 00:15:53 +00:00
if ( result ) {
return result ;
}
2014-05-24 20:46:03 +01:00
}
2015-11-23 23:43:53 +00:00
result = autocomplete_param_with_ac ( input , " /notify room trigger " , notify_trigger_ac , TRUE ) ;
if ( result ) {
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /notify room " , notify_room_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-05-24 16:46:05 +01:00
return result ;
}
2015-11-29 00:08:49 +00:00
result = autocomplete_param_with_ac ( input , " /notify chat " , notify_chat_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-05-24 20:46:03 +01:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /notify typing " , notify_typing_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-05-24 21:13:33 +01:00
return result ;
}
2015-11-28 00:15:53 +00:00
gchar * boolean_choices2 [ ] = { " /notify invite " , " /notify sub " , " /notify mention " , " /notify trigger " } ;
for ( i = 0 ; i < ARRAY_SIZE ( boolean_choices2 ) ; i + + ) {
2015-11-29 00:08:49 +00:00
result = autocomplete_param_with_func ( input , boolean_choices2 [ i ] , prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
}
2013-06-25 00:49:29 +01:00
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /notify " , notify_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
2013-06-25 00:49:29 +01:00
}
2013-12-15 16:10:32 +00:00
return NULL ;
2013-06-25 00:49:29 +01:00
}
2015-10-25 00:25:10 +01:00
static char *
_autoaway_autocomplete ( ProfWin * window , const char * const input )
2013-12-15 16:10:32 +00:00
{
char * result = NULL ;
2012-08-14 23:22:12 +01:00
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /autoaway mode " , autoaway_mode_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
}
2015-09-27 23:08:30 +01:00
result = autocomplete_param_with_ac ( input , " /autoaway time " , autoaway_presence_ac , TRUE ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_with_ac ( input , " /autoaway message " , autoaway_presence_ac , TRUE ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_with_func ( input , " /autoaway check " , prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /autoaway " , autoaway_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
2012-08-14 23:22:12 +01:00
}
2012-02-09 23:15:53 +00:00
2013-12-15 16:10:32 +00:00
return NULL ;
2012-02-09 23:15:53 +00:00
}
2015-10-25 00:25:10 +01:00
static char *
_log_autocomplete ( ProfWin * window , const char * const input )
2014-04-13 20:41:11 +01:00
{
char * result = NULL ;
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_func ( input , " /log rotate " ,
2014-04-13 20:41:11 +01:00
prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-04-13 20:41:11 +01:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_func ( input , " /log shared " ,
2014-04-13 21:56:35 +01:00
prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-04-13 21:56:35 +01:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /log " , log_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-04-13 20:41:11 +01:00
return result ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_autoconnect_autocomplete ( ProfWin * window , const char * const input )
2012-10-23 00:18:28 +01:00
{
2013-12-15 16:10:32 +00:00
char * result = NULL ;
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_func ( input , " /autoconnect set " , accounts_find_enabled ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
2013-04-20 23:39:17 +01:00
}
2012-10-23 00:18:28 +01:00
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /autoconnect " , autoconnect_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-12-15 16:10:32 +00:00
return result ;
2012-11-29 23:14:56 +00:00
}
2012-07-19 23:43:50 +01:00
2013-12-15 16:10:32 +00:00
return NULL ;
2012-07-19 23:43:50 +01:00
}
2015-10-25 00:25:10 +01:00
static char *
_otr_autocomplete ( ProfWin * window , const char * const input )
2014-01-13 18:56:04 +00:00
{
2014-05-11 15:59:11 +01:00
char * found = NULL ;
2014-01-13 18:56:04 +00:00
2016-01-05 00:06:50 +00:00
jabber_conn_status_t conn_status = jabber_get_connection_status ( ) ;
if ( conn_status = = JABBER_CONNECTED ) {
found = autocomplete_param_with_func ( input , " /otr start " , roster_contact_autocomplete ) ;
if ( found ) {
return found ;
}
2014-01-13 19:00:34 +00:00
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /otr log " , otr_log_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-05-11 15:59:11 +01:00
return found ;
2014-01-13 20:17:45 +00:00
}
2014-05-11 15:59:11 +01:00
// /otr policy always user@server.com
2016-01-05 00:06:50 +00:00
if ( conn_status = = JABBER_CONNECTED ) {
gboolean result ;
gchar * * args = parse_args ( input , 3 , 3 , & result ) ;
if ( result & & ( strcmp ( args [ 0 ] , " policy " ) = = 0 ) ) {
GString * beginning = g_string_new ( " /otr " ) ;
g_string_append ( beginning , args [ 0 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
2014-05-11 15:59:11 +01:00
2016-01-05 00:06:50 +00:00
found = autocomplete_param_with_func ( input , beginning - > str , roster_contact_autocomplete ) ;
g_string_free ( beginning , TRUE ) ;
if ( found ) {
g_strfreev ( args ) ;
return found ;
}
2014-05-11 15:59:11 +01:00
}
2016-01-05 00:06:50 +00:00
g_strfreev ( args ) ;
2014-04-23 00:01:18 +01:00
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /otr policy " , otr_policy_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-05-11 15:59:11 +01:00
return found ;
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /otr " , otr_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-06-20 23:49:24 +01:00
return found ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_pgp_autocomplete ( ProfWin * window , const char * const input )
2015-06-20 23:49:24 +01:00
{
char * found = NULL ;
2016-01-05 00:06:50 +00:00
jabber_conn_status_t conn_status = jabber_get_connection_status ( ) ;
if ( conn_status = = JABBER_CONNECTED ) {
found = autocomplete_param_with_func ( input , " /pgp start " , roster_contact_autocomplete ) ;
if ( found ) {
return found ;
}
2015-06-20 23:49:24 +01:00
}
2015-06-21 21:42:58 +01:00
found = autocomplete_param_with_ac ( input , " /pgp log " , pgp_log_ac , TRUE ) ;
if ( found ) {
return found ;
}
2015-08-25 23:44:03 +01:00
# ifdef HAVE_LIBGPGME
gboolean result ;
gchar * * args = parse_args ( input , 2 , 3 , & result ) ;
if ( ( strncmp ( input , " /pgp " , 4 ) = = 0 ) & & ( result = = TRUE ) ) {
GString * beginning = g_string_new ( " /pgp " ) ;
g_string_append ( beginning , args [ 0 ] ) ;
if ( args [ 1 ] ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
}
found = autocomplete_param_with_func ( input , beginning - > str , p_gpg_autocomplete_key ) ;
g_string_free ( beginning , TRUE ) ;
if ( found ) {
g_strfreev ( args ) ;
return found ;
}
}
g_strfreev ( args ) ;
# endif
2016-01-05 00:06:50 +00:00
if ( conn_status = = JABBER_CONNECTED ) {
found = autocomplete_param_with_func ( input , " /pgp setkey " , roster_barejid_autocomplete ) ;
if ( found ) {
return found ;
}
2015-06-23 23:29:10 +01:00
}
2015-06-20 23:49:24 +01:00
found = autocomplete_param_with_ac ( input , " /pgp " , pgp_ac , TRUE ) ;
if ( found ) {
2014-05-11 15:59:11 +01:00
return found ;
2014-01-13 18:56:04 +00:00
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_theme_autocomplete ( ProfWin * window , const char * const input )
2012-12-09 00:46:14 +00:00
{
2013-06-02 19:56:35 +01:00
char * result = NULL ;
2015-02-26 00:49:21 +00:00
if ( ( strncmp ( input , " /theme load " , 12 ) = = 0 ) & & ( strlen ( input ) > 12 ) ) {
2012-12-09 00:46:14 +00:00
if ( theme_load_ac = = NULL ) {
2013-01-25 01:11:49 +00:00
theme_load_ac = autocomplete_new ( ) ;
2012-12-09 00:46:14 +00:00
GSList * themes = theme_list ( ) ;
2015-02-09 21:21:22 +00:00
GSList * curr = themes ;
2015-05-04 22:16:39 +01:00
while ( curr ) {
2015-02-09 21:21:22 +00:00
autocomplete_add ( theme_load_ac , curr - > data ) ;
curr = g_slist_next ( curr ) ;
2012-12-09 00:46:14 +00:00
}
2015-02-09 21:21:22 +00:00
g_slist_free_full ( themes , g_free ) ;
2013-01-25 01:11:49 +00:00
autocomplete_add ( theme_load_ac , " default " ) ;
2013-06-02 19:56:35 +01:00
}
2015-02-26 00:49:21 +00:00
result = autocomplete_param_with_ac ( input , " /theme load " , theme_load_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-06-02 19:56:35 +01:00
return result ;
}
2012-12-09 00:46:14 +00:00
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /theme " , theme_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2013-06-02 19:56:35 +01:00
return result ;
}
return NULL ;
2012-12-09 00:46:14 +00:00
}
2015-11-08 22:31:53 +00:00
static char *
_script_autocomplete_func ( const char * const prefix )
{
if ( script_show_ac = = NULL ) {
script_show_ac = autocomplete_new ( ) ;
GSList * scripts = scripts_list ( ) ;
GSList * curr = scripts ;
while ( curr ) {
autocomplete_add ( script_show_ac , curr - > data ) ;
curr = g_slist_next ( curr ) ;
}
g_slist_free_full ( scripts , g_free ) ;
}
return autocomplete_complete ( script_show_ac , prefix , FALSE ) ;
}
2015-10-25 00:25:10 +01:00
static char *
_script_autocomplete ( ProfWin * window , const char * const input )
2015-10-17 23:14:55 +01:00
{
char * result = NULL ;
if ( ( strncmp ( input , " /script show " , 13 ) = = 0 ) & & ( strlen ( input ) > 13 ) ) {
2015-11-08 22:31:53 +00:00
result = autocomplete_param_with_func ( input , " /script show " , _script_autocomplete_func ) ;
2015-10-17 23:14:55 +01:00
if ( result ) {
return result ;
}
}
if ( ( strncmp ( input , " /script run " , 12 ) = = 0 ) & & ( strlen ( input ) > 12 ) ) {
2015-11-08 22:31:53 +00:00
result = autocomplete_param_with_func ( input , " /script run " , _script_autocomplete_func ) ;
2015-10-17 23:14:55 +01:00
if ( result ) {
return result ;
}
}
result = autocomplete_param_with_ac ( input , " /script " , script_ac , TRUE ) ;
if ( result ) {
return result ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_resource_autocomplete ( ProfWin * window , const char * const input )
2014-12-04 00:16:42 +00:00
{
char * found = NULL ;
2016-01-05 00:06:50 +00:00
jabber_conn_status_t conn_status = jabber_get_connection_status ( ) ;
if ( conn_status = = JABBER_CONNECTED & & window - > type = = WIN_CHAT ) {
2015-06-17 19:49:55 +01:00
ProfChatWin * chatwin = ( ProfChatWin * ) window ;
assert ( chatwin - > memcheck = = PROFCHATWIN_MEMCHECK ) ;
2014-12-18 23:57:19 +00:00
PContact contact = roster_get_contact ( chatwin - > barejid ) ;
2014-12-04 00:16:42 +00:00
if ( contact ) {
Autocomplete ac = p_contact_resource_ac ( contact ) ;
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /resource set " , ac , FALSE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-12-04 00:16:42 +00:00
return found ;
}
}
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /resource title " , prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-01-10 19:10:10 +00:00
return found ;
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /resource message " , prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-01-10 19:10:10 +00:00
return found ;
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /resource " , resource_ac , FALSE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-12-04 00:16:42 +00:00
return found ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_titlebar_autocomplete ( ProfWin * window , const char * const input )
2015-01-12 00:43:42 +00:00
{
char * found = NULL ;
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /titlebar show " , prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-01-12 00:43:42 +00:00
return found ;
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /titlebar goodbye " , prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-01-12 01:12:42 +00:00
return found ;
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /titlebar " , titlebar_ac , FALSE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-01-12 00:43:42 +00:00
return found ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_inpblock_autocomplete ( ProfWin * window , const char * const input )
2015-01-12 23:41:15 +00:00
{
char * found = NULL ;
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /inpblock dynamic " , prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-01-12 23:41:15 +00:00
return found ;
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /inpblock " , inpblock_ac , FALSE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-01-12 23:41:15 +00:00
return found ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_form_autocomplete ( ProfWin * window , const char * const input )
2014-10-19 01:23:06 +01:00
{
2015-06-16 22:59:08 +01:00
if ( window - > type ! = WIN_MUC_CONFIG ) {
2014-12-10 01:14:11 +00:00
return NULL ;
}
2014-10-19 01:23:06 +01:00
char * found = NULL ;
2015-06-16 22:59:08 +01:00
ProfMucConfWin * confwin = ( ProfMucConfWin * ) window ;
2014-12-16 01:39:47 +00:00
DataForm * form = confwin - > form ;
2014-10-19 01:23:06 +01:00
if ( form ) {
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /form help " , form - > tag_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-10-19 01:23:06 +01:00
return found ;
}
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /form " , form_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-10-19 01:23:06 +01:00
return found ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_form_field_autocomplete ( ProfWin * window , const char * const input )
2014-09-03 00:36:42 +01:00
{
2015-06-16 22:59:08 +01:00
if ( window - > type ! = WIN_MUC_CONFIG ) {
2014-12-10 01:14:11 +00:00
return NULL ;
}
char * found = NULL ;
2014-10-19 01:01:31 +01:00
2015-06-16 22:59:08 +01:00
ProfMucConfWin * confwin = ( ProfMucConfWin * ) window ;
2014-12-16 01:39:47 +00:00
DataForm * form = confwin - > form ;
2014-10-19 01:09:53 +01:00
if ( form = = NULL ) {
return NULL ;
}
gchar * * split = g_strsplit ( input , " " , 0 ) ;
if ( g_strv_length ( split ) = = 3 ) {
char * field_tag = split [ 0 ] + 1 ;
if ( form_tag_exists ( form , field_tag ) ) {
form_field_type_t field_type = form_get_field_type ( form , field_tag ) ;
Autocomplete value_ac = form_get_value_ac ( form , field_tag ) ; ;
GString * beginning = g_string_new ( split [ 0 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , split [ 1 ] ) ;
if ( ( ( g_strcmp0 ( split [ 1 ] , " add " ) = = 0 ) | | ( g_strcmp0 ( split [ 1 ] , " remove " ) = = 0 ) )
& & field_type = = FIELD_LIST_MULTI ) {
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , beginning - > str , value_ac , TRUE ) ;
2014-10-19 01:09:53 +01:00
} else if ( ( g_strcmp0 ( split [ 1 ] , " remove " ) = = 0 ) & & field_type = = FIELD_TEXT_MULTI ) {
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , beginning - > str , value_ac , TRUE ) ;
2014-10-19 01:09:53 +01:00
} else if ( ( g_strcmp0 ( split [ 1 ] , " remove " ) = = 0 ) & & field_type = = FIELD_JID_MULTI ) {
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , beginning - > str , value_ac , TRUE ) ;
2014-10-19 01:09:53 +01:00
}
2014-11-01 01:48:36 +00:00
g_string_free ( beginning , TRUE ) ;
2014-10-19 01:09:53 +01:00
}
} else if ( g_strv_length ( split ) = = 2 ) {
char * field_tag = split [ 0 ] + 1 ;
if ( form_tag_exists ( form , field_tag ) ) {
form_field_type_t field_type = form_get_field_type ( form , field_tag ) ;
Autocomplete value_ac = form_get_value_ac ( form , field_tag ) ; ;
switch ( field_type )
{
case FIELD_BOOLEAN :
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , split [ 0 ] , prefs_autocomplete_boolean_choice ) ;
2014-10-19 01:09:53 +01:00
break ;
case FIELD_LIST_SINGLE :
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , split [ 0 ] , value_ac , TRUE ) ;
2014-10-19 01:09:53 +01:00
break ;
case FIELD_LIST_MULTI :
case FIELD_JID_MULTI :
case FIELD_TEXT_MULTI :
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , split [ 0 ] , form_field_multi_ac , TRUE ) ;
2014-10-19 01:09:53 +01:00
break ;
default :
break ;
2014-10-19 00:26:02 +01:00
}
}
}
2014-10-19 01:09:53 +01:00
g_strfreev ( split ) ;
2014-10-19 00:26:02 +01:00
return found ;
2014-09-03 00:36:42 +01:00
}
2015-10-25 00:25:10 +01:00
static char *
_occupants_autocomplete ( ProfWin * window , const char * const input )
2014-10-09 22:39:57 +01:00
{
char * found = NULL ;
2015-04-12 02:14:37 +01:00
found = autocomplete_param_with_ac ( input , " /occupants default show " , occupants_show_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-04-12 02:14:37 +01:00
return found ;
}
found = autocomplete_param_with_ac ( input , " /occupants default hide " , occupants_show_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-04-12 02:14:37 +01:00
return found ;
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /occupants default " , occupants_default_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-10-09 22:39:57 +01:00
return found ;
}
2015-04-12 02:14:37 +01:00
found = autocomplete_param_with_ac ( input , " /occupants show " , occupants_show_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-04-12 02:14:37 +01:00
return found ;
}
found = autocomplete_param_with_ac ( input , " /occupants hide " , occupants_show_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-04-12 02:14:37 +01:00
return found ;
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /occupants " , occupants_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-10-09 22:39:57 +01:00
return found ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_time_autocomplete ( ProfWin * window , const char * const input )
2015-03-10 23:35:08 +00:00
{
char * found = NULL ;
2015-05-29 20:49:28 -05:00
found = autocomplete_param_with_ac ( input , " /time statusbar " , time_format_ac , TRUE ) ;
if ( found ) {
return found ;
}
2015-09-29 23:30:23 +01:00
found = autocomplete_param_with_ac ( input , " /time lastactivity " , time_format_ac , TRUE ) ;
if ( found ) {
return found ;
}
2015-09-30 22:34:27 +01:00
found = autocomplete_param_with_ac ( input , " /time console " , time_format_ac , TRUE ) ;
if ( found ) {
return found ;
}
found = autocomplete_param_with_ac ( input , " /time chat " , time_format_ac , TRUE ) ;
if ( found ) {
return found ;
}
found = autocomplete_param_with_ac ( input , " /time muc " , time_format_ac , TRUE ) ;
if ( found ) {
return found ;
}
found = autocomplete_param_with_ac ( input , " /time mucconfig " , time_format_ac , TRUE ) ;
if ( found ) {
return found ;
}
found = autocomplete_param_with_ac ( input , " /time private " , time_format_ac , TRUE ) ;
if ( found ) {
return found ;
}
found = autocomplete_param_with_ac ( input , " /time xml " , time_format_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-03-10 23:35:08 +00:00
return found ;
}
found = autocomplete_param_with_ac ( input , " /time " , time_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2015-03-10 23:35:08 +00:00
return found ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_kick_autocomplete ( ProfWin * window , const char * const input )
2014-10-10 13:35:50 +01:00
{
char * result = NULL ;
2015-06-16 22:59:08 +01:00
if ( window - > type = = WIN_MUC ) {
2015-06-17 19:49:55 +01:00
ProfMucWin * mucwin = ( ProfMucWin * ) window ;
assert ( mucwin - > memcheck = = PROFMUCWIN_MEMCHECK ) ;
2014-12-18 23:57:19 +00:00
Autocomplete nick_ac = muc_roster_ac ( mucwin - > roomjid ) ;
2015-05-04 22:16:39 +01:00
if ( nick_ac ) {
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /kick " , nick_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-12-18 23:57:19 +00:00
return result ;
}
2014-10-10 13:35:50 +01:00
}
}
2014-12-18 23:57:19 +00:00
return result ;
2014-10-10 13:35:50 +01:00
}
2015-10-25 00:25:10 +01:00
static char *
_ban_autocomplete ( ProfWin * window , const char * const input )
2014-10-11 22:43:54 +01:00
{
char * result = NULL ;
2015-06-16 22:59:08 +01:00
if ( window - > type = = WIN_MUC ) {
2015-06-17 19:49:55 +01:00
ProfMucWin * mucwin = ( ProfMucWin * ) window ;
assert ( mucwin - > memcheck = = PROFMUCWIN_MEMCHECK ) ;
2014-12-18 23:57:19 +00:00
Autocomplete jid_ac = muc_roster_jid_ac ( mucwin - > roomjid ) ;
2015-05-04 22:16:39 +01:00
if ( jid_ac ) {
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /ban " , jid_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-12-18 23:57:19 +00:00
return result ;
}
2014-10-11 22:43:54 +01:00
}
}
2014-12-18 23:57:19 +00:00
return result ;
2014-10-11 22:43:54 +01:00
}
2015-10-25 00:25:10 +01:00
static char *
_affiliation_autocomplete ( ProfWin * window , const char * const input )
2014-10-04 21:38:31 +01:00
{
char * result = NULL ;
2014-10-06 21:42:09 +01:00
2015-06-16 22:59:08 +01:00
if ( window - > type = = WIN_MUC ) {
2015-06-17 19:49:55 +01:00
ProfMucWin * mucwin = ( ProfMucWin * ) window ;
assert ( mucwin - > memcheck = = PROFMUCWIN_MEMCHECK ) ;
2014-12-18 23:57:19 +00:00
gboolean parse_result ;
Autocomplete jid_ac = muc_roster_jid_ac ( mucwin - > roomjid ) ;
2014-10-06 21:42:09 +01:00
2014-12-18 23:57:19 +00:00
gchar * * args = parse_args ( input , 3 , 3 , & parse_result ) ;
2014-10-06 22:59:25 +01:00
2014-12-18 23:57:19 +00:00
if ( ( strncmp ( input , " /affiliation " , 12 ) = = 0 ) & & ( parse_result = = TRUE ) ) {
GString * beginning = g_string_new ( " /affiliation " ) ;
g_string_append ( beginning , args [ 0 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , beginning - > str , jid_ac , TRUE ) ;
2014-12-18 23:57:19 +00:00
g_string_free ( beginning , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-12-18 23:57:19 +00:00
g_strfreev ( args ) ;
return result ;
}
2014-10-06 22:59:25 +01:00
}
2014-12-18 23:57:19 +00:00
g_strfreev ( args ) ;
}
2014-11-03 20:57:22 +00:00
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /affiliation set " , affiliation_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-10-04 23:58:54 +01:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /affiliation list " , affiliation_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-10-04 23:58:54 +01:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /affiliation " , privilege_cmd_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-10-04 23:58:54 +01:00
return result ;
}
2014-12-18 23:57:19 +00:00
return result ;
2014-10-12 00:43:58 +01:00
}
2015-10-25 00:25:10 +01:00
static char *
_role_autocomplete ( ProfWin * window , const char * const input )
2014-10-12 00:43:58 +01:00
{
char * result = NULL ;
2015-06-16 22:59:08 +01:00
if ( window - > type = = WIN_MUC ) {
2015-06-17 19:49:55 +01:00
ProfMucWin * mucwin = ( ProfMucWin * ) window ;
assert ( mucwin - > memcheck = = PROFMUCWIN_MEMCHECK ) ;
2014-12-18 23:57:19 +00:00
gboolean parse_result ;
Autocomplete nick_ac = muc_roster_ac ( mucwin - > roomjid ) ;
2014-10-12 00:43:58 +01:00
2014-12-18 23:57:19 +00:00
gchar * * args = parse_args ( input , 3 , 3 , & parse_result ) ;
2014-10-12 00:43:58 +01:00
2014-12-18 23:57:19 +00:00
if ( ( strncmp ( input , " /role " , 5 ) = = 0 ) & & ( parse_result = = TRUE ) ) {
GString * beginning = g_string_new ( " /role " ) ;
g_string_append ( beginning , args [ 0 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , beginning - > str , nick_ac , TRUE ) ;
2014-12-18 23:57:19 +00:00
g_string_free ( beginning , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-12-18 23:57:19 +00:00
g_strfreev ( args ) ;
return result ;
}
2014-10-12 00:43:58 +01:00
}
2014-10-04 23:58:54 +01:00
2014-12-18 23:57:19 +00:00
g_strfreev ( args ) ;
}
2014-11-03 20:57:22 +00:00
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /role set " , role_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-10-04 23:58:54 +01:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /role list " , role_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-10-04 23:58:54 +01:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /role " , privilege_cmd_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-10-04 21:38:31 +01:00
return result ;
}
2014-12-18 23:57:19 +00:00
return result ;
2014-10-04 21:38:31 +01:00
}
2015-10-25 00:25:10 +01:00
static char *
_statuses_autocomplete ( ProfWin * window , const char * const input )
2014-01-21 00:28:56 +00:00
{
char * result = NULL ;
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /statuses console " , statuses_setting_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-01-21 00:28:56 +00:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /statuses chat " , statuses_setting_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-01-21 00:28:56 +00:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /statuses muc " , statuses_setting_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-01-21 00:28:56 +00:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /statuses " , statuses_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2015-03-19 22:57:51 +00:00
return result ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_wins_autocomplete ( ProfWin * window , const char * const input )
2015-09-19 23:31:04 +01:00
{
char * result = NULL ;
result = autocomplete_param_with_func ( input , " /wins autotidy " , prefs_autocomplete_boolean_choice ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_with_ac ( input , " /wins " , wins_ac , TRUE ) ;
if ( result ) {
return result ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_tls_autocomplete ( ProfWin * window , const char * const input )
2015-09-23 20:37:41 +01:00
{
char * result = NULL ;
2015-09-24 01:06:53 +01:00
result = autocomplete_param_with_func ( input , " /tls revoke " , tlscerts_complete ) ;
if ( result ) {
return result ;
}
2015-11-22 19:53:41 +00:00
result = autocomplete_param_with_func ( input , " /tls cert " , tlscerts_complete ) ;
if ( result ) {
return result ;
}
2015-09-23 20:37:41 +01:00
result = autocomplete_param_with_ac ( input , " /tls certpath " , tls_certpath_ac , TRUE ) ;
if ( result ) {
return result ;
}
2015-10-14 00:46:16 +01:00
result = autocomplete_param_with_func ( input , " /tls show " , prefs_autocomplete_boolean_choice ) ;
if ( result ) {
return result ;
}
2015-09-23 20:37:41 +01:00
result = autocomplete_param_with_ac ( input , " /tls " , tls_ac , TRUE ) ;
if ( result ) {
return result ;
}
return result ;
}
2015-10-25 00:25:10 +01:00
static char *
_receipts_autocomplete ( ProfWin * window , const char * const input )
2015-03-19 22:57:51 +00:00
{
char * result = NULL ;
result = autocomplete_param_with_func ( input , " /receipts send " , prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2015-03-19 22:57:51 +00:00
return result ;
}
result = autocomplete_param_with_func ( input , " /receipts request " , prefs_autocomplete_boolean_choice ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2015-03-19 22:57:51 +00:00
return result ;
}
result = autocomplete_param_with_ac ( input , " /receipts " , receipts_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-01-21 00:28:56 +00:00
return result ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_alias_autocomplete ( ProfWin * window , const char * const input )
2014-01-25 01:00:51 +00:00
{
char * result = NULL ;
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /alias remove " , aliases_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-01-25 01:00:51 +00:00
return result ;
}
2015-01-16 22:50:40 +00:00
result = autocomplete_param_with_ac ( input , " /alias " , alias_ac , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( result ) {
2014-01-25 01:00:51 +00:00
return result ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_connect_autocomplete ( ProfWin * window , const char * const input )
2014-01-18 23:05:35 +00:00
{
2014-04-09 21:31:43 +01:00
char * found = NULL ;
gboolean result = FALSE ;
2014-01-18 23:05:35 +00:00
2015-10-18 03:06:23 +01:00
gchar * * args = parse_args ( input , 2 , 6 , & result ) ;
2014-01-18 23:43:13 +00:00
2014-04-09 21:31:43 +01:00
if ( ( strncmp ( input , " /connect " , 8 ) = = 0 ) & & ( result = = TRUE ) ) {
2014-01-18 23:43:13 +00:00
GString * beginning = g_string_new ( " /connect " ) ;
g_string_append ( beginning , args [ 0 ] ) ;
2015-05-04 22:16:39 +01:00
if ( args [ 1 ] & & args [ 2 ] ) {
2014-01-18 23:43:13 +00:00
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 2 ] ) ;
2015-10-18 03:06:23 +01:00
if ( args [ 3 ] & & args [ 4 ] ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 3 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 4 ] ) ;
}
2014-01-18 23:43:13 +00:00
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , beginning - > str , connect_property_ac , TRUE ) ;
2014-01-18 23:43:13 +00:00
g_string_free ( beginning , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-11-03 20:57:22 +00:00
g_strfreev ( args ) ;
2014-04-09 21:31:43 +01:00
return found ;
2014-01-18 23:43:13 +00:00
}
}
2014-01-18 23:05:35 +00:00
2014-11-03 20:57:22 +00:00
g_strfreev ( args ) ;
2015-10-18 03:06:23 +01:00
result = FALSE ;
args = parse_args ( input , 2 , 7 , & result ) ;
if ( ( strncmp ( input , " /connect " , 8 ) = = 0 ) & & ( result = = TRUE ) ) {
GString * beginning = g_string_new ( " /connect " ) ;
g_string_append ( beginning , args [ 0 ] ) ;
int curr = 0 ;
if ( args [ 1 ] ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
curr = 1 ;
if ( args [ 2 ] & & args [ 3 ] ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 2 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 3 ] ) ;
curr = 3 ;
if ( args [ 4 ] & & args [ 5 ] ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 4 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 5 ] ) ;
curr = 5 ;
}
}
}
if ( curr ! = 0 & & ( g_strcmp0 ( args [ curr ] , " tls " ) = = 0 ) ) {
found = autocomplete_param_with_ac ( input , beginning - > str , tls_property_ac , TRUE ) ;
g_string_free ( beginning , TRUE ) ;
if ( found ) {
g_strfreev ( args ) ;
return found ;
}
} else {
g_string_free ( beginning , TRUE ) ;
}
}
g_strfreev ( args ) ;
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /connect " , accounts_find_enabled ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-04-09 21:31:43 +01:00
return found ;
2014-01-18 23:05:35 +00:00
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_help_autocomplete ( ProfWin * window , const char * const input )
2015-07-27 23:55:04 +01:00
{
char * result = NULL ;
result = autocomplete_param_with_ac ( input , " /help commands " , help_commands_ac , TRUE ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_with_ac ( input , " /help " , help_ac , TRUE ) ;
if ( result ) {
return result ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_join_autocomplete ( ProfWin * window , const char * const input )
2014-03-05 20:57:59 +00:00
{
2014-04-09 21:31:43 +01:00
char * found = NULL ;
gboolean result = FALSE ;
2014-03-05 20:57:59 +00:00
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , " /join " , bookmark_find ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-04-13 01:20:36 +01:00
return found ;
}
2014-04-09 21:31:43 +01:00
gchar * * args = parse_args ( input , 2 , 4 , & result ) ;
2014-03-05 20:57:59 +00:00
2014-04-09 21:31:43 +01:00
if ( ( strncmp ( input , " /join " , 5 ) = = 0 ) & & ( result = = TRUE ) ) {
2014-03-05 20:57:59 +00:00
GString * beginning = g_string_new ( " /join " ) ;
g_string_append ( beginning , args [ 0 ] ) ;
2015-05-04 22:16:39 +01:00
if ( args [ 1 ] & & args [ 2 ] ) {
2014-03-05 20:57:59 +00:00
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 2 ] ) ;
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , beginning - > str , join_property_ac , TRUE ) ;
2014-03-05 20:57:59 +00:00
g_string_free ( beginning , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-11-03 20:57:22 +00:00
g_strfreev ( args ) ;
2014-04-09 21:31:43 +01:00
return found ;
2014-03-05 20:57:59 +00:00
}
}
2014-11-03 20:57:22 +00:00
g_strfreev ( args ) ;
2014-03-05 20:57:59 +00:00
return NULL ;
}
2015-12-29 23:32:32 +00:00
static char *
_console_autocomplete ( ProfWin * window , const char * const input )
{
char * result = NULL ;
result = autocomplete_param_with_ac ( input , " /console muc " , console_muc_ac , TRUE ) ;
if ( result ) {
return result ;
}
result = autocomplete_param_with_ac ( input , " /console " , console_ac , TRUE ) ;
if ( result ) {
return result ;
}
return NULL ;
}
2016-01-07 00:38:17 +00:00
static char *
_win_autocomplete ( ProfWin * window , const char * const input )
{
char * found = NULL ;
found = autocomplete_param_with_func ( input , " /win " , win_autocomplete ) ;
if ( found ) {
return found ;
}
return NULL ;
}
2015-10-29 21:21:41 +00:00
static char *
_subject_autocomplete ( ProfWin * window , const char * const input )
{
char * result = NULL ;
if ( window - > type = = WIN_MUC ) {
if ( ( g_strcmp0 ( input , " /subject e " ) = = 0 )
| | ( g_strcmp0 ( input , " /subject ed " ) = = 0 )
| | ( g_strcmp0 ( input , " /subject edi " ) = = 0 )
| | ( g_strcmp0 ( input , " /subject edit " ) = = 0 )
| | ( g_strcmp0 ( input , " /subject edit " ) = = 0 )
| | ( g_strcmp0 ( input , " /subject edit \" " ) = = 0 ) ) {
ProfMucWin * mucwin = ( ProfMucWin * ) window ;
assert ( mucwin - > memcheck = = PROFMUCWIN_MEMCHECK ) ;
char * subject = muc_subject ( mucwin - > roomjid ) ;
if ( subject ) {
GString * result_str = g_string_new ( " /subject edit \" " ) ;
g_string_append ( result_str , subject ) ;
g_string_append ( result_str , " \" " ) ;
result = result_str - > str ;
g_string_free ( result_str , FALSE ) ;
}
}
}
if ( result ) {
return result ;
}
result = autocomplete_param_with_ac ( input , " /subject " , subject_ac , TRUE ) ;
if ( result ) {
return result ;
}
return NULL ;
}
2015-10-25 00:25:10 +01:00
static char *
_account_autocomplete ( ProfWin * window , const char * const input )
2012-12-09 22:58:45 +00:00
{
2014-04-09 21:31:43 +01:00
char * found = NULL ;
gboolean result = FALSE ;
2013-12-10 22:11:48 +00:00
2014-05-11 13:48:41 +01:00
gchar * * args = parse_args ( input , 3 , 4 , & result ) ;
2013-12-10 22:11:48 +00:00
2014-04-09 21:31:43 +01:00
if ( ( strncmp ( input , " /account set " , 12 ) = = 0 ) & & ( result = = TRUE ) ) {
2013-12-10 22:11:48 +00:00
GString * beginning = g_string_new ( " /account set " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
2014-05-11 13:48:41 +01:00
if ( ( g_strv_length ( args ) > 3 ) & & ( g_strcmp0 ( args [ 2 ] , " otr " ) ) = = 0 ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 2 ] ) ;
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , beginning - > str , otr_policy_ac , TRUE ) ;
2014-05-11 13:48:41 +01:00
g_string_free ( beginning , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-11-03 20:57:22 +00:00
g_strfreev ( args ) ;
2014-05-11 13:48:41 +01:00
return found ;
}
2015-08-03 00:33:16 +01:00
} else if ( ( g_strv_length ( args ) > 3 ) & & ( g_strcmp0 ( args [ 2 ] , " status " ) ) = = 0 ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 2 ] ) ;
found = autocomplete_param_with_ac ( input , beginning - > str , account_status_ac , TRUE ) ;
g_string_free ( beginning , TRUE ) ;
2015-10-18 03:06:23 +01:00
if ( found ) {
g_strfreev ( args ) ;
return found ;
}
} else if ( ( g_strv_length ( args ) > 3 ) & & ( g_strcmp0 ( args [ 2 ] , " tls " ) ) = = 0 ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 2 ] ) ;
found = autocomplete_param_with_ac ( input , beginning - > str , tls_property_ac , TRUE ) ;
g_string_free ( beginning , TRUE ) ;
2015-11-08 22:31:53 +00:00
if ( found ) {
g_strfreev ( args ) ;
return found ;
}
} else if ( ( g_strv_length ( args ) > 3 ) & & ( g_strcmp0 ( args [ 2 ] , " startscript " ) ) = = 0 ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 2 ] ) ;
found = autocomplete_param_with_func ( input , beginning - > str , _script_autocomplete_func ) ;
g_string_free ( beginning , TRUE ) ;
2015-08-03 00:33:16 +01:00
if ( found ) {
g_strfreev ( args ) ;
return found ;
}
2015-08-26 00:48:01 +01:00
# ifdef HAVE_LIBGPGME
2015-08-25 23:48:21 +01:00
} else if ( ( g_strv_length ( args ) > 3 ) & & ( g_strcmp0 ( args [ 2 ] , " pgpkeyid " ) ) = = 0 ) {
g_string_append ( beginning , " " ) ;
g_string_append ( beginning , args [ 2 ] ) ;
found = autocomplete_param_with_func ( input , beginning - > str , p_gpg_autocomplete_key ) ;
g_string_free ( beginning , TRUE ) ;
if ( found ) {
g_strfreev ( args ) ;
return found ;
}
2015-08-26 00:48:01 +01:00
# endif
2014-05-11 13:48:41 +01:00
} else {
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , beginning - > str , account_set_ac , TRUE ) ;
2014-05-11 13:48:41 +01:00
g_string_free ( beginning , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-11-03 20:57:22 +00:00
g_strfreev ( args ) ;
2014-05-11 13:48:41 +01:00
return found ;
}
2013-12-10 22:11:48 +00:00
}
}
2014-04-09 21:31:43 +01:00
if ( ( strncmp ( input , " /account clear " , 14 ) = = 0 ) & & ( result = = TRUE ) ) {
2013-12-10 22:11:48 +00:00
GString * beginning = g_string_new ( " /account clear " ) ;
g_string_append ( beginning , args [ 1 ] ) ;
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , beginning - > str , account_clear_ac , TRUE ) ;
2013-12-10 22:11:48 +00:00
g_string_free ( beginning , TRUE ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-11-03 20:57:22 +00:00
g_strfreev ( args ) ;
2014-04-09 21:31:43 +01:00
return found ;
2013-12-10 22:11:48 +00:00
}
}
g_strfreev ( args ) ;
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /account default " , account_default_ac , TRUE ) ;
2014-11-27 12:11:47 -06:00
if ( found ) {
return found ;
}
2013-06-02 19:56:35 +01:00
int i = 0 ;
gchar * account_choice [ ] = { " /account set " , " /account show " , " /account enable " ,
2014-11-27 12:07:18 -06:00
" /account disable " , " /account rename " , " /account clear " , " /account remove " ,
" /account default set " } ;
2013-06-02 19:56:35 +01:00
for ( i = 0 ; i < ARRAY_SIZE ( account_choice ) ; i + + ) {
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_func ( input , account_choice [ i ] , accounts_find_all ) ;
2015-05-04 22:16:39 +01:00
if ( found ) {
2014-04-09 21:31:43 +01:00
return found ;
2013-06-02 19:56:35 +01:00
}
}
2015-01-16 22:50:40 +00:00
found = autocomplete_param_with_ac ( input , " /account " , account_ac , TRUE ) ;
2014-04-09 21:31:43 +01:00
return found ;
2014-04-15 13:16:32 +01:00
}
2015-02-08 00:42:21 +00:00
static int
_cmp_command ( Command * cmd1 , Command * cmd2 )
{
return g_strcmp0 ( cmd1 - > cmd , cmd2 - > cmd ) ;
}
void
command_docgen ( void )
{
GList * cmds = NULL ;
unsigned int i ;
for ( i = 0 ; i < ARRAY_SIZE ( command_defs ) ; i + + ) {
Command * pcmd = command_defs + i ;
cmds = g_list_insert_sorted ( cmds , pcmd , ( GCompareFunc ) _cmp_command ) ;
}
FILE * toc_fragment = fopen ( " toc_fragment.html " , " w " ) ;
FILE * main_fragment = fopen ( " main_fragment.html " , " w " ) ;
fputs ( " <ul><li><ul><li> \n " , toc_fragment ) ;
fputs ( " <hr> \n " , main_fragment ) ;
GList * curr = cmds ;
while ( curr ) {
Command * pcmd = curr - > data ;
2015-07-26 01:27:42 +01:00
fprintf ( toc_fragment , " <a href= \" #%s \" >%s</a>, \n " , & pcmd - > cmd [ 1 ] , pcmd - > cmd ) ;
fprintf ( main_fragment , " <a name= \" %s \" ></a> \n " , & pcmd - > cmd [ 1 ] ) ;
fprintf ( main_fragment , " <h4>%s</h4> \n " , pcmd - > cmd ) ;
2015-02-08 00:42:21 +00:00
2015-07-26 01:27:42 +01:00
fputs ( " <p><b>Synopsis</b></p> \n " , main_fragment ) ;
fputs ( " <p><pre><code> " , main_fragment ) ;
int i = 0 ;
while ( pcmd - > help . synopsis [ i ] ) {
char * str1 = str_replace ( pcmd - > help . synopsis [ i ] , " < " , " < " ) ;
char * str2 = str_replace ( str1 , " > " , " > " ) ;
fprintf ( main_fragment , " %s \n " , str2 ) ;
i + + ;
}
fputs ( " </code></pre></p> \n " , main_fragment ) ;
fputs ( " <p><b>Description</b></p> \n " , main_fragment ) ;
fputs ( " <p> " , main_fragment ) ;
fprintf ( main_fragment , " %s \n " , pcmd - > help . desc ) ;
fputs ( " </p> \n " , main_fragment ) ;
if ( pcmd - > help . args [ 0 ] [ 0 ] ! = NULL ) {
fputs ( " <p><b>Arguments</b></p> \n " , main_fragment ) ;
fputs ( " <table> " , main_fragment ) ;
for ( i = 0 ; pcmd - > help . args [ i ] [ 0 ] ! = NULL ; i + + ) {
fputs ( " <tr> " , main_fragment ) ;
fputs ( " <td> " , main_fragment ) ;
fputs ( " <code> " , main_fragment ) ;
char * str1 = str_replace ( pcmd - > help . args [ i ] [ 0 ] , " < " , " < " ) ;
char * str2 = str_replace ( str1 , " > " , " > " ) ;
fprintf ( main_fragment , " %s " , str2 ) ;
fputs ( " </code> " , main_fragment ) ;
fputs ( " </td> " , main_fragment ) ;
fputs ( " <td> " , main_fragment ) ;
fprintf ( main_fragment , " %s " , pcmd - > help . args [ i ] [ 1 ] ) ;
fputs ( " </td> " , main_fragment ) ;
fputs ( " </tr> " , main_fragment ) ;
}
fputs ( " </table> \n " , main_fragment ) ;
}
2015-07-25 20:43:16 +01:00
2015-07-26 01:27:42 +01:00
if ( pcmd - > help . examples [ 0 ] ! = NULL ) {
fputs ( " <p><b>Examples</b></p> \n " , main_fragment ) ;
2015-07-25 20:43:16 +01:00
fputs ( " <p><pre><code> " , main_fragment ) ;
int i = 0 ;
2015-07-26 01:27:42 +01:00
while ( pcmd - > help . examples [ i ] ) {
fprintf ( main_fragment , " %s \n " , pcmd - > help . examples [ i ] ) ;
2015-07-25 20:43:16 +01:00
i + + ;
}
fputs ( " </code></pre></p> \n " , main_fragment ) ;
2015-07-26 01:27:42 +01:00
}
2015-07-25 20:43:16 +01:00
2015-07-26 01:27:42 +01:00
fputs ( " <a href= \" #top \" ><h5>back to top</h5></a><br><hr> \n " , main_fragment ) ;
fputs ( " \n " , main_fragment ) ;
2015-07-25 20:43:16 +01:00
2015-02-08 00:42:21 +00:00
curr = g_list_next ( curr ) ;
}
fputs ( " </ul></ul> \n " , toc_fragment ) ;
fclose ( toc_fragment ) ;
fclose ( main_fragment ) ;
2015-07-26 01:27:42 +01:00
printf ( " \n Processed %d commands. \n \n " , g_list_length ( cmds ) ) ;
2015-02-08 00:42:21 +00:00
g_list_free ( cmds ) ;
2015-02-08 00:46:55 +00:00
}