Extensions pour scripts Cinq extensions sont fournies en standard avec WeeChat pour utiliser des langages de script : Perl, Python, Ruby, Lua et Tcl.
Charger / décharger des scripts Les scripts sont chargés et déchargés avec les commandes /perl, /python, /ruby, /lua et /tcl (tapez /help dans WeeChat pour obtenir de l'aide sur les commandes). Exemples : Charger un script Perl : /perl load /tmp/essai.pl Lister les scripts Perl chargés : /perl Charger un script Python : /python load /tmp/essai.py Lister les scripts Python chargés : /python Charger un script Ruby : /ruby load /tmp/essai.rb Lister les scripts Ruby chargés : /ruby Charger un script Lua : /lua load /tmp/essai.lua Lister les scripts Lua chargés : /lua Charger un script Tcl : /tcl load /tmp/essai.tcl Lister les scripts Tcl chargés : /tcl
Syntaxe par langage
Perl Dans un script Perl WeeChat, toutes les fonctions et variables de l'interface sont préfixées par "weechat::". Exemple : weechat::register("test", "Auteur <auteur\@domaine.com>", "1.0", "GPL3", "Description du script", "au_revoir", "");
Python Un script Python WeeChat doit commencer par importer weechat : import weechat Toutes les fonctions et variables de l'interface sont préfixées par "weechat.". Exemple : weechat.register("test", "Auteur <auteur@domaine.com>", "1.0", "GPL3", "Description du script", "au_revoir", "")
Ruby Dans un script Ruby WeeChat, tout le code doit être dans des fonctions. Pour le code principal, vous devez définir une fonction "weechat_init", qui est appelée automatiquement quand le script est chargé par WeeChat. Exemple : def weechat_init Weechat.register("test", "Auteur <auteur@domaine.com>", "1.0", "GPL3", "Description du script", "au_revoir", "") return Weechat::WEECHAT_RC_OK end Toutes les fonctions de l'interface sont préfixées par "Weechat." et les variables par "Weechat::".
Lua Dans un script Lua WeeChat, toutes les fonctions de l'interface sont préfixées par "weechat.". Les variables sont préfixées par "weechat." et suffixées par "()". Exemple : weechat.register("test", "Auteur <auteur@domaine.com>", "1.0", "GPL3", "Description du script", "au_revoir", "")
Tcl Dans un script Tcl WeeChat, toutes les fonctions de l'interface sont préfixées par "weechat::". Les variables sont préfixées par "$weechat::". Exemple : weechat::register "test" "Auteur <auteur@domaine.com>" "1.0" "GPL3" "Description du script" "au_revoir" ""
Interface WeeChat / scripts
register Prototype Perl : weechat::register(nom, auteur, version, licence, description, fonction_de_fin, charset); Prototype Python : weechat.register(nom, auteur, version, licence, description, fonction_de_fin, charset) Prototype Ruby : Weechat.register(nom, auteur, version, licence, description, fonction_de_fin, charset) Prototype Lua : weechat.register(nom, auteur, version, licence, description, fonction_de_fin, charset) Prototype Tcl : weechat::register nom auteur version licence description fonction_de_fin charset C'est la première fonction à appeler dans le script. Tout script pour WeeChat doit appeler cette fonction. Paramètres : : nom unique pour identifier le script (chaque script doit avoir un nom différent) : chaîne avec l'auteur (peut include nom, pseudo, e-mail, etc...) : version du script : brève description du script : fonction appelée quand le script est déchargé (paramètre facultatif, une chaîne vide signifiant qu'il n'y a pas de fonction à appeler) : jeu de caractères du script, à préciser si le script n'est PAS écrit en UTF-8 (vous pouvez laisser blanc pour un script UTF-8, c'est le jeu de caractère par défaut) Valeur renvoyée : 1 si le script a été enregistré, 0 si une erreur s'est produite. Exemples : # perl weechat::register("test", "Auteur <auteur\@domaine.com>", "1.0", "GPL3", "Description du script", "au_revoir", ""); # python weechat.register("test", "Auteur <auteur@domaine.com>", "1.0", "GPL3", "Description du script", "au_revoir", "") # ruby Weechat.register("test", "Auteur <auteur@domaine.com>", "1.0", "GPL3", "Description du script", "au_revoir", "") -- lua weechat.register("test", "Auteur <auteur@domaine.com>", "1.0", "GPL3", "Description du script", "au_revoir", "") # tcl weechat::register "test" "Auteur <auteur@domaine.com>" "1.0" "GPL3" "Description du script" "au_revoir" ""
Autres fonctions Les fonctions suivantes sont dans l'API scripts (pour la description, voir ). plugin_get_name set_charset plugin_get_name charset_set iconv_to_internal iconv_from_internal gettext ngettext string_remove_color mkdir_home mkdir mkdir_parents list_new list_add list_search list_casesearch list_get list_set list_next list_prev list_string list_size list_remove list_remove_all list_free config_new config_new_section config_search_section config_new_option config_search_option config_string_to_boolean config_option_reset config_option_set config_option_set_null config_option_unset config_option_rename config_option_is_null config_option_default_is_null config_boolean config_boolean_default config_integer config_integer_default config_string config_string_default config_color config_color_default config_write_option config_write_line config_write config_read config_reload config_option_free config_section_free_options config_section_free config_free config_get config_get_plugin config_set_plugin config_unset_plugin prefix color print print_date_tags print_y log_print hook_command hook_command_run hook_timer hook_fd hook_process hook_connect hook_print hook_signal hook_signal_send hook_config hook_completion hook_completion_list_add hook_modifier hook_modifier_exec hook_info hook_infolist unhook unhook_all buffer_new buffer_search current_buffer buffer_clear buffer_close buffer_get_integer buffer_get_string buffer_get_pointer buffer_set current_window window_get_integer window_get_string window_get_pointer nicklist_add_group nicklist_search_group nicklist_add_nick nicklist_search_nick nicklist_remove_group nicklist_remove_nick nicklist_remove_all bar_item_search bar_item_new bar_item_update bar_item_remove bar_search bar_new bar_set bar_update bar_remove command info_get infolist_new infolist_new_var_integer infolist_new_var_string infolist_new_var_pointer infolist_new_var_time infolist_get infolist_next infolist_prev infolist_fields infolist_integer infolist_string infolist_pointer infolist_time infolist_free upgrade_new upgrade_write_object upgrade_read upgrade_close