summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt49
-rw-r--r--ChangeLog4
-rw-r--r--configure.in95
-rw-r--r--doc/de/autogen/plugin_api/completions.txt6
-rw-r--r--doc/de/autogen/plugin_api/hdata.txt27
-rw-r--r--doc/de/autogen/plugin_api/infolists.txt2
-rw-r--r--doc/de/autogen/user/script_commands.txt47
-rw-r--r--doc/de/autogen/user/script_options.txt155
-rw-r--r--doc/de/weechat_quickstart.de.txt19
-rw-r--r--doc/de/weechat_user.de.txt72
-rw-r--r--doc/docgen.py1
-rw-r--r--doc/en/autogen/plugin_api/completions.txt6
-rw-r--r--doc/en/autogen/plugin_api/hdata.txt27
-rw-r--r--doc/en/autogen/plugin_api/infolists.txt2
-rw-r--r--doc/en/autogen/user/script_commands.txt47
-rw-r--r--doc/en/autogen/user/script_options.txt155
-rw-r--r--doc/en/weechat_quickstart.en.txt17
-rw-r--r--doc/en/weechat_user.en.txt66
-rw-r--r--doc/es/weechat_quickstart.es.txt22
-rw-r--r--doc/fr/autogen/plugin_api/completions.txt6
-rw-r--r--doc/fr/autogen/plugin_api/hdata.txt27
-rw-r--r--doc/fr/autogen/plugin_api/infolists.txt2
-rw-r--r--doc/fr/autogen/user/script_commands.txt47
-rw-r--r--doc/fr/autogen/user/script_options.txt155
-rw-r--r--doc/fr/weechat_quickstart.fr.txt21
-rw-r--r--doc/fr/weechat_user.fr.txt69
-rw-r--r--doc/it/autogen/plugin_api/completions.txt6
-rw-r--r--doc/it/autogen/plugin_api/hdata.txt27
-rw-r--r--doc/it/autogen/plugin_api/infolists.txt2
-rw-r--r--doc/it/autogen/user/script_commands.txt47
-rw-r--r--doc/it/autogen/user/script_options.txt155
-rw-r--r--doc/it/weechat_quickstart.it.txt19
-rw-r--r--doc/it/weechat_user.it.txt72
-rw-r--r--doc/ja/autogen/plugin_api/completions.txt6
-rw-r--r--doc/ja/autogen/plugin_api/hdata.txt27
-rw-r--r--doc/ja/autogen/plugin_api/infolists.txt2
-rw-r--r--doc/ja/autogen/user/script_commands.txt47
-rw-r--r--doc/ja/autogen/user/script_options.txt155
-rw-r--r--doc/ja/weechat_quickstart.ja.txt19
-rw-r--r--doc/ja/weechat_user.ja.txt70
-rw-r--r--doc/pl/weechat_quickstart.pl.txt18
-rw-r--r--doc/ru/weechat_quickstart.ru.txt18
-rw-r--r--po/POTFILES.in44
-rw-r--r--po/cs.po488
-rw-r--r--po/de.po488
-rw-r--r--po/es.po490
-rw-r--r--po/fr.po528
-rw-r--r--po/hu.po489
-rw-r--r--po/it.po491
-rw-r--r--po/ja.po487
-rw-r--r--po/pl.po486
-rw-r--r--po/pt_BR.po478
-rw-r--r--po/ru.po489
-rw-r--r--po/srcfiles.cmake28
-rw-r--r--po/weechat.pot405
-rw-r--r--src/CMakeLists.txt18
-rw-r--r--src/core/wee-network.c7
-rw-r--r--src/gui/curses/gui-curses-key.c2
-rw-r--r--src/plugins/CMakeLists.txt4
-rw-r--r--src/plugins/Makefile.am6
-rw-r--r--src/plugins/irc/CMakeLists.txt4
-rw-r--r--src/plugins/irc/irc-protocol.c11
-rw-r--r--src/plugins/irc/irc-sasl.c12
-rw-r--r--src/plugins/relay/CMakeLists.txt4
-rw-r--r--src/plugins/relay/weechat/relay-weechat-msg.c7
-rw-r--r--src/plugins/relay/weechat/relay-weechat.c4
-rw-r--r--src/plugins/script/CMakeLists.txt43
-rw-r--r--src/plugins/script/Makefile.am46
-rw-r--r--src/plugins/script/script-action.c710
-rw-r--r--src/plugins/script/script-action.h29
-rw-r--r--src/plugins/script/script-buffer.c797
-rw-r--r--src/plugins/script/script-buffer.h44
-rw-r--r--src/plugins/script/script-command.c270
-rw-r--r--src/plugins/script/script-command.h25
-rw-r--r--src/plugins/script/script-completion.c192
-rw-r--r--src/plugins/script/script-completion.h25
-rw-r--r--src/plugins/script/script-config.c587
-rw-r--r--src/plugins/script/script-config.h71
-rw-r--r--src/plugins/script/script-info.c110
-rw-r--r--src/plugins/script/script-info.h25
-rw-r--r--src/plugins/script/script-repo.c1369
-rw-r--r--src/plugins/script/script-repo.h83
-rw-r--r--src/plugins/script/script.c292
-rw-r--r--src/plugins/script/script.h37
84 files changed, 10867 insertions, 1194 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f9a12f118..d05c9a971 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,31 +63,30 @@ ELSE(DEFINED INCLUDEDIR)
SET(INCLUDEDIR ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME})
ENDIF(DEFINED INCLUDEDIR)
-OPTION(ENABLE_NCURSES "Enable Ncurses interface" ON)
-OPTION(ENABLE_GTK "Enable GTK interface" OFF)
-OPTION(ENABLE_NLS "Enable Native Language Support" ON)
-OPTION(ENABLE_GCRYPT "Enable libgcrypt support" ON)
-OPTION(ENABLE_GNUTLS "Enable SSLv3/TLS support" ON)
-OPTION(ENABLE_LARGEFILE "Enable Large File Support" ON)
-OPTION(ENABLE_ZLIB "Enable Zlib support" ON)
-OPTION(ENABLE_ALIAS "Enable Alias plugin" ON)
-OPTION(ENABLE_ASPELL "Enable Aspell plugin" ON)
-OPTION(ENABLE_CHARSET "Enable Charset plugin" ON)
-OPTION(ENABLE_DEMO "Enable Demo plugin" OFF)
-OPTION(ENABLE_FIFO "Enable FIFO plugin" ON)
-OPTION(ENABLE_IRC "Enable IRC plugin" ON)
-OPTION(ENABLE_LOGGER "Enable Logger plugin" ON)
-OPTION(ENABLE_RELAY "Enable Relay plugin" ON)
-OPTION(ENABLE_RMODIFIER "Enable Rmodifier plugin" ON)
-OPTION(ENABLE_SCRIPTS "Enable script plugins" ON)
-OPTION(ENABLE_PERL "Enable Perl scripting language" ON)
-OPTION(ENABLE_PYTHON "Enable Python scripting language" ON)
-OPTION(ENABLE_RUBY "Enable Ruby scripting language" ON)
-OPTION(ENABLE_LUA "Enable Lua scripting language" ON)
-OPTION(ENABLE_TCL "Enable Tcl scripting language" ON)
-OPTION(ENABLE_GUILE "Enable Scheme (guile) scripting language" ON)
-OPTION(ENABLE_XFER "Enable Xfer plugin" ON)
-OPTION(ENABLE_DOC "Enable Documentation" ON)
+OPTION(ENABLE_NCURSES "Enable Ncurses interface" ON)
+OPTION(ENABLE_GTK "Enable GTK interface" OFF)
+OPTION(ENABLE_NLS "Enable Native Language Support" ON)
+OPTION(ENABLE_GNUTLS "Enable SSLv3/TLS support" ON)
+OPTION(ENABLE_LARGEFILE "Enable Large File Support" ON)
+OPTION(ENABLE_ALIAS "Enable Alias plugin" ON)
+OPTION(ENABLE_ASPELL "Enable Aspell plugin" ON)
+OPTION(ENABLE_CHARSET "Enable Charset plugin" ON)
+OPTION(ENABLE_DEMO "Enable Demo plugin" OFF)
+OPTION(ENABLE_FIFO "Enable FIFO plugin" ON)
+OPTION(ENABLE_IRC "Enable IRC plugin" ON)
+OPTION(ENABLE_LOGGER "Enable Logger plugin" ON)
+OPTION(ENABLE_RELAY "Enable Relay plugin" ON)
+OPTION(ENABLE_RMODIFIER "Enable Rmodifier plugin" ON)
+OPTION(ENABLE_SCRIPT "Enable Script plugin (scripts manager)" ON)
+OPTION(ENABLE_SCRIPTS "Enable script plugins (perl, python, ...)" ON)
+OPTION(ENABLE_PERL "Enable Perl scripting language" ON)
+OPTION(ENABLE_PYTHON "Enable Python scripting language" ON)
+OPTION(ENABLE_RUBY "Enable Ruby scripting language" ON)
+OPTION(ENABLE_LUA "Enable Lua scripting language" ON)
+OPTION(ENABLE_TCL "Enable Tcl scripting language" ON)
+OPTION(ENABLE_GUILE "Enable Scheme (guile) scripting language" ON)
+OPTION(ENABLE_XFER "Enable Xfer plugin" ON)
+OPTION(ENABLE_DOC "Enable Documentation" ON)
IF(NOT DEFINED WEECHAT_HOME OR "${WEECHAT_HOME}" STREQUAL "")
SET(WEECHAT_HOME "~/.weechat")
diff --git a/ChangeLog b/ChangeLog
index 4b1dbee7d..95f65233b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
WeeChat ChangeLog
=================
Sébastien Helleu <flashcode@flashtux.org>
-v0.3.9-dev, 2012-08-08
+v0.3.9-dev, 2012-08-14
Version 0.3.9 (under dev!)
@@ -73,6 +73,8 @@ Version 0.3.9 (under dev!)
* relay: fix freeze when writing on relay socket (use non-blocking sockets in
relay for irc and weechat protocols) (bug #36655)
* ruby: detect ruby version 1.9.3 in cmake and autotools
+* script: new plugin "script" (scripts manager, replacing scripts weeget.py and
+ script.pl)
* scripts: add signals for scripts loaded/unloaded/installed/removed
* scripts: add hdata with list of scripts for each language
* scripts: fix deletion of configuration files when script is unloaded
diff --git a/configure.in b/configure.in
index feaaf99da..615d25d68 100644
--- a/configure.in
+++ b/configure.in
@@ -98,11 +98,9 @@ AC_CHECK_FUNCS([gethostbyname gethostname getsockname gettimeofday inet_ntoa mem
AH_VERBATIM([PREFIX], [#undef PREFIX])
AH_VERBATIM([WEECHAT_LIBDIR], [#undef WEECHAT_LIBDIR])
AH_VERBATIM([WEECHAT_SHAREDIR], [#undef WEECHAT_SHAREDIR])
-AH_VERBATIM([HAVE_GCRYPT], [#undef HAVE_GCRYPT])
AH_VERBATIM([HAVE_GNUTLS], [#undef HAVE_GNUTLS])
AH_VERBATIM([HAVE_FLOCK], [#undef HAVE_FLOCK])
AH_VERBATIM([HAVE_EAT_NEWLINE_GLITCH], [#undef HAVE_EAT_NEWLINE_GLITCH])
-AH_VERBATIM([HAVE_ZLIB], [#undef HAVE_ZLIB])
AH_VERBATIM([PLUGIN_ALIAS], [#undef PLUGIN_ALIAS])
AH_VERBATIM([PLUGIN_ASPELL], [#undef PLUGIN_ASPELL])
AH_VERBATIM([PLUGIN_CHARSET], [#undef PLUGIN_CHARSET])
@@ -112,6 +110,7 @@ AH_VERBATIM([PLUGIN_IRC], [#undef PLUGIN_IRC])
AH_VERBATIM([PLUGIN_LOGGER], [#undef PLUGIN_LOGGER])
AH_VERBATIM([PLUGIN_RELAY], [#undef PLUGIN_RELAY])
AH_VERBATIM([PLUGIN_RMODIFIER], [#undef PLUGIN_RMODIFIER])
+AH_VERBATIM([PLUGIN_SCRIPT], [#undef PLUGIN_SCRIPT])
AH_VERBATIM([PLUGIN_PERL], [#undef PLUGIN_PERL])
AH_VERBATIM([PLUGIN_PYTHON], [#undef PLUGIN_PYTHON])
AH_VERBATIM([PLUGIN_RUBY], [#undef PLUGIN_RUBY])
@@ -126,9 +125,7 @@ AH_VERBATIM([WEECHAT_HOME], [#define WEECHAT_HOME "~/.weechat"])
AC_ARG_ENABLE(ncurses, [ --disable-ncurses turn off ncurses interface (default=compiled if found)],enable_ncurses=$enableval,enable_ncurses=yes)
AC_ARG_ENABLE(gtk, [ --enable-gtk turn on Gtk interface (default=off)],enable_gtk=$enableval,enable_gtk=no)
-AC_ARG_ENABLE(gcrypt, [ --disable-gcrypt turn off gcrypt support (default=compiled if found)],enable_gcrypt=$enableval,enable_gcrypt=yes)
AC_ARG_ENABLE(gnutls, [ --disable-gnutls turn off gnutls support (default=compiled if found)],enable_gnutls=$enableval,enable_gnutls=yes)
-AC_ARG_ENABLE(zlib, [ --disable-zlib turn off zlib support (default=compiled if found)],enable_zlib=$enableval,enable_zlib=yes)
AC_ARG_ENABLE(largefile, [ --disable-largefile turn off Large File Support (default=on)],enable_largefile=$enableval,enable_largefile=yes)
AC_ARG_ENABLE(alias, [ --disable-alias turn off Alias plugin (default=compiled)],enable_alias=$enableval,enable_alias=yes)
AC_ARG_ENABLE(aspell, [ --disable-aspell turn off Aspell plugin (default=compiled)],enable_aspell=$enableval,enable_aspell=yes)
@@ -139,7 +136,8 @@ AC_ARG_ENABLE(irc, [ --disable-irc turn off IRC plugin (defa
AC_ARG_ENABLE(logger, [ --disable-logger turn off Logger plugin (default=compiled)],enable_logger=$enableval,enable_logger=yes)
AC_ARG_ENABLE(relay, [ --disable-relay turn off Relay plugin (default=compiled)],enable_relay=$enableval,enable_relay=yes)
AC_ARG_ENABLE(rmodifier, [ --disable-rmodifier turn off Rmodifier plugin (default=compiled)],enable_rmodifier=$enableval,enable_rmodifier=yes)
-AC_ARG_ENABLE(scripts, [ --disable-scripts turn off script plugins (default=compiled if found)],enable_scripts=$enableval,enable_scripts=yes)
+AC_ARG_ENABLE(script, [ --disable-script turn off Script plugin (default=compiled)],enable_script=$enableval,enable_script=yes)
+AC_ARG_ENABLE(scripts, [ --disable-scripts turn off script plugins (perl, python, ...) (default=compiled if found)],enable_scripts=$enableval,enable_scripts=yes)
AC_ARG_ENABLE(perl, [ --disable-perl turn off Perl script plugin (default=compiled if found)],enable_perl=$enableval,enable_perl=yes)
AC_ARG_ENABLE(python, [ --disable-python turn off Python script plugin (default=compiled if found)],enable_python=$enableval,enable_python=yes)
AC_ARG_ENABLE(ruby, [ --disable-ruby turn off Ruby script plugin (default=compiled if found)],enable_ruby=$enableval,enable_ruby=yes)
@@ -400,6 +398,14 @@ else
not_asked="$not_asked rmodifier"
fi
+# --------------------------------- script -------------------------------------
+
+if test "x$enable_script" = "xyes" ; then
+ AC_DEFINE(PLUGIN_SCRIPT)
+else
+ not_asked="$not_asked script"
+fi
+
# ---------------------------------- perl --------------------------------------
PERL_VERSION=
@@ -777,30 +783,21 @@ fi
# gcrypt
# ------------------------------------------------------------------------------
-if test "x$enable_gcrypt" = "xyes" ; then
- AC_CHECK_HEADER(gcrypt.h,ac_found_gcrypt_header="yes",ac_found_gcrypt_header="no")
- AC_CHECK_LIB(gcrypt,gcry_check_version,ac_found_gcrypt_lib="yes",ac_found_gcrypt_lib="no")
+AC_CHECK_HEADER(gcrypt.h,ac_found_gcrypt_header="yes",ac_found_gcrypt_header="no")
+AC_CHECK_LIB(gcrypt,gcry_check_version,ac_found_gcrypt_lib="yes",ac_found_gcrypt_lib="no")
- AC_MSG_CHECKING(for gcrypt headers and librairies)
- if test "x$ac_found_gcrypt_header" = "xno" -o "x$ac_found_gcrypt_lib" = "xno" ; then
- AC_MSG_RESULT(no)
- AC_MSG_WARN([
+AC_MSG_CHECKING(for gcrypt headers and librairies)
+if test "x$ac_found_gcrypt_header" = "xno" -o "x$ac_found_gcrypt_lib" = "xno" ; then
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
*** libgcrypt was not found. You may want to get it from ftp://ftp.gnupg.org/gcrypt/libgcrypt/
-*** WeeChat will be built without gcrypt support.
-*** Some features like SASL authentication with IRC server using mechanism DH-BLOWFISH will be disabled.])
- enable_gcrypt="no"
- not_found="$not_found gcrypt"
- else
- AC_MSG_RESULT(yes)
- GCRYPT_CFLAGS=`libgcrypt-config --cflags`
- GCRYPT_LFLAGS=`libgcrypt-config --libs`
- AC_SUBST(GCRYPT_CFLAGS)
- AC_SUBST(GCRYPT_LFLAGS)
- AC_DEFINE(HAVE_GCRYPT)
- CFLAGS="$CFLAGS -DHAVE_GCRYPT"
- fi
+*** or try to install libgcrypt-dev with your software package manager.])
else
- not_asked="$not_asked gcrypt"
+ AC_MSG_RESULT(yes)
+ GCRYPT_CFLAGS=`libgcrypt-config --cflags`
+ GCRYPT_LFLAGS=`libgcrypt-config --libs`
+ AC_SUBST(GCRYPT_CFLAGS)
+ AC_SUBST(GCRYPT_LFLAGS)
fi
# ------------------------------------------------------------------------------
@@ -903,30 +900,21 @@ fi
# zlib
# ------------------------------------------------------------------------------
-if test "x$enable_zlib" = "xyes" ; then
- AC_CHECK_HEADER(zlib.h,ac_found_zlib_header="yes",ac_found_zlib_header="no")
- AC_CHECK_LIB(z,compress2,ac_found_zlib_lib="yes",ac_found_zlib_lib="no")
+AC_CHECK_HEADER(zlib.h,ac_found_zlib_header="yes",ac_found_zlib_header="no")
+AC_CHECK_LIB(z,compress2,ac_found_zlib_lib="yes",ac_found_zlib_lib="no")
- AC_MSG_CHECKING(for zlib headers and librairies)
- if test "x$ac_found_zlib_header" = "xno" -o "x$ac_found_zlib_lib" = "xno" ; then
- AC_MSG_RESULT(no)
- AC_MSG_WARN([
+AC_MSG_CHECKING(for zlib headers and librairies)
+if test "x$ac_found_zlib_header" = "xno" -o "x$ac_found_zlib_lib" = "xno" ; then
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
*** zlib was not found. You may want to get it from http://zlib.net/
-*** WeeChat will be built without zlib support.
-*** Compression of packets in Relay plugin will be disabled (for WeeChat protocol).])
- enable_zlib="no"
- not_found="$not_found zlib"
- else
- AC_MSG_RESULT(yes)
- ZLIB_CFLAGS=`pkg-config zlib --cflags`
- ZLIB_LFLAGS=`pkg-config zlib --libs`
- AC_SUBST(ZLIB_CFLAGS)
- AC_SUBST(ZLIB_LFLAGS)
- AC_DEFINE(HAVE_ZLIB)
- CFLAGS="$CFLAGS -DHAVE_ZLIB"
- fi
+*** or try to install libcurl-dev with your software package manager.])
else
- not_asked="$not_asked zlib"
+ AC_MSG_RESULT(yes)
+ ZLIB_CFLAGS=`pkg-config zlib --cflags`
+ ZLIB_LFLAGS=`pkg-config zlib --libs`
+ AC_SUBST(ZLIB_CFLAGS)
+ AC_SUBST(ZLIB_LFLAGS)
fi
# ------------------------------------------------------------------------------
@@ -1061,8 +1049,6 @@ CFLAGS="$CFLAGS -DWEECHAT_VERSION=\\\"$VERSION\\\" -DWEECHAT_LICENSE=\\\"$LICENS
# output Makefiles
# ------------------------------------------------------------------------------
-AM_CONDITIONAL(HAVE_GCRYPT, test "$enable_gcrypt" = "yes")
-AM_CONDITIONAL(HAVE_ZLIB, test "$enable_zlib" = "yes")
AM_CONDITIONAL(HAVE_GNUTLS, test "$enable_gnutls" = "yes")
AM_CONDITIONAL(HAVE_FLOCK, test "$enable_flock" = "yes")
AM_CONDITIONAL(HAVE_EAT_NEWLINE_GLITCH, test "$enable_eatnewlineglitch" = "yes")
@@ -1077,6 +1063,7 @@ AM_CONDITIONAL(PLUGIN_IRC, test "$enable_irc" = "yes")
AM_CONDITIONAL(PLUGIN_LOGGER, test "$enable_logger" = "yes")
AM_CONDITIONAL(PLUGIN_RELAY, test "$enable_relay" = "yes")
AM_CONDITIONAL(PLUGIN_RMODIFIER, test "$enable_rmodifier" = "yes")
+AM_CONDITIONAL(PLUGIN_SCRIPT, test "$enable_script" = "yes")
AM_CONDITIONAL(PLUGIN_PERL, test "$enable_perl" = "yes")
AM_CONDITIONAL(PLUGIN_PYTHON, test "$enable_python" = "yes")
AM_CONDITIONAL(PLUGIN_RUBY, test "$enable_ruby" = "yes")
@@ -1108,6 +1095,7 @@ AC_OUTPUT([Makefile
src/plugins/logger/Makefile
src/plugins/relay/Makefile
src/plugins/rmodifier/Makefile
+ src/plugins/script/Makefile
src/plugins/perl/Makefile
src/plugins/python/Makefile
src/plugins/ruby/Makefile
@@ -1167,6 +1155,9 @@ fi
if test "x$enable_rmodifier" = "xyes"; then
listplugins="$listplugins rmodifier"
fi
+if test "x$enable_script" = "xyes"; then
+ listplugins="$listplugins script"
+fi
if test "x$enable_perl" = "xyes"; then
listplugins="$listplugins perl($PERL_VERSION)"
fi
@@ -1190,12 +1181,6 @@ if test "x$enable_xfer" = "xyes"; then
fi
listoptional=""
-if test "x$enable_gcrypt" = "xyes"; then
- listoptional="$listoptional gcrypt"
-fi
-if test "x$enable_zlib" = "xyes"; then
- listoptional="$listoptional zlib"
-fi
if test "x$enable_gnutls" = "xyes"; then
listoptional="$listoptional gnutls"
fi
diff --git a/doc/de/autogen/plugin_api/completions.txt b/doc/de/autogen/plugin_api/completions.txt
index 82d606fda..0ce582e14 100644
--- a/doc/de/autogen/plugin_api/completions.txt
+++ b/doc/de/autogen/plugin_api/completions.txt
@@ -56,6 +56,12 @@
| ruby | ruby_script | Liste der Skripten
+| script | script_files | files in script directories
+
+| script | script_scripts | list of scripts in repository
+
+| script | script_scripts_installed | list of scripts installed (from repository)
+
| tcl | tcl_script | Liste der Skripten
| weechat | bars_names | Namen der Infobars
diff --git a/doc/de/autogen/plugin_api/hdata.txt b/doc/de/autogen/plugin_api/hdata.txt
index 73e63df00..7a639fae7 100644
--- a/doc/de/autogen/plugin_api/hdata.txt
+++ b/doc/de/autogen/plugin_api/hdata.txt
@@ -257,6 +257,33 @@
'last_script' +
'scripts'
+| script | script_script | scripts from repository |
+ 'name' (string) +
+ 'name_with_extension' (string) +
+ 'language' (integer) +
+ 'author' (string) +
+ 'mail' (string) +
+ 'version' (string) +
+ 'license' (string) +
+ 'description' (string) +
+ 'tags' (string) +
+ 'requirements' (string) +
+ 'min_weechat' (string) +
+ 'max_weechat' (string) +
+ 'md5sum' (string) +
+ 'url' (string) +
+ 'popularity' (integer) +
+ 'date_added' (time) +
+ 'date_updated' (time) +
+ 'status' (integer) +
+ 'version_loaded' (string) +
+ 'displayed' (integer) +
+ 'install_order' (integer) +
+ 'prev_script' (pointer, hdata: 'script_script') +
+ 'next_script' (pointer, hdata: 'script_script') |
+ 'last_repo_script' +
+ 'repo_scripts'
+
| tcl | tcl_script | Liste der Skripten |
'filename' (string) +
'interpreter' (pointer) +
diff --git a/doc/de/autogen/plugin_api/infolists.txt b/doc/de/autogen/plugin_api/infolists.txt
index 703f82751..9e9d76de0 100644
--- a/doc/de/autogen/plugin_api/infolists.txt
+++ b/doc/de/autogen/plugin_api/infolists.txt
@@ -30,6 +30,8 @@
| ruby | ruby_script | Liste der Skripten | Skript Pointer (optional) | Name des Skriptes (darf mit einem "*" als Platzhalter beginnen oder enden) (optional)
+| script | script_script | Liste der Skripten | Skript Pointer (optional) | script name with extension (can start or end with "*" as wildcard) (optional)
+
| tcl | tcl_script | Liste der Skripten | Skript Pointer (optional) | Name des Skriptes (darf mit einem "*" als Platzhalter beginnen oder enden) (optional)
| weechat | bar | Auflistung der Bars | Bar Pointer (optional) | Bar Name (darf mit einem "*" als Platzhalter beginnen oder enden) (optional)
diff --git a/doc/de/autogen/user/script_commands.txt b/doc/de/autogen/user/script_commands.txt
new file mode 100644
index 000000000..ab430e4bd
--- /dev/null
+++ b/doc/de/autogen/user/script_commands.txt
@@ -0,0 +1,47 @@
+[[command_script_script]]
+[command]*`script`* WeeChat scripts manager::
+........................................
+/script list
+ show <script>
+ load|unload <script> [<script>...]
+ install|remove|hold <script> [<script>...]
+ upgrade
+ update
+
+ list: list loaded scripts (all languages)
+ show: show detailed info about a script
+ load: load script(s)
+ unload: unload script(s)
+ install: install/upgrade script(s)
+ remove: remove script(s)
+ hold: hold/unhold script(s) (a script held will not be upgraded any more and cannot be removed)
+ upgrade: upgrade all installed scripts which are obsolete (new version available)
+ update: update local scripts cache
+
+Without argument, this command opens a buffer with list of scripts.
+
+On script buffer, the possible status for each script are:
+ * i H r N
+ | | | | |
+ | | | | obsolete (new version available)
+ | | | running (loaded)
+ | | held
+ | installed
+ popular script
+
+Keys on script buffer:
+ alt+i install script
+ alt+r remove script
+ alt+l load script
+ alt+u unload script
+ alt+h (un)hold script
+
+Input allowed on script buffer:
+ q close buffer
+ r refresh buffer
+ s:x,y sort buffer using keys x and y (see /help script.look.sort)
+ s: reset sort (use default sort)
+ word(s) filter scripts: search word(s) in scripts (description, tags, ...)
+ * remove filter
+........................................
+
diff --git a/doc/de/autogen/user/script_options.txt b/doc/de/autogen/user/script_options.txt
new file mode 100644
index 000000000..7ff881ce1
--- /dev/null
+++ b/doc/de/autogen/user/script_options.txt
@@ -0,0 +1,155 @@
+* [[option_script.color.status_held]] *script.color.status_held*
+** Beschreibung: `color for status "held" ("H")`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `white`)
+
+* [[option_script.color.status_installed]] *script.color.status_installed*
+** Beschreibung: `color for status "installed" ("i")`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `lightcyan`)
+
+* [[option_script.color.status_obsolete]] *script.color.status_obsolete*
+** Beschreibung: `color for status "obsolete" ("N")`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `lightmagenta`)
+
+* [[option_script.color.status_popular]] *script.color.status_popular*
+** Beschreibung: `color for status "popular" ("*")`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `yellow`)
+
+* [[option_script.color.status_running]] *script.color.status_running*
+** Beschreibung: `color for status "running" ("r")`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `lightgreen`)
+
+* [[option_script.color.status_unknown]] *script.color.status_unknown*
+** Beschreibung: `color for status "unknown" ("?")`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `lightred`)
+
+* [[option_script.color.text]] *script.color.text*
+** Beschreibung: `text color in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `default`)
+
+* [[option_script.color.text_bg]] *script.color.text_bg*
+** Beschreibung: `background color in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `default`)
+
+* [[option_script.color.text_bg_selected]] *script.color.text_bg_selected*
+** Beschreibung: `background color for selected line in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `red`)
+
+* [[option_script.color.text_date]] *script.color.text_date*
+** Beschreibung: `text color of dates in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `default`)
+
+* [[option_script.color.text_date_selected]] *script.color.text_date_selected*
+** Beschreibung: `text color of dates for selected line in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `white`)
+
+* [[option_script.color.text_delimiters]] *script.color.text_delimiters*
+** Beschreibung: `text color of delimiters in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `darkgray`)
+
+* [[option_script.color.text_description]] *script.color.text_description*
+** Beschreibung: `text color of description in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `default`)
+
+* [[option_script.color.text_description_selected]] *script.color.text_description_selected*
+** Beschreibung: `text color of description for selected line in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `white`)
+
+* [[option_script.color.text_extension]] *script.color.text_extension*
+** Beschreibung: `text color of extension in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `default`)
+
+* [[option_script.color.text_extension_selected]] *script.color.text_extension_selected*
+** Beschreibung: `text color of extension for selected line in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `white`)
+
+* [[option_script.color.text_name]] *script.color.text_name*
+** Beschreibung: `text color of script name in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `cyan`)
+
+* [[option_script.color.text_name_selected]] *script.color.text_name_selected*
+** Beschreibung: `text color of script name for selected line in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `lightcyan`)
+
+* [[option_script.color.text_selected]] *script.color.text_selected*
+** Beschreibung: `text color for selected line in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `white`)
+
+* [[option_script.color.text_tags]] *script.color.text_tags*
+** Beschreibung: `text color of tags in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `brown`)
+
+* [[option_script.color.text_tags_selected]] *script.color.text_tags_selected*
+** Beschreibung: `text color of tags for selected line in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `yellow`)
+
+* [[option_script.color.text_version]] *script.color.text_version*
+** Beschreibung: `text color of version in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `magenta`)
+
+* [[option_script.color.text_version_loaded]] *script.color.text_version_loaded*
+** Beschreibung: `text color of version loaded in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `default`)
+
+* [[option_script.color.text_version_loaded_selected]] *script.color.text_version_loaded_selected*
+** Beschreibung: `text color of version loaded for selected line in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `white`)
+
+* [[option_script.color.text_version_selected]] *script.color.text_version_selected*
+** Beschreibung: `text color of version for selected line in script buffer`
+** Typ: Farbe
+** Werte: ein Farbname für WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), eine Terminal-Farbnummer oder ein Alias; Attribute können vor eine Farbe gesetzt werden (gilt ausschließlich für die Textfarbe und nicht für den Hintergrund): "*" für fett, "!" für invertiert, "_" für unterstrichen (Standardwert: `lightmagenta`)
+
+* [[option_script.look.columns]] *script.look.columns*
+** Beschreibung: `format of columns displayed in script buffer: following column identifiers are replaced by their value: %a=author, %d=description, %D=date added, %e=extension, %l=language, %L=license, %n=name with extension, %N=name, %r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version loaded, %w=min_weechat, %W=max_weechat)`
+** Typ: Zeichenkette
+** Werte: beliebige Zeichenkette (Standardwert: `"%s %n %V %v %u | %d | %t"`)
+
+* [[option_script.look.sort]] *script.look.sort*
+** Beschreibung: `default sort keys for scripts: comma-separated list of identifiers: a=author, d=date added, e=extension, i=installed, l=language, n=name, o=obsolete, p=popularity, r=running, u=date updated; char "-" can be used before identifier to reverse order; example: "i,u": installed scripts first, sorted by update date`
+** Typ: Zeichenkette
+** Werte: beliebige Zeichenkette (Standardwert: `"p,n"`)
+
+* [[option_script.scripts.cache_expire]] *script.scripts.cache_expire*
+** Beschreibung: `local cache expiration time, in minutes (-1 = never expires, 0 = always expire)`
+** Typ: integer
+** Werte: -1 .. 525600 (Standardwert: `60`)
+
+* [[option_script.scripts.dir]] *script.scripts.dir*
+** Beschreibung: `local cache directory for scripts`
+** Typ: Zeichenkette
+** Werte: beliebige Zeichenkette (Standardwert: `"%h/script"`)
+
+* [[option_script.scripts.hold]] *script.scripts.hold*
+** Beschreibung: `scripts to "hold": comma-separated list of scripts which will never been upgraded and can not be removed, for example: "buffers.pl,iset.pl"`
+** Typ: Zeichenkette
+** Werte: beliebige Zeichenkette (Standardwert: `""`)
+
+* [[option_script.scripts.url]] *script.scripts.url*
+** Beschreibung: `URL for file with list of scripts`
+** Typ: Zeichenkette
+** Werte: beliebige Zeichenkette (Standardwert: `"http://www.weechat.org/files/plugins.xml.gz"`)
+
diff --git a/doc/de/weechat_quickstart.de.txt b/doc/de/weechat_quickstart.de.txt
index c1cba2ef1..bde3077ea 100644
--- a/doc/de/weechat_quickstart.de.txt
+++ b/doc/de/weechat_quickstart.de.txt
@@ -241,21 +241,12 @@ erhältlich (z.B. weechat-plugins).
Erweiterungen werden -sofern welche gefunden worden sind- automatisch geladen (Bitte beachte
die Dokumentation zum Laden/Entladen von Erweiterungen oder Skripten).
-Einige Erweiterungen ermöglichen die Verwendung von Skripten in WeeChat (unterstützte
-Sprachen sind Perl, Python, Ruby, Lua und TCL). Diese Erweiterungen müssen mit dem
-Befehl `/plugin` geladen werden und verfügen ihrerseits über Befehle wie z.B.
-`/perl` um Perl-Skripten zu laden.
+Viele externe Skripten (der Mitarbeitenden) sind für WeeChat verfügbar, siehe:
+http://www.weechat.org/scripts
-Viele externe Erweiterungen/Skripten (der Mitarbeitenden) sind für WeeChat verfügbar,
-siehe: http://www.weechat.org/scripts
-
-Der einfachste Weg um Skripten zu installieren ist die Verwendung von 'weeget.py':
-
-. `mkdir -p ~/.weechat/python/autoload`
-. `cd ~/.weechat/python/autoload`
-. `wget http://weechat.org/files/scripts/weeget.py`
-. laden des Skript: `/python autoload`
-. Liste der Skripten: `/weeget list` (Hilfe mit: `/help weeget`)
+// TRANSLATION MISSING
+You can manage scripts in WeeChat with command `/script` (see `/help script`
+for more info).
[[more_doc]]
diff --git a/doc/de/weechat_user.de.txt b/doc/de/weechat_user.de.txt
index 4ff15c746..4f94586ea 100644
--- a/doc/de/weechat_user.de.txt
+++ b/doc/de/weechat_user.de.txt
@@ -91,13 +91,14 @@ welche Pakete optional genutzt werden können.
| cmake | | *ja* | zum kompilieren (autotools ist möglich. cmake wird aber empfohlen)
| libncursesw5-dev ^(2)^ | | *ja* | ncurses Oberfläche
| libcurl4-gnutls-dev | | *ja* | URL Transfer
-| gettext | | | Internationalisierung (Übersetzung der Mitteilungen; Hauptsprache ist englisch)
-| libgcrypt11-dev | | | SASL Authentifikation am IRC Server mittels DH-BLOWFISH Methode
+// TRANSLATION MISSING
+| zlib1g-dev | | *ja* | compression of packets in relay plugin (weechat protocol), script plugin
+// TRANSLATION MISSING
+| libgcrypt11-dev | | *ja* | SASL Authentifikation am IRC Server mittels DH-BLOWFISH Methode, script plugin
// TRANSLATION MISSING
| libgnutls-dev | ≥ 2.2.0 | | SSL Verbindung zu einem IRC Server, support of SSL in relay plugin
+| gettext | | | Internationalisierung (Übersetzung der Mitteilungen; Hauptsprache ist englisch)
| ca-certificates | | | Zertifikate für SSL Verbindungen
-// TRANSLATION MISSING
-| zlib1g-dev | | | compression of packets in relay plugin (weechat protocol)
| libaspell-dev | | | aspell Erweiterung
| python-dev | ≥ 2.5 ^(3)^ | | python Erweiterung
| libperl-dev | | | perl Erweiterung
@@ -776,29 +777,32 @@ Tasten für "mouse"-Kontext
Diese Tasten werden im Kontext "mouse" verwendet, wenn eine Mausfunktion genutzt worden ist.
+// TRANSLATION MISSING
[width="100%",cols="^.^3,^.^3,^.^3,.^10,.^8l",options="header"]
|========================================
-| Maustaste | Mausgeste | Bereich | Beschreibung | Befehl
-| ◾◽◽ | - | Chat | wechselt zum Fenster | /window ${_window_number}
-| ◾◽◽ | links | Chat | zum vorherigen Buffer springen | /window ${_window_number};/buffer +1
-| ◾◽◽ | rechts | Chat | zum nächsten Buffer springen | /window ${_window_number};/buffer +1
-| ◾◽◽ | links(lang) | Chat | Switch to first buffer | /window ${_window_number};/buffer 1
-| ◾◽◽ | rechts(lang) | Chat | wechselt zum letzten Buffer | /window ${_window_number};/input jump_last_buffer
-| Mausrad ⇑ | - | Chat | einige Zeilen im Verlaufsspeicher des Buffer nach oben blättern | /window scroll_up -window ${_window_number}
-| Mausrad ⇓ | - | Chat | einige Zeilen im Verlaufsspeicher des Buffer nach unten blättern | /window scroll_down -window ${_window_number}
-| ◾◽◽ | hoch | Nickliste | Nickliste um eine Seite nach oben blättern | /bar scroll nicklist ${_window_number} -100%
-| ◾◽◽ | runter | Nickliste | Nickliste um eine Seite nach unten blättern | /bar scroll nicklist ${_window_number} +100%
-| ◾◽◽ | hoch(lang) | Nickliste | springt zum Anfang der Nickliste | /bar scroll nicklist ${_window_number} b
-| ◾◽◽ | runter(lang) | Nickliste | springt zum Ende der Nickliste | /bar scroll nicklist ${_window_number} e
-| ◾◽◽ | - | Nickliste | öffnet privaten Chat mit Nick | /window ${_window_number};/query ${nick}
-| ◽◽◾ | - | Nickliste | führt einen whois für Nick aus | /window ${_window_number};/whois ${nick}
-| ◾◽◽ | links | Nickliste | kickt Nick | /window ${_window_number};/kick ${nick}
-| ◾◽◽ | links(lang) | Nickliste | kickt und verbannt Nick | /window ${_window_number};/kickban ${nick}
-| ◽◽◾ | links | Nickliste | verbannt Nick | /window ${_window_number};/ban ${nick}
-| ◽◽◾ | - | Input | fängt ein Mausereignis und fügt dieses in die Befehlszeile ein | /input grab_mouse_area
-| Mausrad ⇑ | - | jede Bar | blättert Bar um 10% nach oben | /bar scroll ${_bar_name} ${_window_number} -20%
-| Mausrad ⇓ | - | jede Bar | blättert Bar um 10% nach unten | /bar scroll ${_bar_name} ${_window_number} +20%
-| ◽◾◽ | - | überall | aktiviert den Cursor-Modus an dieser Position | /cursor go ${_x},${_y}
+| Maustaste | Mausgeste | Bereich | Beschreibung | Befehl
+| ◾◽◽ | - | Chat | wechselt zum Fenster | /window ${_window_number}
+| ◾◽◽ | links | Chat | zum vorherigen Buffer springen | /window ${_window_number};/buffer +1
+| ◾◽◽ | rechts | Chat | zum nächsten Buffer springen | /window ${_window_number};/buffer +1
+| ◾◽◽ | links(lang) | Chat | Switch to first buffer | /window ${_window_number};/buffer 1
+| ◾◽◽ | rechts(lang) | Chat | wechselt zum letzten Buffer | /window ${_window_number};/input jump_last_buffer
+| Mausrad ⇑ | - | Chat | einige Zeilen im Verlaufsspeicher des Buffer nach oben blättern | /window scroll_up -window ${_window_number}
+| Mausrad ⇓ | - | Chat | einige Zeilen im Verlaufsspeicher des Buffer nach unten blättern | /window scroll_down -window ${_window_number}
+| Mausrad ⇑ | - | chat (script buffer) | Move 5 lines up in script buffer | /script up 5
+| Mausrad ⇓ | - | chat (script buffer) | Move 5 lines down in script buffer | /script down 5
+| ◾◽◽ | hoch | Nickliste | Nickliste um eine Seite nach oben blättern | /bar scroll nicklist ${_window_number} -100%
+| ◾◽◽ | runter | Nickliste | Nickliste um eine Seite nach unten blättern | /bar scroll nicklist ${_window_number} +100%
+| ◾◽◽ | hoch(lang) | Nickliste | springt zum Anfang der Nickliste | /bar scroll nicklist ${_window_number} b
+| ◾◽◽ | runter(lang) | Nickliste | springt zum Ende der Nickliste | /bar scroll nicklist ${_window_number} e
+| ◾◽◽ | - | Nickliste | öffnet privaten Chat mit Nick | /window ${_window_number};/query ${nick}
+| ◽◽◾ | - | Nickliste | führt einen whois für Nick aus | /window ${_window_number};/whois ${nick}
+| ◾◽◽ | links | Nickliste | kickt Nick | /window ${_window_number};/kick ${nick}
+| ◾◽◽ | links(lang) | Nickliste | kickt und verbannt Nick | /window ${_window_number};/kickban ${nick}
+| ◽◽◾ | links | Nickliste | verbannt Nick | /window ${_window_number};/ban ${nick}
+| ◽◽◾ | - | Input | fängt ein Mausereignis und fügt dieses in die Befehlszeile ein | /input grab_mouse_area
+| Mausrad ⇑ | - | jede Bar | blättert Bar um 10% nach oben | /bar scroll ${_bar_name} ${_window_number} -20%
+| Mausrad ⇓ | - | jede Bar | blättert Bar um 10% nach unten | /bar scroll ${_bar_name} ${_window_number} +20%
+| ◽◾◽ | - | überall | aktiviert den Cursor-Modus an dieser Position | /cursor go ${_x},${_y}
|========================================
[[mouse]]
@@ -2200,10 +2204,26 @@ WeeChat unterstützt sechs Skript-Erweiterungen: Python, Perl, Ruby, Lua, Tcl un
Diese Erweiterungen können für die jeweilige Sprache die Skripten laden, ausführen und
entfernen.
+// TRANSLATION MISSING
+Another plugin called "script" is a scripts manager and is used to load/unload
+scripts of any language, and install/remove scripts of WeeChat scripts
+repository, which are visible at this URL: http://www.weechat.org/scripts
+
Sollten Sie Interesse daran haben wie man Skripten für WeeChat erstellt dann lesen Sie
bitte die 'WeeChat Scripting Guide'.
-Skripten für WeeChat finden Sie auf: http://www.weechat.org/scripts
+// TRANSLATION MISSING
+[[script_options]]
+Script options (script.conf)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+include::autogen/user/script_options.txt[]
+
+[[script_commands]]
+Script Befehle
+^^^^^^^^^^^^^^
+
+include::autogen/user/script_commands.txt[]
[[python_commands]]
Python Befehle
diff --git a/doc/docgen.py b/doc/docgen.py
index d46990387..43a4365ab 100644
--- a/doc/docgen.py
+++ b/doc/docgen.py
@@ -88,6 +88,7 @@ plugin_list = { 'weechat' : 'co',
'logger' : 'co',
'relay' : 'co',
'rmodifier': 'co',
+ 'script' : 'co',
'perl' : '',
'python' : '',
'ruby' : '',
diff --git a/doc/en/autogen/plugin_api/completions.txt b/doc/en/autogen/plugin_api/completions.txt
index bec6757fb..e0a545eb5 100644
--- a/doc/en/autogen/plugin_api/completions.txt
+++ b/doc/en/autogen/plugin_api/completions.txt
@@ -56,6 +56,12 @@
| ruby | ruby_script | list of scripts
+| script | script_files | files in script directories
+
+| script | script_scripts | list of scripts in repository
+
+| script | script_scripts_installed | list of scripts installed (from repository)
+
| tcl | tcl_script | list of scripts
| weechat | bars_names | names of bars
diff --git a/doc/en/autogen/plugin_api/hdata.txt b/doc/en/autogen/plugin_api/hdata.txt
index ee775c2dc..4c1276f56 100644
--- a/doc/en/autogen/plugin_api/hdata.txt
+++ b/doc/en/autogen/plugin_api/hdata.txt
@@ -257,6 +257,33 @@
'last_script' +
'scripts'
+| script | script_script | scripts from repository |
+ 'name' (string) +
+ 'name_with_extension' (string) +
+ 'language' (integer) +
+ 'author' (string) +
+ 'mail' (string) +
+ 'version' (string) +
+ 'license' (string) +
+ 'description' (string) +
+ 'tags' (string) +
+ 'requirements' (string) +
+ 'min_weechat' (string) +
+ 'max_weechat' (string) +
+ 'md5sum' (string) +
+ 'url' (string) +
+ 'popularity' (integer) +
+ 'date_added' (time) +
+ 'date_updated' (time) +
+ 'status' (integer) +
+ 'version_loaded' (string) +
+ 'displayed' (integer) +
+ 'install_order' (integer) +
+ 'prev_script' (pointer, hdata: 'script_script') +
+ 'next_script' (pointer, hdata: 'script_script') |
+ 'last_repo_script' +
+ 'repo_scripts'
+
| tcl | tcl_script | list of scripts |
'filename' (string) +
'interpreter' (pointer) +
diff --git a/doc/en/autogen/plugin_api/infolists.txt b/doc/en/autogen/plugin_api/infolists.txt
index 9b6b937fd..ba4720c4f 100644
--- a/doc/en/autogen/plugin_api/infolists.txt
+++ b/doc/en/autogen/plugin_api/infolists.txt
@@ -30,6 +30,8 @@
| ruby | ruby_script | list of scripts | script pointer (optional) | script name (can start or end with "*" as wildcard) (optional)
+| script | script_script | list of scripts | script pointer (optional) | script name with extension (can start or end with "*" as wildcard) (optional)
+
| tcl | tcl_script | list of scripts | script pointer (optional) | script name (can start or end with "*" as wildcard) (optional)
| weechat | bar | list of bars | bar pointer (optional) | bar name (can start or end with "*" as wildcard) (optional)
diff --git a/doc/en/autogen/user/script_commands.txt b/doc/en/autogen/user/script_commands.txt
new file mode 100644
index 000000000..ab430e4bd
--- /dev/null
+++ b/doc/en/autogen/user/script_commands.txt
@@ -0,0 +1,47 @@
+[[command_script_script]]
+[command]*`script`* WeeChat scripts manager::
+........................................
+/script list
+ show <script>
+ load|unload <script> [<script>...]
+ install|remove|hold <script> [<script>...]
+ upgrade
+ update
+
+ list: list loaded scripts (all languages)
+ show: show detailed info about a script
+ load: load script(s)
+ unload: unload script(s)
+ install: install/upgrade script(s)
+ remove: remove script(s)
+ hold: hold/unhold script(s) (a script held will not be upgraded any more and cannot be removed)
+ upgrade: upgrade all installed scripts which are obsolete (new version available)
+ update: update local scripts cache
+
+Without argument, this command opens a buffer with list of scripts.
+
+On script buffer, the possible status for each script are:
+ * i H r N
+ | | | | |
+ | | | | obsolete (new version available)
+ | | | running (loaded)
+ | | held
+ | installed
+ popular script
+
+Keys on script buffer:
+ alt+i install script
+ alt+r remove script
+ alt+l load script
+ alt+u unload script
+ alt+h (un)hold script
+
+Input allowed on script buffer:
+ q close buffer
+ r refresh buffer
+ s:x,y sort buffer using keys x and y (see /help script.look.sort)
+ s: reset sort (use default sort)
+ word(s) filter scripts: search word(s) in scripts (description, tags, ...)
+ * remove filter
+........................................
+
diff --git a/doc/en/autogen/user/script_options.txt b/doc/en/autogen/user/script_options.txt
new file mode 100644
index 000000000..bf858a874
--- /dev/null
+++ b/doc/en/autogen/user/script_options.txt
@@ -0,0 +1,155 @@
+* [[option_script.color.status_held]] *script.color.status_held*
+** description: `color for status "held" ("H")`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `white`)
+
+* [[option_script.color.status_installed]] *script.color.status_installed*
+** description: `color for status "installed" ("i")`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `lightcyan`)
+
+* [[option_script.color.status_obsolete]] *script.color.status_obsolete*
+** description: `color for status "obsolete" ("N")`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `lightmagenta`)
+
+* [[option_script.color.status_popular]] *script.color.status_popular*
+** description: `color for status "popular" ("*")`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `yellow`)
+
+* [[option_script.color.status_running]] *script.color.status_running*
+** description: `color for status "running" ("r")`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `lightgreen`)
+
+* [[option_script.color.status_unknown]] *script.color.status_unknown*
+** description: `color for status "unknown" ("?")`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `lightred`)
+
+* [[option_script.color.text]] *script.color.text*
+** description: `text color in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `default`)
+
+* [[option_script.color.text_bg]] *script.color.text_bg*
+** description: `background color in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `default`)
+
+* [[option_script.color.text_bg_selected]] *script.color.text_bg_selected*
+** description: `background color for selected line in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `red`)
+
+* [[option_script.color.text_date]] *script.color.text_date*
+** description: `text color of dates in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `default`)
+
+* [[option_script.color.text_date_selected]] *script.color.text_date_selected*
+** description: `text color of dates for selected line in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `white`)
+
+* [[option_script.color.text_delimiters]] *script.color.text_delimiters*
+** description: `text color of delimiters in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `darkgray`)
+
+* [[option_script.color.text_description]] *script.color.text_description*
+** description: `text color of description in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `default`)
+
+* [[option_script.color.text_description_selected]] *script.color.text_description_selected*
+** description: `text color of description for selected line in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `white`)
+
+* [[option_script.color.text_extension]] *script.color.text_extension*
+** description: `text color of extension in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `default`)
+
+* [[option_script.color.text_extension_selected]] *script.color.text_extension_selected*
+** description: `text color of extension for selected line in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `white`)
+
+* [[option_script.color.text_name]] *script.color.text_name*
+** description: `text color of script name in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `cyan`)
+
+* [[option_script.color.text_name_selected]] *script.color.text_name_selected*
+** description: `text color of script name for selected line in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `lightcyan`)
+
+* [[option_script.color.text_selected]] *script.color.text_selected*
+** description: `text color for selected line in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `white`)
+
+* [[option_script.color.text_tags]] *script.color.text_tags*
+** description: `text color of tags in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `brown`)
+
+* [[option_script.color.text_tags_selected]] *script.color.text_tags_selected*
+** description: `text color of tags for selected line in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `yellow`)
+
+* [[option_script.color.text_version]] *script.color.text_version*
+** description: `text color of version in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `magenta`)
+
+* [[option_script.color.text_version_loaded]] *script.color.text_version_loaded*
+** description: `text color of version loaded in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `default`)
+
+* [[option_script.color.text_version_loaded_selected]] *script.color.text_version_loaded_selected*
+** description: `text color of version loaded for selected line in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `white`)
+
+* [[option_script.color.text_version_selected]] *script.color.text_version_selected*
+** description: `text color of version for selected line in script buffer`
+** type: color
+** values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "*" for bold, "!" for reverse, "_" for underline (default value: `lightmagenta`)
+
+* [[option_script.look.columns]] *script.look.columns*
+** description: `format of columns displayed in script buffer: following column identifiers are replaced by their value: %a=author, %d=description, %D=date added, %e=extension, %l=language, %L=license, %n=name with extension, %N=name, %r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version loaded, %w=min_weechat, %W=max_weechat)`
+** type: string
+** values: any string (default value: `"%s %n %V %v %u | %d | %t"`)
+
+* [[option_script.look.sort]] *script.look.sort*
+** description: `default sort keys for scripts: comma-separated list of identifiers: a=author, d=date added, e=extension, i=installed, l=language, n=name, o=obsolete, p=popularity, r=running, u=date updated; char "-" can be used before identifier to reverse order; example: "i,u": installed scripts first, sorted by update date`
+** type: string
+** values: any string (default value: `"p,n"`)
+
+* [[option_script.scripts.cache_expire]] *script.scripts.cache_expire*
+** description: `local cache expiration time, in minutes (-1 = never expires, 0 = always expire)`
+** type: integer
+** values: -1 .. 525600 (default value: `60`)
+
+* [[option_script.scripts.dir]] *script.scripts.dir*
+** description: `local cache directory for scripts`
+** type: string
+** values: any string (default value: `"%h/script"`)
+
+* [[option_script.scripts.hold]] *script.scripts.hold*
+** description: `scripts to "hold": comma-separated list of scripts which will never been upgraded and can not be removed, for example: "buffers.pl,iset.pl"`
+** type: string
+** values: any string (default value: `""`)
+
+* [[option_script.scripts.url]] *script.scripts.url*
+** description: `URL for file with list of scripts`
+** type: string
+** values: any string (default value: `"http://www.weechat.org/files/plugins.xml.gz"`)
+
diff --git a/doc/en/weechat_quickstart.en.txt b/doc/en/weechat_quickstart.en.txt
index 7b6973a3d..a7b7a13b5 100644
--- a/doc/en/weechat_quickstart.en.txt
+++ b/doc/en/weechat_quickstart.en.txt
@@ -222,20 +222,11 @@ On some distros like Debian, plugins are available via a separate package
Plugins are automatically loaded when found (please look at the WeeChat
documentation to load/unload plugins or scripts).
-Some plugins let you use scripts in WeeChat (in many languages like Perl,
-Python, Ruby, Lua and Tcl). These plugins must be loaded with the `/plugin`
-command and they provide commands like `/perl`, used to load scripts.
+Many external scripts (from contributors) are available for WeeChat:
+http://www.weechat.org/scripts
-Many external plugins/scripts (from contributors) are available for
-WeeChat: http://www.weechat.org/scripts
-
-Easiest way to install scripts is to use script 'weeget.py':
-
-. `mkdir -p ~/.weechat/python/autoload`
-. `cd ~/.weechat/python/autoload`
-. `wget http://weechat.org/files/scripts/weeget.py`
-. load script: `/python autoload`
-. scripts list: `/weeget list` (for help: `/help weeget`)
+You can manage scripts in WeeChat with command `/script` (see `/help script`
+for more info).
[[more_doc]]
diff --git a/doc/en/weechat_user.en.txt b/doc/en/weechat_user.en.txt
index 890b5bd2c..d95995c74 100644
--- a/doc/en/weechat_user.en.txt
+++ b/doc/en/weechat_user.en.txt
@@ -91,11 +91,11 @@ compile WeeChat.
| cmake | | *yes* | build (autotools still possible, but cmake is recommended)
| libncursesw5-dev ^(2)^ | | *yes* | ncurses interface
| libcurl4-gnutls-dev | | *yes* | URL transfer
-| gettext | | | internationalization (translation of messages; base language is english)
-| libgcrypt11-dev | | | SASL authentication with IRC server using DH-BLOWFISH mechanism
+| zlib1g-dev | | *yes* | compression of packets in relay plugin (weechat protocol), script plugin
+| libgcrypt11-dev | | *yes* | SASL authentication with IRC server using DH-BLOWFISH mechanism, script plugin
| libgnutls-dev | ≥ 2.2.0 | | SSL connection to IRC server, support of SSL in relay plugin
+| gettext | | | internationalization (translation of messages; base language is english)
| ca-certificates | | | certificates for SSL connections
-| zlib1g-dev | | | compression of packets in relay plugin (weechat protocol)
| libaspell-dev | | | aspell plugin
| python-dev | ≥ 2.5 ^(3)^ | | python plugin
| libperl-dev | | | perl plugin
@@ -770,27 +770,29 @@ These keys are used in context "mouse", namely when a mouse event occurs.
[width="100%",cols="^.^3,^.^3,^.^3,.^10,.^8l",options="header"]
|========================================
-| Button | Gesture | Area | Description | Command
-| ◾◽◽ | - | chat | Switch to window | /window ${_window_number}
-| ◾◽◽ | left | chat | Switch to previous buffer | /window ${_window_number};/buffer +1
-| ◾◽◽ | right | chat | Switch to next buffer | /window ${_window_number};/buffer +1
-| ◾◽◽ | left (long) | chat | Switch to first buffer | /window ${_window_number};/buffer 1
-| ◾◽◽ | right (long) | chat | Switch to last buffer | /window ${_window_number};/input jump_last_buffer
-| wheel ⇑ | - | chat | Scroll up a few lines in buffer history | /window scroll_up -window ${_window_number}
-| wheel ⇓ | - | chat | Scroll down a few lines in buffer history | /window scroll_down -window ${_window_number}
-| ◾◽◽ | up | nicklist | Scroll up one page in nicklist | /bar scroll nicklist ${_window_number} -100%
-| ◾◽◽ | down | nicklist | Scroll down one page in nicklist | /bar scroll nicklist ${_window_number} +100%
-| ◾◽◽ | up (long) | nicklist | Go to the beginning of nicklist | /bar scroll nicklist ${_window_number} b
-| ◾◽◽ | down (long) | nicklist | Go to the end of nicklist | /bar scroll nicklist ${_window_number} e
-| ◾◽◽ | - | nicklist | Open query with nick | /window ${_window_number};/query ${nick}
-| ◽◽◾ | - | nicklist | Do a whois on nick | /window ${_window_number};/whois ${nick}
-| ◾◽◽ | left | nicklist | Kick nick | /window ${_window_number};/kick ${nick}
-| ◾◽◽ | left (long) | nicklist | Kick and ban nick | /window ${_window_number};/kickban ${nick}
-| ◽◽◾ | left | nicklist | Ban nick | /window ${_window_number};/ban ${nick}
-| ◽◽◾ | - | input | Grab a mouse event and insert its code in command line | /input grab_mouse_area
-| wheel ⇑ | - | any bar | Scroll bar by -10% | /bar scroll ${_bar_name} ${_window_number} -20%
-| wheel ⇓ | - | any bar | Scroll bar by +10% | /bar scroll ${_bar_name} ${_window_number} +20%
-| ◽◾◽ | - | anywhere | Start cursor mode at this point | /cursor go ${_x},${_y}
+| Button | Gesture | Area | Description | Command
+| ◾◽◽ | - | chat | Switch to window | /window ${_window_number}
+| ◾◽◽ | left | chat | Switch to previous buffer | /window ${_window_number};/buffer +1
+| ◾◽◽ | right | chat | Switch to next buffer | /window ${_window_number};/buffer +1
+| ◾◽◽ | left (long) | chat | Switch to first buffer | /window ${_window_number};/buffer 1
+| ◾◽◽ | right (long) | chat | Switch to last buffer | /window ${_window_number};/input jump_last_buffer
+| wheel ⇑ | - | chat | Scroll up a few lines in buffer history | /window scroll_up -window ${_window_number}
+| wheel ⇓ | - | chat | Scroll down a few lines in buffer history | /window scroll_down -window ${_window_number}
+| wheel ⇑ | - | chat (script buffer) | Move 5 lines up in script buffer | /script up 5
+| wheel ⇓ | - | chat (script buffer) | Move 5 lines down in script buffer | /script down 5
+| ◾◽◽ | up | nicklist | Scroll up one page in nicklist | /bar scroll nicklist ${_window_number} -100%
+| ◾◽◽ | down | nicklist | Scroll down one page in nicklist | /bar scroll nicklist ${_window_number} +100%
+| ◾◽◽ | up (long) | nicklist | Go to the beginning of nicklist | /bar scroll nicklist ${_window_number} b
+| ◾◽◽ | down (long) | nicklist | Go to the end of nicklist | /bar scroll nicklist ${_window_number} e
+| ◾◽◽ | - | nicklist | Open query with nick | /window ${_window_number};/query ${nick}
+| ◽◽◾ | - | nicklist | Do a whois on nick | /window ${_window_number};/whois ${nick}
+| ◾◽◽ | left | nicklist | Kick nick | /window ${_window_number};/kick ${nick}
+| ◾◽◽ | left (long) | nicklist | Kick and ban nick | /window ${_window_number};/kickban ${nick}
+| ◽◽◾ | left | nicklist | Ban nick | /window ${_window_number};/ban ${nick}
+| ◽◽◾ | - | input | Grab a mouse event and insert its code in command line | /input grab_mouse_area
+| wheel ⇑ | - | any bar | Scroll bar by -10% | /bar scroll ${_bar_name} ${_window_number} -20%
+| wheel ⇓ | - | any bar | Scroll bar by +10% | /bar scroll ${_bar_name} ${_window_number} +20%
+| ◽◾◽ | - | anywhere | Start cursor mode at this point | /cursor go ${_x},${_y}
|========================================
[[mouse]]
@@ -2158,10 +2160,24 @@ WeeChat provides 6 scripting plugins: Python, Perl, Ruby, Lua, Tcl and Guile
(scheme).
These plugins can load, execute and unload scripts for these languages.
+Another plugin called "script" is a scripts manager and is used to load/unload
+scripts of any language, and install/remove scripts of WeeChat scripts
+repository, which are visible at this URL: http://www.weechat.org/scripts
+
For more information about how to write scripts, or WeeChat API for
scripts, please read 'WeeChat Scripting Guide'.
-You can find some scripts for WeeChat here: http://www.weechat.org/scripts
+[[script_options]]
+Script options (script.conf)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+include::autogen/user/script_options.txt[]
+
+[[script_commands]]
+Script commands
+^^^^^^^^^^^^^^^
+
+include::autogen/user/script_commands.txt[]
[[python_commands]]
Python commands
diff --git a/doc/es/weechat_quickstart.es.txt b/doc/es/weechat_quickstart.es.txt
index 464ddfb1a..ae24da390 100644
--- a/doc/es/weechat_quickstart.es.txt
+++ b/doc/es/weechat_quickstart.es.txt
@@ -240,22 +240,12 @@ Los plugins se cargan de manera automática cuando son encontrados por WeeChat
(por favor, refierase a la documentación de WeeChat para ver como cargar/descargar
plugins y scripts).
-Algunos plugins, permiten usar scripts en WeeChat (en muchos lenguajes
-como Perl, Python, Ruby, Lua y Tcl). Estos plugins deben ser cargados con
-el comando `/plugin` los mismos proveen comandos como `/perl`, usados
-para cargar scripts en este lenguaje.
-
-Muchos plugins/scripts externos (de contribuidores) están disponibles
-para WeeChat en: http://www.weechat.org/scripts
-
-Una manera fácil de instalar scripts es usar un script llamado
-'weeget.py'
-
-. `mkdir -p ~/.weechat/python/autoload`
-. `cd ~/.weechat/python/autoload`
-. `wget http://weechat.org/files/scripts/weeget.py`
-. carga script: `/python autoload`
-. lista los scripts: `/weeget list` (ayuda: `/help weeget`)
+Muchos scripts externos (de contribuidores) están disponibles para WeeChat en:
+http://www.weechat.org/scripts
+
+// TRANSLATION MISSING
+You can manage scripts in WeeChat with command `/script` (see `/help script`
+for more info).
[[more_doc]]
diff --git a/doc/fr/autogen/plugin_api/completions.txt b/doc/fr/autogen/plugin_api/completions.txt
index 370e0b52d..3d6eb8292 100644
--- a/doc/fr/autogen/plugin_api/completions.txt
+++ b/doc/fr/autogen/plugin_api/completions.txt
@@ -56,6 +56,12 @@
| ruby | ruby_script | liste des scripts
+| script | script_files | fichiers dans les répertoires de script
+
+| script | script_scripts | liste des scripts du repository
+
+| script | script_scripts_installed | liste des scripts installés (du repository)
+
| tcl | tcl_script | liste des scripts
| weechat | bars_names | noms des barres
diff --git a/doc/fr/autogen/plugin_api/hdata.txt b/doc/fr/autogen/plugin_api/hdata.txt
index dcda5c998..c1b91fbf7 100644
--- a/doc/fr/autogen/plugin_api/hdata.txt
+++ b/doc/fr/autogen/plugin_api/hdata.txt
@@ -257,6 +257,33 @@
'last_script' +
'scripts'
+| script | script_script | scripts du repository |
+ 'name' (string) +
+ 'name_with_extension' (string) +
+ 'language' (integer) +
+ 'author' (string) +
+ 'mail' (string) +
+ 'version' (string) +
+ 'license' (string) +
+ 'description' (string) +
+ 'tags' (string) +
+ 'requirements' (string) +
+ 'min_weechat' (string) +
+ 'max_weechat' (string) +
+ 'md5sum' (string) +
+ 'url' (string) +
+ 'popularity' (integer) +
+ 'date_added' (time) +
+ 'date_updated' (time) +
+ 'status' (integer) +
+ 'version_loaded' (string) +
+ 'displayed' (integer) +
+ 'install_order' (integer) +
+ 'prev_script' (pointer, hdata: 'script_script') +
+ 'next_script' (pointer, hdata: 'script_script') |
+ 'last_repo_script' +
+ 'repo_scripts'
+
| tcl | tcl_script | liste des scripts |
'filename' (string) +
'interpreter' (pointer) +
diff --git a/doc/fr/autogen/plugin_api/infolists.txt b/doc/fr/autogen/plugin_api/infolists.txt
index a1d372e57..14015d5f5 100644
--- a/doc/fr/autogen/plugin_api/infolists.txt
+++ b/doc/fr/autogen/plugin_api/infolists.txt
@@ -30,6 +30,8 @@
| ruby | ruby_script | liste des scripts | pointeur vers le script (optionnel) | nom de script (peut démarrer ou se terminer par "*" comme joker) (optionnel)
+| script | script_script | liste des scripts | pointeur vers le script (optionnel) | nom du script avec extension (peut démarrer ou se terminer par "*" comme joker) (optionnel)
+
| tcl | tcl_script | liste des scripts | pointeur vers le script (optionnel) | nom de script (peut démarrer ou se terminer par "*" comme joker) (optionnel)
| weechat | bar | liste des barres | pointeur vers la barre (optionnel) | nom de barre (peut démarrer ou se terminer par "*" comme joker) (optionnel)
diff --git a/doc/fr/autogen/user/script_commands.txt b/doc/fr/autogen/user/script_commands.txt
new file mode 100644
index 000000000..ba77af871
--- /dev/null
+++ b/doc/fr/autogen/user/script_commands.txt
@@ -0,0 +1,47 @@
+[[command_script_script]]
+[command]*`script`* Gestionnaire de scripts WeeChat::
+........................................
+/script list
+ show <script>
+ load|unload <script> [<script>...]
+ install|remove|hold <script> [<script>...]
+ upgrade
+ update
+
+ list: lister les scripts chargés (tous les langages)
+ show: afficher des infos détaillées sur le script
+ load: charger un ou plusieurs scripts
+ unload: décharger un ou plusieurs scripts
+ install: installer/mettre à jour un ou plusieurs scripts
+ remove: supprimer un ou plusieurs scripts
+ hold: figer/défiger un ou plusieurs scripts (un script figé ne sera plus mis à jour et ne peut pas être supprimé)
+ upgrade: mettre à jour les scripts obsolètes (avec nouvelle version disponible)
+ update: mettre à jour le cache local des scripts
+
+Sans paramètre, cette commande ouvre un tampon avec la liste des scripts.
+
+Sur le tampon des scripts, les statuts pour chaque script sont :
+ * i H r N
+ | | | | |
+ | | | | obsolète (nouvelle version disponible)
+ | | | chargé
+ | | figé
+ | installé
+ script populaire
+
+Les touches sur le tampon des scripts :
+ alt+i installer le script
+ alt+r supprimer le script
+ alt+l charger le script
+ alt+u décharger le script
+ alt+h (dé)figer le script
+
+Entrée autorisée sur le tampon des scripts :
+ q fermer le tampon
+ r rafraîchir le tampon
+ s:x,y trier le tampon en utilisant les clés x et y (voir /help script.look.sort)
+ s: réinitialiser le tri (utiliser le tri par défaut)
+ word(s) filtrer les scripts: recherche du/des mot(s) dans les scripts (description, étiquettes, ...)
+ * supprimer le filtre
+........................................
+
diff --git a/doc/fr/autogen/user/script_options.txt b/doc/fr/autogen/user/script_options.txt
new file mode 100644
index 000000000..b3e5a0060
--- /dev/null
+++ b/doc/fr/autogen/user/script_options.txt
@@ -0,0 +1,155 @@
+* [[option_script.color.status_held]] *script.color.status_held*
+** description: `couleur du statut "figé" ("H")`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `white`)
+
+* [[option_script.color.status_installed]] *script.color.status_installed*
+** description: `couleur du statut "installé" ("i")`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `lightcyan`)
+
+* [[option_script.color.status_obsolete]] *script.color.status_obsolete*
+** description: `couleur du statut "obsolète" ("N")`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `lightmagenta`)
+
+* [[option_script.color.status_popular]] *script.color.status_popular*
+** description: `couleur du statut "populaire" ("*")`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `yellow`)
+
+* [[option_script.color.status_running]] *script.color.status_running*
+** description: `couleur du statut "chargé" ("r")`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `lightgreen`)
+
+* [[option_script.color.status_unknown]] *script.color.status_unknown*
+** description: `couleur du statut "inconnu" ("?")`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `lightred`)
+
+* [[option_script.color.text]] *script.color.text*
+** description: `couleur du texte dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `default`)
+
+* [[option_script.color.text_bg]] *script.color.text_bg*
+** description: `couleur du fond dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `default`)
+
+* [[option_script.color.text_bg_selected]] *script.color.text_bg_selected*
+** description: `couleur du fond pour la ligne sélectionnée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `red`)
+
+* [[option_script.color.text_date]] *script.color.text_date*
+** description: `couleur du texte pour les dates dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `default`)
+
+* [[option_script.color.text_date_selected]] *script.color.text_date_selected*
+** description: `couleur du texte pour les dates de la ligne sélectionnée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `white`)
+
+* [[option_script.color.text_delimiters]] *script.color.text_delimiters*
+** description: `couleur du texte pour les délimiteurs dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `darkgray`)
+
+* [[option_script.color.text_description]] *script.color.text_description*
+** description: `couleur du texte pour la description dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `default`)
+
+* [[option_script.color.text_description_selected]] *script.color.text_description_selected*
+** description: `couleur du texte pour la description de la ligne sélectionnée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `white`)
+
+* [[option_script.color.text_extension]] *script.color.text_extension*
+** description: `couleur du texte pour l'extension dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `default`)
+
+* [[option_script.color.text_extension_selected]] *script.color.text_extension_selected*
+** description: `couleur du texte pour l'extension de la ligne sélectionnée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `white`)
+
+* [[option_script.color.text_name]] *script.color.text_name*
+** description: `couleur du texte pour le nom du script dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `cyan`)
+
+* [[option_script.color.text_name_selected]] *script.color.text_name_selected*
+** description: `couleur du texte pour le nom du script de la ligne sélectionnée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `lightcyan`)
+
+* [[option_script.color.text_selected]] *script.color.text_selected*
+** description: `couleur du texte pour la ligne sélectionnée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `white`)
+
+* [[option_script.color.text_tags]] *script.color.text_tags*
+** description: `couleur du texte pour les étiquettes dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `brown`)
+
+* [[option_script.color.text_tags_selected]] *script.color.text_tags_selected*
+** description: `couleur du texte pour les étiquettes de la ligne sélectionnée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `yellow`)
+
+* [[option_script.color.text_version]] *script.color.text_version*
+** description: `couleur du texte pour la version dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `magenta`)
+
+* [[option_script.color.text_version_loaded]] *script.color.text_version_loaded*
+** description: `couleur du texte pour la version chargée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `default`)
+
+* [[option_script.color.text_version_loaded_selected]] *script.color.text_version_loaded_selected*
+** description: `couleur du texte pour la version chargée de la ligne sélectionnée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `white`)
+
+* [[option_script.color.text_version_selected]] *script.color.text_version_selected*
+** description: `couleur du texte pour la version de la ligne sélectionnée dans le tampon script`
+** type: couleur
+** valeurs: un nom de couleur WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numéro de couleur du terminal ou un alias; des attributs sont autorisés avant la couleur (seulement pour la couleur du texte, pas le fond) : "*" pour du gras, "!" pour la vidéo inverse, "_" pour du souligné (valeur par défaut: `lightmagenta`)
+
+* [[option_script.look.columns]] *script.look.columns*
+** description: `format des colonnes affichées dans le tampon des scripts: les identifiants de colonne suivants sont remplacés par leur valeur: %a=auteur, %d=description, %D=date d'ajout, %e=extension, %l=langage, %L=licence, %n=nom avec extension, %N=nom, %r=dépendances, %s=statuts, %t=étiquettes, %u=date de mise à jour, %v=version, %V=version chargée, %w=min_weechat, %W=max_weechat`
+** type: chaîne
+** valeurs: toute chaîne (valeur par défaut: `"%s %n %V %v %u | %d | %t"`)
+
+* [[option_script.look.sort]] *script.look.sort*
+** description: `tri par défaut des scripts: liste d'identifiants séparés par des virgules: a=auteur, d=date d'ajour, e=extension, i=installé, l=langage, n=nom, o=obsolète, p=populaire, r=chargé, u=date de mise à jour; le caractère "-" peut être utilisé avant l'identifiant pour inverser l'ordre; exemple: "i,u": scripts installés en premier, triés par date de mise à jour`
+** type: chaîne
+** valeurs: toute chaîne (valeur par défaut: `"p,n"`)
+
+* [[option_script.scripts.cache_expire]] *script.scripts.cache_expire*
+** description: `temps d'expiration du cache local, en minutes (-1 = n'expire jamais, 0 = expire toujours)`
+** type: entier
+** valeurs: -1 .. 525600 (valeur par défaut: `60`)
+
+* [[option_script.scripts.dir]] *script.scripts.dir*
+** description: `répertoire du cache local pour les scripts`
+** type: chaîne
+** valeurs: toute chaîne (valeur par défaut: `"%h/script"`)
+
+* [[option_script.scripts.hold]] *script.scripts.hold*
+** description: `scripts à "figer": liste de scripts séparés par des virgules qui ne seront jamais mis à jour et ne peuvent pas être supprimés, par exemple: "buffers.pl,iset.pl"`
+** type: chaîne
+** valeurs: toute chaîne (valeur par défaut: `""`)
+
+* [[option_script.scripts.url]] *script.scripts.url*
+** description: `URL pour le fichier avec la liste des scripts`
+** type: chaîne
+** valeurs: toute chaîne (valeur par défaut: `"http://www.weechat.org/files/plugins.xml.gz"`)
+
diff --git a/doc/fr/weechat_quickstart.fr.txt b/doc/fr/weechat_quickstart.fr.txt
index f4aca2e2c..1fca41c84 100644
--- a/doc/fr/weechat_quickstart.fr.txt
+++ b/doc/fr/weechat_quickstart.fr.txt
@@ -234,22 +234,11 @@ Les extensions sont automatiquement chargées lorsqu'elles sont trouvées
(merci de regarder la documentation WeeChat pour charger/décharger des
extensions ou des scripts).
-Des extensions permettent d'utiliser des scripts dans WeeChat (dans
-différent langages comme Perl, Python, Ruby, Lua et Tcl). Ces extensions
-doivent être chargées avec la commande `/plugin` et elles fournissent des
-commandes telles que `/perl`, utilisées pour charger les scripts.
-
-Plusieurs extensions/scripts (de contributeurs) sont disponibles pour
-WeeChat : http://www.weechat.org/scripts
-
-La manière la plus simple pour installer des scripts consiste à utiliser le
-script 'weeget.py' :
-
-. `mkdir -p ~/.weechat/python/autoload`
-. `cd ~/.weechat/python/autoload`
-. `wget http://weechat.org/files/scripts/weeget.py`
-. chargez le script : `/python autoload`
-. liste des scripts : `/weeget list` (pour l'aide: `/help weeget`)
+De nombreux scripts externes (de contributeurs) sont disponibles pour WeeChat :
+http://www.weechat.org/scripts
+
+Vous pouvez gérer les scripts dans WeeChat avec la commande `/script` (voir
+`/help script` pour plus d'info).
[[more_doc]]
diff --git a/doc/fr/weechat_user.fr.txt b/doc/fr/weechat_user.fr.txt
index 31250f39d..e26bf00b3 100644
--- a/doc/fr/weechat_user.fr.txt
+++ b/doc/fr/weechat_user.fr.txt
@@ -93,12 +93,11 @@ compiler WeeChat.
| cmake | | *oui* | construction (autotools toujours possible, mais cmake est recommandé)
| libncursesw5-dev ^(2)^ | | *oui* | interface ncurses
| libcurl4-gnutls-dev | | *oui* | transfert d'URL
-| gettext | | | internationalisation (traduction des messages; la langue de base est l'anglais)
-| libgcrypt11-dev | | | authentification SASL avec le serveur IRC, en utilisant le mécanisme DH-BLOWFISH
+| zlib1g-dev | | *oui* | compression des paquets dans l'extension relay (protocole weechat), extension script
+| libgcrypt11-dev | | *oui* | authentification SASL avec le serveur IRC, en utilisant le mécanisme DH-BLOWFISH, extension script
| libgnutls-dev | ≥ 2.2.0 | | connexion SSL au serveur IRC, support SSL dans l'extension relay
+| gettext | | | internationalisation (traduction des messages; la langue de base est l'anglais)
| ca-certificates | | | certificats pour les connexions SSL
-// TRANSLATION MISSING
-| zlib1g-dev | | | compression des paquets dans l'extension relay (protocole weechat)
| libaspell-dev | | | extension aspell
| python-dev | ≥ 2.5 ^(3)^ | | extension python
| libperl-dev | | | extension perl
@@ -786,27 +785,29 @@ Ces touches sont utilisées dans le contexte "mouse", c'est-à-dire lorsqu'un
[width="100%",cols="^.^3,^.^3,^.^3,.^10,.^8l",options="header"]
|========================================
-| Bouton | Geste | Zone | Description | Commande
-| ◾◽◽ | - | chat | Aller à la fenêtre | /window ${_window_number}
-| ◾◽◽ | left | chat | Aller au tampon précédent | /window ${_window_number};/buffer +1
-| ◾◽◽ | right | chat | Aller au tampon suivant | /window ${_window_number};/buffer +1
-| ◾◽◽ | left (long) | chat | Aller au premier tampon | /window ${_window_number};/buffer 1
-| ◾◽◽ | right (long) | chat | Aller au dernier tampon | /window ${_window_number};/input jump_last_buffer
-| roulette ⇑ | - | chat | Monter de quelques lignes dans l'historique du tampon | /window scroll_up -window ${_window_number}
-| roulette ⇓ | - | chat | Descendre de quelques lignes dans l'historique du tampon | /window scroll_down -window ${_window_number}
-| ◾◽◽ | up | liste des pseudos | Monter d'une page dans la liste des pseudos | /bar scroll nicklist ${_window_number} -100%
-| ◾◽◽ | down | liste des pseudos | Descendre d'une page dans la liste des pseudos | /bar scroll nicklist ${_window_number} +100%
-| ◾◽◽ | up (long) | liste des pseudos | Aller au début de la liste des pseudos | /bar scroll nicklist ${_window_number} b
-| ◾◽◽ | down (long) | liste des pseudos | Aller à la fin de la liste des pseudos | /bar scroll nicklist ${_window_number} e
-| ◾◽◽ | - | liste des pseudos | Ouvrir une discussion avec le pseudo | /window ${_window_number};/query ${nick}
-| ◽◽◾ | - | liste des pseudos | Effectuer un whois sur le pseudo | /window ${_window_number};/whois ${nick}
-| ◾◽◽ | left | liste des pseudos | Retirer par la force le pseudo | /window ${_window_number};/kick ${nick}
-| ◾◽◽ | left (long) | liste des pseudos | Retirer par la force et bannir le pseudo | /window ${_window_number};/kickban ${nick}
-| ◽◽◾ | left | liste des pseudos | Bannir le pseudo | /window ${_window_number};/ban ${nick}
-| ◽◽◾ | - | ligne de commande | Capturer un évènement de la souris et insérer son code sur la ligne de commande | /input grab_mouse_area
-| roulette ⇑ | - | toute barre | Faire défiler la barre de -10% | /bar scroll ${_bar_name} ${_window_number} -20%
-| roulette ⇓ | - | toute barre | Faire défiler la barre de +10% | /bar scroll ${_bar_name} ${_window_number} +20%
-| ◽◾◽ | - | n'importe où | Démarrer le mode curseur ("cursor") à ce point | /cursor go ${_x},${_y}
+| Bouton | Geste | Zone | Description | Commande
+| ◾◽◽ | - | chat | Aller à la fenêtre | /window ${_window_number}
+| ◾◽◽ | left | chat | Aller au tampon précédent | /window ${_window_number};/buffer +1
+| ◾◽◽ | right | chat | Aller au tampon suivant | /window ${_window_number};/buffer +1
+| ◾◽◽ | left (long) | chat | Aller au premier tampon | /window ${_window_number};/buffer 1
+| ◾◽◽ | right (long) | chat | Aller au dernier tampon | /window ${_window_number};/input jump_last_buffer
+| roulette ⇑ | - | chat | Monter de quelques lignes dans l'historique du tampon | /window scroll_up -window ${_window_number}
+| roulette ⇓ | - | chat | Descendre de quelques lignes dans l'historique du tampon | /window scroll_down -window ${_window_number}
+| roulette ⇑ | - | chat (tampon script) | Monter de 5 lignes dans le tampon script | /script up 5
+| roulette ⇓ | - | chat (tampon script) | Descendre de 5 lignes dans le tampon script | /script down 5
+| ◾◽◽ | up | liste des pseudos | Monter d'une page dans la liste des pseudos | /bar scroll nicklist ${_window_number} -100%
+| ◾◽◽ | down | liste des pseudos | Descendre d'une page dans la liste des pseudos | /bar scroll nicklist ${_window_number} +100%
+| ◾◽◽ | up (long) | liste des pseudos | Aller au début de la liste des pseudos | /bar scroll nicklist ${_window_number} b
+| ◾◽◽ | down (long) | liste des pseudos | Aller à la fin de la liste des pseudos | /bar scroll nicklist ${_window_number} e
+| ◾◽◽ | - | liste des pseudos | Ouvrir une discussion avec le pseudo | /window ${_window_number};/query ${nick}
+| ◽◽◾ | - | liste des pseudos | Effectuer un whois sur le pseudo | /window ${_window_number};/whois ${nick}
+| ◾◽◽ | left | liste des pseudos | Retirer par la force le pseudo | /window ${_window_number};/kick ${nick}
+| ◾◽◽ | left (long) | liste des pseudos | Retirer par la force et bannir le pseudo | /window ${_window_number};/kickban ${nick}
+| ◽◽◾ | left | liste des pseudos | Bannir le pseudo | /window ${_window_number};/ban ${nick}
+| ◽◽◾ | - | ligne de commande | Capturer un évènement de la souris et insérer son code sur la ligne de commande | /input grab_mouse_area
+| roulette ⇑ | - | toute barre | Faire défiler la barre de -10% | /bar scroll ${_bar_name} ${_window_number} -20%
+| roulette ⇓ | - | toute barre | Faire défiler la barre de +10% | /bar scroll ${_bar_name} ${_window_number} +20%
+| ◽◾◽ | - | n'importe où | Démarrer le mode curseur ("cursor") à ce point | /cursor go ${_x},${_y}
|========================================
[[mouse]]
@@ -2222,11 +2223,25 @@ Guile (scheme).
Ces extensions peuvent charger, exécuter et décharger des scripts pour ces
langages.
+Une autre extension appelée "script" est un gestionnaire de scripts et est
+utilisé pour charger/décharger des scripts pour n'importe quel langage, et
+installer/supprimer des scripts du repository WeeChat, qui sont visibles à cette
+URL: http://www.weechat.org/scripts
+
Pour plus d'informations sur comment écrire des scripts, ou sur l'API
WeeChat pour les scripts, merci de lire le 'Le Guide pour Scripts WeeChat'.
-Vous pouvez trouver des scripts pour WeeChat ici :
-http://www.weechat.org/scripts
+[[script_options]]
+Options Script (script.conf)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+include::autogen/user/script_options.txt[]
+
+[[script_commands]]
+Commandes Script
+^^^^^^^^^^^^^^^^
+
+include::autogen/user/script_commands.txt[]
[[python_commands]]
Commandes Python
diff --git a/doc/it/autogen/plugin_api/completions.txt b/doc/it/autogen/plugin_api/completions.txt
index 3d8b2a5cc..506f2a811 100644
--- a/doc/it/autogen/plugin_api/completions.txt
+++ b/doc/it/autogen/plugin_api/completions.txt
@@ -56,6 +56,12 @@
| ruby | ruby_script | elenco degli script
+| script | script_files | files in script directories
+
+| script | script_scripts | list of scripts in repository
+
+| script | script_scripts_installed | list of scripts installed (from repository)
+
| tcl | tcl_script | elenco degli script
| weechat | bars_names | nomi delle barre
diff --git a/doc/it/autogen/plugin_api/hdata.txt b/doc/it/autogen/plugin_api/hdata.txt
index 1a5b3e22c..20b6d9f90 100644
--- a/doc/it/autogen/plugin_api/hdata.txt
+++ b/doc/it/autogen/plugin_api/hdata.txt
@@ -257,6 +257,33 @@
'last_script' +
'scripts'
+| script | script_script | scripts from repository |
+ 'name' (string) +
+ 'name_with_extension' (string) +
+ 'language' (integer) +
+ 'author' (string) +
+ 'mail' (string) +
+ 'version' (string) +
+ 'license' (string) +
+ 'description' (string) +
+ 'tags' (string) +
+ 'requirements' (string) +
+ 'min_weechat' (string) +
+ 'max_weechat' (string) +
+ 'md5sum' (string) +
+ 'url' (string) +
+ 'popularity' (integer) +
+ 'date_added' (time) +
+ 'date_updated' (time) +
+ 'status' (integer) +
+ 'version_loaded' (string) +
+ 'displayed' (integer) +
+ 'install_order' (integer) +
+ 'prev_script' (pointer, hdata: 'script_script') +
+ 'next_script' (pointer, hdata: 'script_script') |
+ 'last_repo_script' +
+ 'repo_scripts'
+
| tcl | tcl_script | elenco degli script |
'filename' (string) +
'interpreter' (pointer) +
diff --git a/doc/it/autogen/plugin_api/infolists.txt b/doc/it/autogen/plugin_api/infolists.txt
index c618f577c..d94316c29 100644
--- a/doc/it/autogen/plugin_api/infolists.txt
+++ b/doc/it/autogen/plugin_api/infolists.txt
@@ -30,6 +30,8 @@
| ruby | ruby_script | elenco degli script | puntatore allo script (opzionale) | nome script (può iniziare o terminare con "*" come carattere jolly) (opzionale)
+| script | script_script | elenco degli script | puntatore allo script (opzionale) | script name with extension (can start or end with "*" as wildcard) (optional)
+
| tcl | tcl_script | elenco degli script | puntatore allo script (opzionale) | nome script (può iniziare o terminare con "*" come carattere jolly) (opzionale)
| weechat | bar | elenco delle barre | puntatore alla barra (opzionale) | nome barra (può iniziare o terminare con "*" come carattere jolly (opzionale)
diff --git a/doc/it/autogen/user/script_commands.txt b/doc/it/autogen/user/script_commands.txt
new file mode 100644
index 000000000..ab430e4bd
--- /dev/null
+++ b/doc/it/autogen/user/script_commands.txt
@@ -0,0 +1,47 @@
+[[command_script_script]]
+[command]*`script`* WeeChat scripts manager::
+........................................
+/script list
+ show <script>
+ load|unload <script> [<script>...]
+ install|remove|hold <script> [<script>...]
+ upgrade
+ update
+
+ list: list loaded scripts (all languages)
+ show: show detailed info about a script
+ load: load script(s)
+ unload: unload script(s)
+ install: install/upgrade script(s)
+ remove: remove script(s)
+ hold: hold/unhold script(s) (a script held will not be upgraded any more and cannot be removed)
+ upgrade: upgrade all installed scripts which are obsolete (new version available)
+ update: update local scripts cache
+
+Without argument, this command opens a buffer with list of scripts.
+
+On script buffer, the possible status for each script are:
+ * i H r N
+ | | | | |
+ | | | | obsolete (new version available)
+ | | | running (loaded)
+ | | held
+ | installed
+ popular script
+
+Keys on script buffer:
+ alt+i install script
+ alt+r remove script
+ alt+l load script
+ alt+u unload script
+ alt+h (un)hold script
+
+Input allowed on script buffer:
+ q close buffer
+ r refresh buffer
+ s:x,y sort buffer using keys x and y (see /help script.look.sort)
+ s: reset sort (use default sort)
+ word(s) filter scripts: search word(s) in scripts (description, tags, ...)
+ * remove filter
+........................................
+
diff --git a/doc/it/autogen/user/script_options.txt b/doc/it/autogen/user/script_options.txt
new file mode 100644
index 000000000..2db7cf2d8
--- /dev/null
+++ b/doc/it/autogen/user/script_options.txt
@@ -0,0 +1,155 @@
+* [[option_script.color.status_held]] *script.color.status_held*
+** descrizione: `color for status "held" ("H")`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `white`)
+
+* [[option_script.color.status_installed]] *script.color.status_installed*
+** descrizione: `color for status "installed" ("i")`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `lightcyan`)
+
+* [[option_script.color.status_obsolete]] *script.color.status_obsolete*
+** descrizione: `color for status "obsolete" ("N")`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `lightmagenta`)
+
+* [[option_script.color.status_popular]] *script.color.status_popular*
+** descrizione: `color for status "popular" ("*")`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `yellow`)
+
+* [[option_script.color.status_running]] *script.color.status_running*
+** descrizione: `color for status "running" ("r")`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `lightgreen`)
+
+* [[option_script.color.status_unknown]] *script.color.status_unknown*
+** descrizione: `color for status "unknown" ("?")`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `lightred`)
+
+* [[option_script.color.text]] *script.color.text*
+** descrizione: `text color in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `default`)
+
+* [[option_script.color.text_bg]] *script.color.text_bg*
+** descrizione: `background color in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `default`)
+
+* [[option_script.color.text_bg_selected]] *script.color.text_bg_selected*
+** descrizione: `background color for selected line in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `red`)
+
+* [[option_script.color.text_date]] *script.color.text_date*
+** descrizione: `text color of dates in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `default`)
+
+* [[option_script.color.text_date_selected]] *script.color.text_date_selected*
+** descrizione: `text color of dates for selected line in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `white`)
+
+* [[option_script.color.text_delimiters]] *script.color.text_delimiters*
+** descrizione: `text color of delimiters in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `darkgray`)
+
+* [[option_script.color.text_description]] *script.color.text_description*
+** descrizione: `text color of description in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `default`)
+
+* [[option_script.color.text_description_selected]] *script.color.text_description_selected*
+** descrizione: `text color of description for selected line in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `white`)
+
+* [[option_script.color.text_extension]] *script.color.text_extension*
+** descrizione: `text color of extension in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `default`)
+
+* [[option_script.color.text_extension_selected]] *script.color.text_extension_selected*
+** descrizione: `text color of extension for selected line in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `white`)
+
+* [[option_script.color.text_name]] *script.color.text_name*
+** descrizione: `text color of script name in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `cyan`)
+
+* [[option_script.color.text_name_selected]] *script.color.text_name_selected*
+** descrizione: `text color of script name for selected line in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `lightcyan`)
+
+* [[option_script.color.text_selected]] *script.color.text_selected*
+** descrizione: `text color for selected line in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `white`)
+
+* [[option_script.color.text_tags]] *script.color.text_tags*
+** descrizione: `text color of tags in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `brown`)
+
+* [[option_script.color.text_tags_selected]] *script.color.text_tags_selected*
+** descrizione: `text color of tags for selected line in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `yellow`)
+
+* [[option_script.color.text_version]] *script.color.text_version*
+** descrizione: `text color of version in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `magenta`)
+
+* [[option_script.color.text_version_loaded]] *script.color.text_version_loaded*
+** descrizione: `text color of version loaded in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `default`)
+
+* [[option_script.color.text_version_loaded_selected]] *script.color.text_version_loaded_selected*
+** descrizione: `text color of version loaded for selected line in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `white`)
+
+* [[option_script.color.text_version_selected]] *script.color.text_version_selected*
+** descrizione: `text color of version for selected line in script buffer`
+** tipo: colore
+** valori: un nome colore di WeeChat (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), un numero colore del terminale o un alias; attributi consentiti prima del colore (solo per il colore del testo, non lo sfondo): "*" per il grassetto, "!" per l'inverso, "_" per la sottolineatura (valore predefinito: `lightmagenta`)
+
+* [[option_script.look.columns]] *script.look.columns*
+** descrizione: `format of columns displayed in script buffer: following column identifiers are replaced by their value: %a=author, %d=description, %D=date added, %e=extension, %l=language, %L=license, %n=name with extension, %N=name, %r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version loaded, %w=min_weechat, %W=max_weechat)`
+** tipo: stringa
+** valori: qualsiasi stringa (valore predefinito: `"%s %n %V %v %u | %d | %t"`)
+
+* [[option_script.look.sort]] *script.look.sort*
+** descrizione: `default sort keys for scripts: comma-separated list of identifiers: a=author, d=date added, e=extension, i=installed, l=language, n=name, o=obsolete, p=popularity, r=running, u=date updated; char "-" can be used before identifier to reverse order; example: "i,u": installed scripts first, sorted by update date`
+** tipo: stringa
+** valori: qualsiasi stringa (valore predefinito: `"p,n"`)
+
+* [[option_script.scripts.cache_expire]] *script.scripts.cache_expire*
+** descrizione: `local cache expiration time, in minutes (-1 = never expires, 0 = always expire)`
+** tipo: intero
+** valori: -1 .. 525600 (valore predefinito: `60`)
+
+* [[option_script.scripts.dir]] *script.scripts.dir*
+** descrizione: `local cache directory for scripts`
+** tipo: stringa
+** valori: qualsiasi stringa (valore predefinito: `"%h/script"`)
+
+* [[option_script.scripts.hold]] *script.scripts.hold*
+** descrizione: `scripts to "hold": comma-separated list of scripts which will never been upgraded and can not be removed, for example: "buffers.pl,iset.pl"`
+** tipo: stringa
+** valori: qualsiasi stringa (valore predefinito: `""`)
+
+* [[option_script.scripts.url]] *script.scripts.url*
+** descrizione: `URL for file with list of scripts`
+** tipo: stringa
+** valori: qualsiasi stringa (valore predefinito: `"http://www.weechat.org/files/plugins.xml.gz"`)
+
diff --git a/doc/it/weechat_quickstart.it.txt b/doc/it/weechat_quickstart.it.txt
index abbf4e863..ee77785f4 100644
--- a/doc/it/weechat_quickstart.it.txt
+++ b/doc/it/weechat_quickstart.it.txt
@@ -236,21 +236,12 @@ I plugin vengono caricati automaticamente quando trovati
(per favore consultare la documentazione per caricare/scaricare plugin
o script).
-Alcuni plugin consentono di usare gli script in WeeChat (in molti linguaggi
-come Perl, Python, Ruby, Lua e Tcl). Questi plugin devono essere
-caricati con il comando `/plugin` e forniscono comandi come `/perl`,
-utilizzati per caricare gli script.
+Sono disponibili molti script esterni (dai contributori) per WeeChat:
+http://www.weechat.org/scripts
-Sono disponibili molti plugin/script esterni (dai contributori) per
-WeeChat: http://www.weechat.org/scripts
-
-Il modo più facile per installare gli script è utilizzare 'weeget.py':
-
-. `mkdir -p ~/.weechat/python/autoload`
-. `cd ~/.weechat/python/autoload`
-. `wget http://weechat.org/files/scripts/weeget.py`
-. caricare lo script: `/python autoload`
-. elenco degli script: `/weeget list` (per aiuto: `/help weeget`)
+// TRANSLATION MISSING
+You can manage scripts in WeeChat with command `/script` (see `/help script`
+for more info).
[[more_doc]]
diff --git a/doc/it/weechat_user.it.txt b/doc/it/weechat_user.it.txt
index fda3f7b64..c8782f720 100644
--- a/doc/it/weechat_user.it.txt
+++ b/doc/it/weechat_user.it.txt
@@ -95,13 +95,14 @@ compilare WeeChat.
| cmake | | *sì* | compilazione (ancora possibile con autotools, ma si raccomanda cmake)
| libncursesw5-dev ^(2)^ | | *sì* | interfaccia ncurses
| libcurl4-gnutls-dev | | *sì* | trasferimento URL
-| gettext | | | internazionalizzazione (traduzione dei messaggi; la lingua base è l'inglese)
-| libgcrypt11-dev | | | autenticazione SASL per i server IRC che utilizzano il meccanismo DH-BLOWFISH
+// TRANSLATION MISSING
+| zlib1g-dev | | *sì* | compression of packets in relay plugin (weechat protocol), script plugin
+// TRANSLATION MISSING
+| libgcrypt11-dev | | *sì* | autenticazione SASL per i server IRC che utilizzano il meccanismo DH-BLOWFISH, script plugin
// TRANSLATION MISSING
| libgnutls-dev | ≥ 2.2.0 | | connessione SSL al server IRC, support of SSL in relay plugin
+| gettext | | | internazionalizzazione (traduzione dei messaggi; la lingua base è l'inglese)
| ca-certificates | | | certificati per le connessioni SSL
-// TRANSLATION MISSING
-| zlib1g-dev | | | compression of packets in relay plugin (weechat protocol)
| libaspell-dev | | | plugin aspell
| python-dev | ≥ 2.5 ^(3)^ | | plugin python
| libperl-dev | | | plugin perl
@@ -785,29 +786,32 @@ Tasti per il contesto "mouse"
Questi tasti sono usati nel contesto "mouse", ovvero quando si verifica un
evento del mouse.
+// TRANSLATION MISSING
[width="100%",cols="^.^3,^.^3,^.^3,.^10,.^8l",options="header"]
|========================================
-| Tasto | Azione | Zona | Descrizione | Comando
-| ◾◽◽ | - | chat | Passa alla finestra | /window ${_window_number}
-| ◾◽◽ | sinistra | chat | Passa al buffer precedente | /window ${_window_number};/buffer +1
-| ◾◽◽ | destra | chat | Passa al buffer successivo | /window ${_window_number};/buffer +1
-| ◾◽◽ | sinistra (lungo) | chat | Switch to first buffer | /window ${_window_number};/buffer 1
-| ◾◽◽ | destra (lungo) | chat | Passa all'ultimo buffer | /window ${_window_number};/input jump_last_buffer
-| rotella ⇑ | - | chat | Scorre di qualche riga in alto nella cronologia del buffer | /window scroll_up -window ${_window_number}
-| rotella ⇓ | - | chat | Scorre di qualche riga in basso nella cronologia del buffer | /window scroll_down -window ${_window_number}
-| ◾◽◽ | su | lista nick | Scorre di una pagina in alto nella lista nick | /bar scroll nicklist ${_window_number} -100%
-| ◾◽◽ | giù | lista nick | Scorre di una pagina in basso nella lista nick | /bar scroll nicklist ${_window_number} +100%
-| ◾◽◽ | up (lungo) | lista nick | Sposta all'inizio della lista nick | /bar scroll nicklist ${_window_number} b
-| ◾◽◽ | giù (lungo) | lista nick | Sposta alla fine della lista nick | /bar scroll nicklist ${_window_number} e
-| ◾◽◽ | - | lista nick | Apre una query con un nick | /window ${_window_number};/query ${nick}
-| ◽◽◾ | - | lista nick | Effettua un whois su un nick | /window ${_window_number};/whois ${nick}
-| ◾◽◽ | sinistra | lista nick | Kick di un nick | /window ${_window_number};/kick ${nick}
-| ◾◽◽ | sinistra (lungo) | lista nick | Kick e ban di un nick | /window ${_window_number};/kickban ${nick}
-| ◽◽◾ | sinistra | lista nick | Ban di un nick | /window ${_window_number};/ban ${nick}
-| ◽◽◾ | - | input | Cattura un evento del mouse e inserisce il codice nella riga di comando | /input grab_mouse_area
-| rotella ⇑ | - | ogni barra | Scorre la barra del -10% | /bar scroll ${_bar_name} ${_window_number} -20%
-| rotella ⇓ | - | ogni barra | Scorre la barra del +10% | /bar scroll ${_bar_name} ${_window_number} +20%
-| ◽◾◽ | - | ovunque | Avvia la modalità cursore in questo punto | /cursor go ${_x},${_y}
+| Tasto | Azione | Zona | Descrizione | Comando
+| ◾◽◽ | - | chat | Passa alla finestra | /window ${_window_number}
+| ◾◽◽ | sinistra | chat | Passa al buffer precedente | /window ${_window_number};/buffer +1
+| ◾◽◽ | destra | chat | Passa al buffer successivo | /window ${_window_number};/buffer +1
+| ◾◽◽ | sinistra (lungo) | chat | Switch to first buffer | /window ${_window_number};/buffer 1
+| ◾◽◽ | destra (lungo) | chat | Passa all'ultimo buffer | /window ${_window_number};/input jump_last_buffer
+| rotella ⇑ | - | chat | Scorre di qualche riga in alto nella cronologia del buffer | /window scroll_up -window ${_window_number}
+| rotella ⇓ | - | chat | Scorre di qualche riga in basso nella cronologia del buffer | /window scroll_down -window ${_window_number}
+| rotella ⇑ | - | chat (script buffer) | Move 5 lines up in script buffer | /script up 5
+| rotella ⇓ | - | chat (script buffer) | Move 5 lines down in script buffer | /script down 5
+| ◾◽◽ | su | lista nick | Scorre di una pagina in alto nella lista nick | /bar scroll nicklist ${_window_number} -100%
+| ◾◽◽ | giù | lista nick | Scorre di una pagina in basso nella lista nick | /bar scroll nicklist ${_window_number} +100%
+| ◾◽◽ | up (lungo) | lista nick | Sposta all'inizio della lista nick | /bar scroll nicklist ${_window_number} b
+| ◾◽◽ | giù (lungo) | lista nick | Sposta alla fine della lista nick | /bar scroll nicklist ${_window_number} e
+| ◾◽◽ | - | lista nick | Apre una query con un nick | /window ${_window_number};/query ${nick}
+| ◽◽◾ | - | lista nick | Effettua un whois su un nick | /window ${_window_number};/whois ${nick}
+| ◾◽◽ | sinistra | lista nick | Kick di un nick | /window ${_window_number};/kick ${nick}
+| ◾◽◽ | sinistra (lungo) | lista nick | Kick e ban di un nick | /window ${_window_number};/kickban ${nick}
+| ◽◽◾ | sinistra | lista nick | Ban di un nick | /window ${_window_number};/ban ${nick}
+| ◽◽◾ | - | input | Cattura un evento del mouse e inserisce il codice nella riga di comando | /input grab_mouse_area
+| rotella ⇑ | - | ogni barra | Scorre la barra del -10% | /bar scroll ${_bar_name} ${_window_number} -20%
+| rotella ⇓ | - | ogni barra | Scorre la barra del +10% | /bar scroll ${_bar_name} ${_window_number} +20%
+| ◽◾◽ | - | ovunque | Avvia la modalità cursore in questo punto | /cursor go ${_x},${_y}
|========================================
[[mouse]]
@@ -2210,10 +2214,26 @@ WeeChat fornisce 6 plugin per lo scripting: Python, Perl, Ruby, Lua, Tcl, Guile
Questi plugin possono caricare, eseguire e scaricare gli script per questi
linguaggi.
+// TRANSLATION MISSING
+Another plugin called "script" is a scripts manager and is used to load/unload
+scripts of any language, and install/remove scripts of WeeChat scripts
+repository, which are visible at this URL: http://www.weechat.org/scripts
+
Per maggiori informazioni su come scrivere gli script, o le API WeeChat
per gli script, consultare la 'Guida allo Scripting di WeeChat'.
-È possibile trovare alcuni script qui: http://www.weechat.org/scripts
+// TRANSLATION MISSING
+[[script_options]]
+Script options (script.conf)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+include::autogen/user/script_options.txt[]
+
+[[script_commands]]
+Comandi Script
+^^^^^^^^^^^^^^
+
+include::autogen/user/script_commands.txt[]
[[python_commands]]
Comandi Python
diff --git a/doc/ja/autogen/plugin_api/completions.txt b/doc/ja/autogen/plugin_api/completions.txt
index 267dd785a..a0154064f 100644
--- a/doc/ja/autogen/plugin_api/completions.txt
+++ b/doc/ja/autogen/plugin_api/completions.txt
@@ -56,6 +56,12 @@
| ruby | ruby_script | スクリプトのリスト
+| script | script_files | files in script directories
+
+| script | script_scripts | list of scripts in repository
+
+| script | script_scripts_installed | list of scripts installed (from repository)
+
| tcl | tcl_script | スクリプトのリスト
| weechat | bars_names | バーの名前
diff --git a/doc/ja/autogen/plugin_api/hdata.txt b/doc/ja/autogen/plugin_api/hdata.txt
index 94230a7c9..1920d25ef 100644
--- a/doc/ja/autogen/plugin_api/hdata.txt
+++ b/doc/ja/autogen/plugin_api/hdata.txt
@@ -257,6 +257,33 @@
'last_script' +
'scripts'
+| script | script_script | scripts from repository |
+ 'name' (string) +
+ 'name_with_extension' (string) +
+ 'language' (integer) +
+ 'author' (string) +
+ 'mail' (string) +
+ 'version' (string) +
+ 'license' (string) +
+ 'description' (string) +
+ 'tags' (string) +
+ 'requirements' (string) +
+ 'min_weechat' (string) +
+ 'max_weechat' (string) +
+ 'md5sum' (string) +
+ 'url' (string) +
+ 'popularity' (integer) +
+ 'date_added' (time) +
+ 'date_updated' (time) +
+ 'status' (integer) +
+ 'version_loaded' (string) +
+ 'displayed' (integer) +
+ 'install_order' (integer) +
+ 'prev_script' (pointer, hdata: 'script_script') +
+ 'next_script' (pointer, hdata: 'script_script') |
+ 'last_repo_script' +
+ 'repo_scripts'
+
| tcl | tcl_script | スクリプトのリスト |
'filename' (string) +
'interpreter' (pointer) +
diff --git a/doc/ja/autogen/plugin_api/infolists.txt b/doc/ja/autogen/plugin_api/infolists.txt
index 0130ea948..182c79e9a 100644
--- a/doc/ja/autogen/plugin_api/infolists.txt
+++ b/doc/ja/autogen/plugin_api/infolists.txt
@@ -30,6 +30,8 @@
| ruby | ruby_script | スクリプトのリスト | スクリプトポインタ (オプション) | スクリプト名 (ワイルドカードとして "*" で始めるか終われる) (オプション)
+| script | script_script | スクリプトのリスト | スクリプトポインタ (オプション) | script name with extension (can start or end with "*" as wildcard) (optional)
+
| tcl | tcl_script | スクリプトのリスト | スクリプトポインタ (オプション) | スクリプト名 (ワイルドカードとして "*" で始めるか終われる) (オプション)
| weechat | bar | バーのリスト | バーポインタ (オプション) | バー名 (ワイルドカードとして "*" で始めるか終われる) (オプション)
diff --git a/doc/ja/autogen/user/script_commands.txt b/doc/ja/autogen/user/script_commands.txt
new file mode 100644
index 000000000..ab430e4bd
--- /dev/null
+++ b/doc/ja/autogen/user/script_commands.txt
@@ -0,0 +1,47 @@
+[[command_script_script]]
+[command]*`script`* WeeChat scripts manager::
+........................................
+/script list
+ show <script>
+ load|unload <script> [<script>...]
+ install|remove|hold <script> [<script>...]
+ upgrade
+ update
+
+ list: list loaded scripts (all languages)
+ show: show detailed info about a script
+ load: load script(s)
+ unload: unload script(s)
+ install: install/upgrade script(s)
+ remove: remove script(s)
+ hold: hold/unhold script(s) (a script held will not be upgraded any more and cannot be removed)
+ upgrade: upgrade all installed scripts which are obsolete (new version available)
+ update: update local scripts cache
+
+Without argument, this command opens a buffer with list of scripts.
+
+On script buffer, the possible status for each script are:
+ * i H r N
+ | | | | |
+ | | | | obsolete (new version available)
+ | | | running (loaded)
+ | | held
+ | installed
+ popular script
+
+Keys on script buffer:
+ alt+i install script
+ alt+r remove script
+ alt+l load script
+ alt+u unload script
+ alt+h (un)hold script
+
+Input allowed on script buffer:
+ q close buffer
+ r refresh buffer
+ s:x,y sort buffer using keys x and y (see /help script.look.sort)
+ s: reset sort (use default sort)
+ word(s) filter scripts: search word(s) in scripts (description, tags, ...)
+ * remove filter
+........................................
+
diff --git a/doc/ja/autogen/user/script_options.txt b/doc/ja/autogen/user/script_options.txt
new file mode 100644
index 000000000..33804e1cf
--- /dev/null
+++ b/doc/ja/autogen/user/script_options.txt
@@ -0,0 +1,155 @@
+* [[option_script.color.status_held]] *script.color.status_held*
+** 説明: `color for status "held" ("H")`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `white`)
+
+* [[option_script.color.status_installed]] *script.color.status_installed*
+** 説明: `color for status "installed" ("i")`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `lightcyan`)
+
+* [[option_script.color.status_obsolete]] *script.color.status_obsolete*
+** 説明: `color for status "obsolete" ("N")`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `lightmagenta`)
+
+* [[option_script.color.status_popular]] *script.color.status_popular*
+** 説明: `color for status "popular" ("*")`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `yellow`)
+
+* [[option_script.color.status_running]] *script.color.status_running*
+** 説明: `color for status "running" ("r")`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `lightgreen`)
+
+* [[option_script.color.status_unknown]] *script.color.status_unknown*
+** 説明: `color for status "unknown" ("?")`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `lightred`)
+
+* [[option_script.color.text]] *script.color.text*
+** 説明: `text color in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `default`)
+
+* [[option_script.color.text_bg]] *script.color.text_bg*
+** 説明: `background color in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `default`)
+
+* [[option_script.color.text_bg_selected]] *script.color.text_bg_selected*
+** 説明: `background color for selected line in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `red`)
+
+* [[option_script.color.text_date]] *script.color.text_date*
+** 説明: `text color of dates in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `default`)
+
+* [[option_script.color.text_date_selected]] *script.color.text_date_selected*
+** 説明: `text color of dates for selected line in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `white`)
+
+* [[option_script.color.text_delimiters]] *script.color.text_delimiters*
+** 説明: `text color of delimiters in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `darkgray`)
+
+* [[option_script.color.text_description]] *script.color.text_description*
+** 説明: `text color of description in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `default`)
+
+* [[option_script.color.text_description_selected]] *script.color.text_description_selected*
+** 説明: `text color of description for selected line in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `white`)
+
+* [[option_script.color.text_extension]] *script.color.text_extension*
+** 説明: `text color of extension in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `default`)
+
+* [[option_script.color.text_extension_selected]] *script.color.text_extension_selected*
+** 説明: `text color of extension for selected line in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `white`)
+
+* [[option_script.color.text_name]] *script.color.text_name*
+** 説明: `text color of script name in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `cyan`)
+
+* [[option_script.color.text_name_selected]] *script.color.text_name_selected*
+** 説明: `text color of script name for selected line in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `lightcyan`)
+
+* [[option_script.color.text_selected]] *script.color.text_selected*
+** 説明: `text color for selected line in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `white`)
+
+* [[option_script.color.text_tags]] *script.color.text_tags*
+** 説明: `text color of tags in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `brown`)
+
+* [[option_script.color.text_tags_selected]] *script.color.text_tags_selected*
+** 説明: `text color of tags for selected line in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `yellow`)
+
+* [[option_script.color.text_version]] *script.color.text_version*
+** 説明: `text color of version in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `magenta`)
+
+* [[option_script.color.text_version_loaded]] *script.color.text_version_loaded*
+** 説明: `text color of version loaded in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `default`)
+
+* [[option_script.color.text_version_loaded_selected]] *script.color.text_version_loaded_selected*
+** 説明: `text color of version loaded for selected line in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `white`)
+
+* [[option_script.color.text_version_selected]] *script.color.text_version_selected*
+** 説明: `text color of version for selected line in script buffer`
+** タイプ: 色
+** 値: WeeChat の色名 (default、black、(dark)gray、white、(light)red、(light)green、brown、yellow、(light)blue、(light)magenta、(light)cyan) 、ターミナル色番号またはその別名; 色の前に属性を置くことができます (テキスト前景色のみ、背景色は出来ません): 太字は "*"、反転は "!"、下線は "_"。 (デフォルト値: `lightmagenta`)
+
+* [[option_script.look.columns]] *script.look.columns*
+** 説明: `format of columns displayed in script buffer: following column identifiers are replaced by their value: %a=author, %d=description, %D=date added, %e=extension, %l=language, %L=license, %n=name with extension, %N=name, %r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version loaded, %w=min_weechat, %W=max_weechat)`
+** タイプ: 文字列
+** 値: 未制約文字列 (デフォルト値: `"%s %n %V %v %u | %d | %t"`)
+
+* [[option_script.look.sort]] *script.look.sort*
+** 説明: `default sort keys for scripts: comma-separated list of identifiers: a=author, d=date added, e=extension, i=installed, l=language, n=name, o=obsolete, p=popularity, r=running, u=date updated; char "-" can be used before identifier to reverse order; example: "i,u": installed scripts first, sorted by update date`
+** タイプ: 文字列
+** 値: 未制約文字列 (デフォルト値: `"p,n"`)
+
+* [[option_script.scripts.cache_expire]] *script.scripts.cache_expire*
+** 説明: `local cache expiration time, in minutes (-1 = never expires, 0 = always expire)`
+** タイプ: 整数
+** 値: -1 .. 525600 (デフォルト値: `60`)
+
+* [[option_script.scripts.dir]] *script.scripts.dir*
+** 説明: `local cache directory for scripts`
+** タイプ: 文字列
+** 値: 未制約文字列 (デフォルト値: `"%h/script"`)
+
+* [[option_script.scripts.hold]] *script.scripts.hold*
+** 説明: `scripts to "hold": comma-separated list of scripts which will never been upgraded and can not be removed, for example: "buffers.pl,iset.pl"`
+** タイプ: 文字列
+** 値: 未制約文字列 (デフォルト値: `""`)
+
+* [[option_script.scripts.url]] *script.scripts.url*
+** 説明: `URL for file with list of scripts`
+** タイプ: 文字列
+** 値: 未制約文字列 (デフォルト値: `"http://www.weechat.org/files/plugins.xml.gz"`)
+
diff --git a/doc/ja/weechat_quickstart.ja.txt b/doc/ja/weechat_quickstart.ja.txt
index 1e7988112..d0c14cbe2 100644
--- a/doc/ja/weechat_quickstart.ja.txt
+++ b/doc/ja/weechat_quickstart.ja.txt
@@ -218,20 +218,13 @@ Debianのようにいくつかのディストリビューションでは、プ
見つかったプラグインは自動的に読み込まれます(プラグイン/スクリプトの読み込み
有効/無効はWeeChatのドキュメントを参照してください)。
-いくつかのプラグインによって、WeeChatでスクリプト(Perl、Python、Ruby、Lua、Tclなど多くの
-言語)を使うことができるようになります。これらのプラグインは `/plugin`
-コマンドで読み込む必要があり、 `/perl` のようなコマンドが提供されます。
+// TRANSLATION MISSING
+Many external scripts (from contributors) are available for WeeChat:
+http://www.weechat.org/scripts
-WeeChatには(ユーザから提供された)多くの外部プラグイン/スクリプトが用意
-されています: http://www.weechat.org/scripts
-
-スクリプト 'weeget.py' をインストールする簡単な方法:
-
-. `mkdir -p ~/.weechat/python/autoload`
-. `cd ~/.weechat/python/autoload`
-. `wget http://weechat.org/files/scripts/weeget.py`
-. スクリプトを読み込む: `/python autoload`
-. 一覧機能を使う: `/weeget list` (ヘルプ: `/help weeget`)
+// TRANSLATION MISSING
+You can manage scripts in WeeChat with command `/script` (see `/help script`
+for more info).
[[more_doc]]
diff --git a/doc/ja/weechat_user.ja.txt b/doc/ja/weechat_user.ja.txt
index fe694a4d4..368dada67 100644
--- a/doc/ja/weechat_user.ja.txt
+++ b/doc/ja/weechat_user.ja.txt
@@ -83,11 +83,13 @@ WeeChat は cmake または autotools を使ってコンパイルできます (c
| cmake | | *yes* | ビルド (autotools でも可能ですが、cmake を推奨します)
| libncursesw5-dev ^(2)^ | | *yes* | ncurses インターフェイス
| libcurl4-gnutls-dev | | *yes* | URL 転送
-| gettext | | | 国際化 (メッセージの翻訳; ベース言語は英語です)
-| libgcrypt11-dev | | | DH-BLOWFISH メカニズムを用いた IRC サーバ用の SASL 認証
+// TRANSLATION MISSING
+| zlib1g-dev | | *yes* | relay プラグインでパケットを圧縮 (weechat プロトコル), script plugin
+// TRANSLATION MISSING
+| libgcrypt11-dev | | *yes* | DH-BLOWFISH メカニズムを用いた IRC サーバ用の SASL 認証, script plugin
| libgnutls-dev | ≥ 2.2.0 | | IRC サーバへの SSL 接続
+| gettext | | | 国際化 (メッセージの翻訳; ベース言語は英語です)
| ca-certificates | | | SSL 接続に必要な証明書、relay プラグインで SSL サポート
-| zlib1g-dev | | | relay プラグインでパケットを圧縮 (weechat プロトコル)
| libaspell-dev | | | aspell プラグイン
| python-dev | ≥ 2.5 ^(3)^ | | python プラグイン
| libperl-dev | | | perl プラグイン
@@ -741,29 +743,32 @@ irc サーバ "freenode" に含まれる全てのバッファに対して設定
以下のキーは "マウス" モード (マウスイベントが発生したとき) でのみ有効です。
+// TRANSLATION MISSING
[width="100%",cols="^.^3,^.^3,^.^3,.^10,.^8l",options="header"]
|========================================
-| ボタン | ジェスチャー | エリア | 説明 | コマンド
-| ◾◽◽ | - | チャット | ウィンドウに移動 | /window ${_window_number}
-| ◾◽◽ | 左 | チャット | 前のバッファに移動 | /window ${_window_number};/buffer +1
-| ◾◽◽ | 右 | チャット | 次のバッファに移動 | /window ${_window_number};/buffer +1
-| ◾◽◽ | 左 (長く) | チャット | 最初のバッファに移動 | /window ${_window_number};/buffer 1
-| ◾◽◽ | 右 (長く) | チャット | 最後のバッファに移動 | /window ${_window_number};/input jump_last_buffer
-| ホイール ⇑ | - | チャット | バッファ履歴を上方向にスクロール | /window scroll_up -window ${_window_number}
-| ホイール ⇓ | - | チャット | バッファ履歴を下方向にスクロール | /window scroll_down -window ${_window_number}
-| ◾◽◽ | 上 | ニックネームリスト | ニックネームリストを 1 ページ分上方向にスクロール | /bar scroll nicklist ${_window_number} -100%
-| ◾◽◽ | 下 | ニックネームリスト | ニックネームリストを 1 ページ分下方向にスクロール | /bar scroll nicklist ${_window_number} +100%
-| ◾◽◽ | 上 (長く) | ニックネームリスト | ニックネームリストの最初に移動 | /bar scroll nicklist ${_window_number} b
-| ◾◽◽ | 下 (長く) | ニックネームリスト | ニックネームリストの最後に移動 | /bar scroll nicklist ${_window_number} e
-| ◾◽◽ | - | ニックネームリスト | ニックネームに対するクエリを開く | /window ${_window_number};/query ${nick}
-| ◽◽◾ | - | ニックネームリスト | ニックネームに対する whois を行う | /window ${_window_number};/whois ${nick}
-| ◾◽◽ | 左 | ニックネームリスト | ニックネームをキックする | /window ${_window_number};/kick ${nick}
-| ◾◽◽ | 左 (長く) | ニックネームリスト | ニックネームをキックとバンする | /window ${_window_number};/kickban ${nick}
-| ◽◽◾ | 左 | ニックネームリスト | ニックネームをバンする | /window ${_window_number};/ban ${nick}
-| ◽◽◾ | - | 入力 | マウスイベントを奪ってコマンドラインにコードを入力 | /input grab_mouse_area
-| ホイール ⇑ | - | 任意のバー | バーを -10% スクロール | /bar scroll ${_bar_name} ${_window_number} -20%
-| ホイール ⇓ | - | 任意のバー | バーを +10% スクロール | /bar scroll ${_bar_name} ${_window_number} +20%
-| ◽◾◽ | - | 任意の場所 | この場所でカーソルモードを開始 | /cursor go ${_x},${_y}
+| ボタン | ジェスチャー | エリア | 説明 | コマンド
+| ◾◽◽ | - | チャット | ウィンドウに移動 | /window ${_window_number}
+| ◾◽◽ | 左 | チャット | 前のバッファに移動 | /window ${_window_number};/buffer +1
+| ◾◽◽ | 右 | チャット | 次のバッファに移動 | /window ${_window_number};/buffer +1
+| ◾◽◽ | 左 (長く) | チャット | 最初のバッファに移動 | /window ${_window_number};/buffer 1
+| ◾◽◽ | 右 (長く) | チャット | 最後のバッファに移動 | /window ${_window_number};/input jump_last_buffer
+| ホイール ⇑ | - | チャット | バッファ履歴を上方向にスクロール | /window scroll_up -window ${_window_number}
+| ホイール ⇓ | - | チャット | バッファ履歴を下方向にスクロール | /window scroll_down -window ${_window_number}
+| ホイール ⇑ | - | chat (script buffer) | Move 5 lines up in script buffer | /script up 5
+| ホイール ⇓ | - | chat (script buffer) | Move 5 lines down in script buffer | /script down 5
+| ◾◽◽ | 上 | ニックネームリスト | ニックネームリストを 1 ページ分上方向にスクロール | /bar scroll nicklist ${_window_number} -100%
+| ◾◽◽ | 下 | ニックネームリスト | ニックネームリストを 1 ページ分下方向にスクロール | /bar scroll nicklist ${_window_number} +100%
+| ◾◽◽ | 上 (長く) | ニックネームリスト | ニックネームリストの最初に移動 | /bar scroll nicklist ${_window_number} b
+| ◾◽◽ | 下 (長く) | ニックネームリスト | ニックネームリストの最後に移動 | /bar scroll nicklist ${_window_number} e
+| ◾◽◽ | - | ニックネームリスト | ニックネームに対するクエリを開く | /window ${_window_number};/query ${nick}
+| ◽◽◾ | - | ニックネームリスト | ニックネームに対する whois を行う | /window ${_window_number};/whois ${nick}
+| ◾◽◽ | 左 | ニックネームリスト | ニックネームをキックする | /window ${_window_number};/kick ${nick}
+| ◾◽◽ | 左 (長く) | ニックネームリスト | ニックネームをキックとバンする | /window ${_window_number};/kickban ${nick}
+| ◽◽◾ | 左 | ニックネームリスト | ニックネームをバンする | /window ${_window_number};/ban ${nick}
+| ◽◽◾ | - | 入力 | マウスイベントを奪ってコマンドラインにコードを入力 | /input grab_mouse_area
+| ホイール ⇑ | - | 任意のバー | バーを -10% スクロール | /bar scroll ${_bar_name} ${_window_number} -20%
+| ホイール ⇓ | - | 任意のバー | バーを +10% スクロール | /bar scroll ${_bar_name} ${_window_number} +20%
+| ◽◾◽ | - | 任意の場所 | この場所でカーソルモードを開始 | /cursor go ${_x},${_y}
|========================================
[[mouse]]
@@ -2074,10 +2079,25 @@ WeeChat は 6 種類のスクリプトプラグインを備えています: Pyth
(scheme)。
これらのプラグインでそれぞれの言語で書かれたスクリプトのロード、実行、アンロードができます。
+// TRANSLATION MISSING
+Another plugin called "script" is a scripts manager and is used to load/unload
+scripts of any language, and install/remove scripts of WeeChat scripts
+repository, which are visible at this URL: http://www.weechat.org/scripts
+
スクリプトの書き方やスクリプト用の WeeChat API についての詳しい情報は、
'WeeChat スクリプト製作ガイド' を参照してください。
-WeeChat 用のスクリプトは以下のページから入手できます: http://www.weechat.org/scripts
+// TRANSLATION MISSING
+[[script_options]]
+Script options (script.conf)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+include::autogen/user/script_options.txt[]
+
+[[script_commands]]
+==== Script コマンド ====
+
+include::autogen/user/script_commands.txt[]
[[python_commands]]
==== Python コマンド ====
diff --git a/doc/pl/weechat_quickstart.pl.txt b/doc/pl/weechat_quickstart.pl.txt
index b9dd630dd..9c853d599 100644
--- a/doc/pl/weechat_quickstart.pl.txt
+++ b/doc/pl/weechat_quickstart.pl.txt
@@ -222,20 +222,12 @@ Wtyczki są automatycznie ładowane, kiedy zostaną wykryte (proszę spojrzeć d
dokumentacji WeeChat, aby się dowiedzieć jak ładować/wyładowywać wtyczki lub
skrypty).
-Niektóre wtyczki pozwalają na używanie skryptów w WeeChat (w wielu językach jak Perl,
-Python, Ruby, Lua oraz Tcl). Te wtyczki muszą być załadowane za pomocą komendy
-`/plugin`, dostarczają one komendy jak `/perl`, używane do ładowania skryptów.
+Wiele zewnętrznych skryptów (od społeczności) jest dostępnych dla WeeChat:
+http://www.weechat.org/scripts
-Wiele zewnętrznych wtyczek/skryptów (od społeczności) jest dostępnych dla
-WeeChat: http://www.weechat.org/scripts
-
-Najprostszym sposobem na instalowanie skryptów jest użycie skryptu 'weeget.py':
-
-. `mkdir -p ~/.weechat/python/autoload`
-. `cd ~/.weechat/python/autoload`
-. `wget http://weechat.org/files/scripts/weeget.py`
-. załaduj skrypt: `/python autoload`
-. lista skryptów: `/weeget list` (dla pomocy: `/help weeget`)
+// TRANSLATION MISSING
+You can manage scripts in WeeChat with command `/script` (see `/help script`
+for more info).
[[more_doc]]
diff --git a/doc/ru/weechat_quickstart.ru.txt b/doc/ru/weechat_quickstart.ru.txt
index 7ff0e24f0..ffef4ca76 100644
--- a/doc/ru/weechat_quickstart.ru.txt
+++ b/doc/ru/weechat_quickstart.ru.txt
@@ -221,20 +221,12 @@ WeeChat использует стандартные значения для вс
Плагины автоматические загружаются если они найдены (пожалуйста,
посмотрите документацию о load/unload плагинов или скиптов)
-Некоторые плагины, позволяют использовать скрипты на других языках
-(Perl, Python, Lua, Ruby, Tcl). Эти плагины должны быть загружены командой
-`/plugin`. Они добавляют такие команды как `/perl` для загрузки скриптов.
+Много пользовательских плагинов доступно для WeeChat:
+http://www.weechat.org/scripts
-Много пользовательских скриптов/плагинов доступно для
-WeeChat: http://www.weechat.org/scripts
-
-Простейший путь для установки скриптов - исползовать скрипт 'weeget.py':
-
-. `mkdir -p ~/.weechat/python/autoload`
-. `cd ~/.weechat/python/autoload`
-. `wget http://weechat.org/files/scripts/weeget.py`
-. подгрузить скрипт в Weechat: `/python autoload`
-. скачайте список скриптов: `/weeget list` (for help: `/help weeget`)
+// TRANSLATION MISSING
+You can manage scripts in WeeChat with command `/script` (see `/help script`
+for more info).
[[more_doc]]
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 683b5e77d..98bb99d93 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -111,6 +111,10 @@
./src/plugins/fifo/fifo.h
./src/plugins/fifo/fifo-info.c
./src/plugins/fifo/fifo-info.h
+./src/plugins/guile/weechat-guile-api.c
+./src/plugins/guile/weechat-guile-api.h
+./src/plugins/guile/weechat-guile.c
+./src/plugins/guile/weechat-guile.h
./src/plugins/irc/irc-bar-item.c
./src/plugins/irc/irc-bar-item.h
./src/plugins/irc/irc-buffer.c
@@ -169,6 +173,10 @@
./src/plugins/logger/logger-info.h
./src/plugins/logger/logger-tail.c
./src/plugins/logger/logger-tail.h
+./src/plugins/lua/weechat-lua-api.c
+./src/plugins/lua/weechat-lua-api.h
+./src/plugins/lua/weechat-lua.c
+./src/plugins/lua/weechat-lua.h
./src/plugins/plugin-api.c
./src/plugins/plugin-api.h
./src/plugins/plugin.c
@@ -217,18 +225,16 @@
./src/plugins/rmodifier/rmodifier.h
./src/plugins/rmodifier/rmodifier-info.c
./src/plugins/rmodifier/rmodifier-info.h
-./src/plugins/guile/weechat-guile-api.c
-./src/plugins/guile/weechat-guile-api.h
-./src/plugins/guile/weechat-guile.c
-./src/plugins/guile/weechat-guile.h
-./src/plugins/lua/weechat-lua-api.c
-./src/plugins/lua/weechat-lua-api.h
-./src/plugins/lua/weechat-lua.c
-./src/plugins/lua/weechat-lua.h
./src/plugins/perl/weechat-perl-api.c
./src/plugins/perl/weechat-perl-api.h
./src/plugins/perl/weechat-perl.c
./src/plugins/perl/weechat-perl.h
+./src/plugins/plugin-script.c
+./src/plugins/plugin-script.h
+./src/plugins/plugin-script-api.c
+./src/plugins/plugin-script-api.h
+./src/plugins/plugin-script-callback.c
+./src/plugins/plugin-script-callback.h
./src/plugins/python/weechat-python-api.c
./src/plugins/python/weechat-python-api.h
./src/plugins/python/weechat-python.c
@@ -237,12 +243,22 @@
./src/plugins/ruby/weechat-ruby-api.h
./src/plugins/ruby/weechat-ruby.c
./src/plugins/ruby/weechat-ruby.h
-./src/plugins/plugin-script-api.c
-./src/plugins/plugin-script-api.h
-./src/plugins/plugin-script.c
-./src/plugins/plugin-script-callback.c
-./src/plugins/plugin-script-callback.h
-./src/plugins/plugin-script.h
+./src/plugins/script/script.c
+./src/plugins/script/script.h
+./src/plugins/script/script-action.c
+./src/plugins/script/script-action.h
+./src/plugins/script/script-buffer.c
+./src/plugins/script/script-buffer.h
+./src/plugins/script/script-command.c
+./src/plugins/script/script-command.h
+./src/plugins/script/script-completion.c
+./src/plugins/script/script-completion.h
+./src/plugins/script/script-config.c
+./src/plugins/script/script-config.h
+./src/plugins/script/script-info.c
+./src/plugins/script/script-info.h
+./src/plugins/script/script-repo.c
+./src/plugins/script/script-repo.h
./src/plugins/tcl/weechat-tcl-api.c
./src/plugins/tcl/weechat-tcl-api.h
./src/plugins/tcl/weechat-tcl.c
diff --git a/po/cs.po b/po/cs.po
index 9faf860e3..60d3119cd 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.9-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: 2012-06-03 09:49+0200\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6299,14 +6299,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr "%s%s: schopnost klienta, povoleno: %s"
#, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-"%s%s: nemohu se autentizovat pomocí SASL a mechanismu DH-BLOWFISH, protže "
-"WeeChat nebyl sestaven s podporou libcrypt"
-
-#, c-format
msgid "%s%s: client capability, refused: %s"
msgstr "%s%s: vlastnost klienta, odepřena: %s"
@@ -8020,65 +8012,6 @@ msgstr "%s%s: neznámá chyba při načítání souboru \"%s\""
msgid "%s%s: unable to initialize %s"
msgstr "%s%s: nemohu inicializovat %s"
-#, fuzzy
-msgid "Support of python scripts"
-msgstr "seznam skriptů"
-
-#, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s%s: nemohu inicialiyovat modul WeeChat"
-
-#, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "%s%s: nemůžu přesměrovat stdout"
-
-#, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s%s: nemohu přesměrovat stderr"
-
-msgid "path to python 2.x interpreter"
-msgstr "cesta k interpretru python 2.x"
-
-#, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s%s: nemohu spustit globální interpreter"
-
-#, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s%s: nemohu získat aktuální status interpretru"
-
-#, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s%s: nemohu uvolnit interpreter"
-
-#, fuzzy
-msgid "Support of ruby scripts"
-msgstr "seznam skriptů"
-
-#, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%s%s: stdout/stderr: %s%s"
-
-#, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "%s%s: nemůžu číst soubor \"%s\""
-
-#, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "%s%s: chyba při načítání souboru \"%s\""
-
-#, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr "%s%s: funkce \"weechat_init\" chybí v souboru \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr "%s%s: nemůžu vyhodnotit funkci \"weechat_init\" v souboru \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s%s: nemohu vyhodnotit interní kód WeeChat ruby"
-
msgid "list/load/unload scripts"
msgstr "seznam/načíst/odebrat skirpty"
@@ -8194,6 +8127,408 @@ msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s%s: špatné parametry pro funkci \"%s\" (skript: %s)"
#, fuzzy
+msgid "Support of python scripts"
+msgstr "seznam skriptů"
+
+#, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s%s: nemohu inicialiyovat modul WeeChat"
+
+#, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "%s%s: nemůžu přesměrovat stdout"
+
+#, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s%s: nemohu přesměrovat stderr"
+
+msgid "path to python 2.x interpreter"
+msgstr "cesta k interpretru python 2.x"
+
+#, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s%s: nemohu spustit globální interpreter"
+
+#, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s%s: nemohu získat aktuální status interpretru"
+
+#, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s%s: nemohu uvolnit interpreter"
+
+#, fuzzy
+msgid "Support of ruby scripts"
+msgstr "seznam skriptů"
+
+#, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%s%s: stdout/stderr: %s%s"
+
+#, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "%s%s: nemůžu číst soubor \"%s\""
+
+#, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "%s%s: chyba při načítání souboru \"%s\""
+
+#, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr "%s%s: funkce \"weechat_init\" chybí v souboru \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr "%s%s: nemůžu vyhodnotit funkci \"weechat_init\" v souboru \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s%s: nemohu vyhodnotit interní kód WeeChat ruby"
+
+msgid "Scripts manager"
+msgstr ""
+
+#, fuzzy
+msgid "Scripts loaded:"
+msgstr "načteny %s skripty:"
+
+#, fuzzy, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "%s: odebírám skript \"%s\""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "%s: odebírám skript \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "%s: odebírám skript \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s%s: skript \"%s\" nenačten"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "%s: skript \"%s\" odebrán"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s%s: skript \"%s\" nenalezen"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s%s: skript \"%s\" nenačten"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" held"
+msgstr "%s: skript \"%s\" odebrán"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr "%s%s: server \"%s\" již existuje, nemohu jej vytvořít!"
+
+#, fuzzy, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "%s: skripty odebrány"
+
+msgid "Script"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+msgid "Description"
+msgstr "Popis"
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+#, fuzzy
+msgid "Date updated"
+msgstr "Pole \"%s\" zaktualizováno"
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+#, fuzzy
+msgid "Min WeeChat"
+msgstr "ukončit WeeChat"
+
+#, fuzzy
+msgid "Max WeeChat"
+msgstr "ukončit WeeChat"
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
+msgstr ""
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+
+msgid "Scripts"
+msgstr ""
+
+#, fuzzy
+msgid "WeeChat scripts manager"
+msgstr "stránka WeeChat"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+#, fuzzy
+msgid "list of scripts in repository"
+msgstr "seznam skriptů"
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+#, fuzzy
+msgid "color for status \"popular\" (\"*\")"
+msgstr "barva textu pro čas (stavový řádek)"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+#, fuzzy
+msgid "text color in script buffer"
+msgstr "barva textu pro jeméno bufferu"
+
+#, fuzzy
+msgid "text color of dates in script buffer"
+msgstr "barva textu pro jiné přezdívky v soukromém bufferu"
+
+#, fuzzy
+msgid "text color of delimiters in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of description in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of extension in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of script name in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of tags in script buffer"
+msgstr "barva textu pro jeméno bufferu"
+
+#, fuzzy
+msgid "text color of version in script buffer"
+msgstr "barva textu pro jiné přezdívky v soukromém bufferu"
+
+#, fuzzy
+msgid "text color of version loaded in script buffer"
+msgstr "barva textu pro jiné přezdívky v soukromém bufferu"
+
+#, fuzzy
+msgid "background color in script buffer"
+msgstr "barva pozadí pro rozhovor"
+
+#, fuzzy
+msgid "text color for selected line in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of dates for selected line in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of description for selected line in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of extension for selected line in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of script name for selected line in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of tags for selected line in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of version for selected line in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "text color of version loaded for selected line in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+#, fuzzy
+msgid "background color for selected line in script buffer"
+msgstr "barva textu řádku vybraného klienta"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+#, fuzzy
+msgid "URL for file with list of scripts"
+msgstr "seznam skriptů"
+
+#, fuzzy
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+"jméno skriptu (může začínat nebo končit \"*\" jako zástupným znakem) "
+"(volitelné)"
+
+#, fuzzy
+msgid "scripts from repository"
+msgstr "seznam skriptů"
+
+#, fuzzy, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s%s: chyba při zasílání dat na klienta: %s"
+
+#, fuzzy, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "%s: skript odebrána: %s"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s%s: chyba při zasílání dat na klienta: %s"
+
+#, fuzzy, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "%s: odebírám skript \"%s\""
+
+#, fuzzy
msgid "Support of tcl scripts"
msgstr "seznam skriptů"
@@ -8582,9 +8917,6 @@ msgstr "Plugin"
msgid "Name"
msgstr "Jméno"
-msgid "Description"
-msgstr "Popis"
-
msgid "Arguments"
msgstr "Argumenty"
@@ -8614,6 +8946,17 @@ msgid "Constants"
msgstr ""
#, fuzzy
+#~ msgid "%s: downloading \"%s\"..."
+#~ msgstr "%s: odebírám skript \"%s\""
+
+#~ msgid ""
+#~ "%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
+#~ "WeeChat was not built with libgcrypt support"
+#~ msgstr ""
+#~ "%s%s: nemohu se autentizovat pomocí SASL a mechanismu DH-BLOWFISH, protže "
+#~ "WeeChat nebyl sestaven s podporou libcrypt"
+
+#, fuzzy
#~ msgid "Regex modifier"
#~ msgstr "Výchozí rmodifikátory:"
@@ -8646,9 +8989,6 @@ msgstr ""
#~ msgid "%s%s: sending data to client error %d: %d %s"
#~ msgstr "%s%s: chyba při zasílání dat na klienta %s"
-#~ msgid "%s%s: error sending data to client: %s"
-#~ msgstr "%s%s: chyba při zasílání dat na klienta: %s"
-
#~ msgid "display channel modes in \"buffer_name\" bar item"
#~ msgstr "zobrazit módy kanálu v položce pole \"buffer_name\""
diff --git a/po/de.po b/po/de.po
index 4d02dc355..3e05db52e 100644
--- a/po/de.po
+++ b/po/de.po
@@ -23,7 +23,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-03 10:02+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: 2012-08-03 09:46+0100\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <weechatter@arcor.de>\n"
@@ -6827,14 +6827,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr "%s%s: Client Fähigkeit, aktiviert: %s"
#, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-"%s%s Authentifizierung mittels SASL und DH-BLOWFISH Mechanismus nicht "
-"möglich, da WeeChat nicht mit libgcrypt Unterstützung erstellt wurde"
-
-#, c-format
msgid "%s%s: client capability, refused: %s"
msgstr "%s%s: Client Fähigkeit, abgewiesen: %s"
@@ -8586,64 +8578,6 @@ msgstr "%s%s: unbekannter Fehler beim Laden der Datei \"%s\""
msgid "%s%s: unable to initialize %s"
msgstr "%s%s: %s kann nicht initialisiert werden"
-msgid "Support of python scripts"
-msgstr "Unterstützung von Python-Skripten"
-
-#, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s%s: Initialisierung des WeeChat Moduls nicht möglich"
-
-#, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "%s%s: Standardausgabe (stdout) kann nicht umlenkt werden"
-
-#, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s%s: Standardfehlerausgabe (stderr) kann nicht umlenkt werden"
-
-msgid "path to python 2.x interpreter"
-msgstr "Pfad für Python 2.x Interpreter"
-
-#, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s%s: globaler Interpreter kann nicht gestartet werden"
-
-#, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s%s: aktueller Status des Interpreters kann nicht feststellt werden"
-
-#, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s%s: Interpreter kann nicht freigeben werden"
-
-msgid "Support of ruby scripts"
-msgstr "Unterstützung von Ruby-Skripten"
-
-#, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%s%s: stdout/stderr: %s%s"
-
-#, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "%s%s: Datei \"%s\" kann nicht gelesen werden"
-
-#, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "%s%s: Fehler beim Laden der Datei \"%s\""
-
-#, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr "%s%s: Funktion \"weechat_init\" fehlt in der Datei \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr ""
-"%s%s: Evaluation der Funktion \"weechat_init\" in Datei \"%s\" nicht möglich"
-
-#, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s%s: Evaluation des internen WeeChat Ruby Codes nicht möglich"
-
msgid "list/load/unload scripts"
msgstr "auflisten/installieren/deinstallieren von Skripten"
@@ -8765,6 +8699,409 @@ msgstr ""
msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s%s: Fehlerhafte Argumente für die Funktion \"%s\" (Skript: %s)"
+msgid "Support of python scripts"
+msgstr "Unterstützung von Python-Skripten"
+
+#, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s%s: Initialisierung des WeeChat Moduls nicht möglich"
+
+#, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "%s%s: Standardausgabe (stdout) kann nicht umlenkt werden"
+
+#, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s%s: Standardfehlerausgabe (stderr) kann nicht umlenkt werden"
+
+msgid "path to python 2.x interpreter"
+msgstr "Pfad für Python 2.x Interpreter"
+
+#, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s%s: globaler Interpreter kann nicht gestartet werden"
+
+#, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s%s: aktueller Status des Interpreters kann nicht feststellt werden"
+
+#, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s%s: Interpreter kann nicht freigeben werden"
+
+msgid "Support of ruby scripts"
+msgstr "Unterstützung von Ruby-Skripten"
+
+#, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%s%s: stdout/stderr: %s%s"
+
+#, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "%s%s: Datei \"%s\" kann nicht gelesen werden"
+
+#, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "%s%s: Fehler beim Laden der Datei \"%s\""
+
+#, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr "%s%s: Funktion \"weechat_init\" fehlt in der Datei \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr ""
+"%s%s: Evaluation der Funktion \"weechat_init\" in Datei \"%s\" nicht möglich"
+
+#, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s%s: Evaluation des internen WeeChat Ruby Codes nicht möglich"
+
+msgid "Scripts manager"
+msgstr ""
+
+#, fuzzy
+msgid "Scripts loaded:"
+msgstr "Installierte \"%s\" Skripten:"
+
+#, fuzzy, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "%s: Deinstalliere das Skript \"%s\""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "%s: Deinstalliere das Skript \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "%s: Deinstalliere das Skript \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s%s: Das Skript \"%s\" wurde nicht installiert"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "%s: Das Skript \"%s\" wurde deinstalliert"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s%s: Skript \"%s\" wurde nicht gefunden"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s%s: Das Skript \"%s\" wurde nicht installiert"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" held"
+msgstr "%s: Das Skript \"%s\" wurde deinstalliert"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr ""
+"%s%s: Das Skript \"%s\" ist schon registriert (eine zweite Registrierung "
+"wurde deshalb abgelehnt)"
+
+#, fuzzy, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "%s: Skripten deinstalliert"
+
+msgid "Script"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+msgid "Description"
+msgstr "Beschreibung"
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+#, fuzzy
+msgid "Date updated"
+msgstr "Infobar \"%s\" aktualisiert"
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+#, fuzzy
+msgid "Min WeeChat"
+msgstr "WeeChat beenden"
+
+#, fuzzy
+msgid "Max WeeChat"
+msgstr "WeeChat beenden"
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
+msgstr ""
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+
+msgid "Scripts"
+msgstr ""
+
+#, fuzzy
+msgid "WeeChat scripts manager"
+msgstr "WeeChat Seite"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+#, fuzzy
+msgid "list of scripts in repository"
+msgstr "Liste der Skripten"
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+#, fuzzy
+msgid "color for status \"popular\" (\"*\")"
+msgstr "Textfarbe für die Uhrzeit (Statusbar)"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+#, fuzzy
+msgid "text color in script buffer"
+msgstr "Textfarbe in xfer Buffer"
+
+#, fuzzy
+msgid "text color of dates in script buffer"
+msgstr "Farbe des anderen Nicknamens in einem privaten Buffer"
+
+#, fuzzy
+msgid "text color of delimiters in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of description in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of extension in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of script name in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of tags in script buffer"
+msgstr "Textfarbe in xfer Buffer"
+
+#, fuzzy
+msgid "text color of version in script buffer"
+msgstr "Farbe des anderen Nicknamens in einem privaten Buffer"
+
+#, fuzzy
+msgid "text color of version loaded in script buffer"
+msgstr "Farbe des anderen Nicknamens in einem privaten Buffer"
+
+#, fuzzy
+msgid "background color in script buffer"
+msgstr "Hintergrundfarbe des xfer Buffer"
+
+#, fuzzy
+msgid "text color for selected line in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of dates for selected line in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of description for selected line in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of extension for selected line in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of script name for selected line in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of tags for selected line in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of version for selected line in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "text color of version loaded for selected line in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+#, fuzzy
+msgid "background color for selected line in script buffer"
+msgstr "Textfarbe für selektierte Zeile in xfer Buffer"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+#, fuzzy
+msgid "URL for file with list of scripts"
+msgstr "Liste der Skripten"
+
+#, fuzzy
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+"Name des Skriptes (darf mit einem \"*\" als Platzhalter beginnen oder enden) "
+"(optional)"
+
+#, fuzzy
+msgid "scripts from repository"
+msgstr "Liste der Skripten"
+
+#, fuzzy, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s%s: Fehler beim Senden von Daten an den Client: %s"
+
+#, fuzzy, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "%s: Skript entfernt: %s"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s%s: Fehler beim Senden von Daten an den Client: %s"
+
+#, fuzzy, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "%s: Deinstalliere das Skript \"%s\""
+
msgid "Support of tcl scripts"
msgstr "Unterstützung von tcl-Skripten"
@@ -9164,9 +9501,6 @@ msgstr "Erweiterung"
msgid "Name"
msgstr "Name"
-msgid "Description"
-msgstr "Beschreibung"
-
msgid "Arguments"
msgstr "Argumente"
@@ -9194,6 +9528,17 @@ msgstr "Type"
msgid "Constants"
msgstr "Konstanten"
+#, fuzzy
+#~ msgid "%s: downloading \"%s\"..."
+#~ msgstr "%s: Deinstalliere das Skript \"%s\""
+
+#~ msgid ""
+#~ "%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
+#~ "WeeChat was not built with libgcrypt support"
+#~ msgstr ""
+#~ "%s%s Authentifizierung mittels SASL und DH-BLOWFISH Mechanismus nicht "
+#~ "möglich, da WeeChat nicht mit libgcrypt Unterstützung erstellt wurde"
+
#~ msgid "smart completion for nicks (completes first with last speakers)"
#~ msgstr ""
#~ "intelligente Vervollständigung von Nicknamen (vervollständigt zuerst den "
@@ -9220,9 +9565,6 @@ msgstr "Konstanten"
#~ msgid "display message when (un)marking as away"
#~ msgstr "bei Abwesenheit und Rückkehr eine Nachricht anzeigen"
-#~ msgid "%s%s: error sending data to client: %s"
-#~ msgstr "%s%s: Fehler beim Senden von Daten an den Client: %s"
-
#~ msgid "%s%s: error sending data to client %d (%s)"
#~ msgstr "%s%s: Fehler beim Senden von Daten an den Client %d (%s)"
diff --git a/po/es.po b/po/es.po
index 4619796ed..631e72fa4 100644
--- a/po/es.po
+++ b/po/es.po
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.9-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: 2012-07-27 12:16+0200\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6560,14 +6560,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr "%s%s: capabilidad del cliente, habilitado: %s"
#, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-"%s%s: no es posible autenticarse con SASL y el mecanismo DH-BLOWFISH debido "
-"a que WeeChat no fue compilado con soporte libgcrypt"
-
-#, c-format
msgid "%s%s: client capability, refused: %s"
msgstr "%s%s: capabilidad del cliente, rechazada: %s"
@@ -8288,66 +8280,6 @@ msgstr "%s%s: error desconocido mientras se cargaba el archivo \"%s\""
msgid "%s%s: unable to initialize %s"
msgstr "%s%s: no ha sido posible inicializar %s"
-#, fuzzy
-msgid "Support of python scripts"
-msgstr "lista de scripts"
-
-#, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s%s: no es posible inicializar el módulo de WeeChat"
-
-#, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "%s%s: no es posible redirigir la salida stdout"
-
-#, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s%s: no es posible redirigir la salida stderr"
-
-msgid "path to python 2.x interpreter"
-msgstr "ruta al interprete de python 2.x"
-
-#, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s%s: no es posible iniciar el intérprete global"
-
-#, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s%s: no es posible obtener el estado del interprete actual"
-
-#, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s%s: no es posible liberar el interprete"
-
-#, fuzzy
-msgid "Support of ruby scripts"
-msgstr "lista de scripts"
-
-#, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%s%s: stdout/stderr: %s%s"
-
-#, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "%s%s: no es posible leer el archivo \"%s\""
-
-#, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "%s%s: error mientras se cargaba el archivo \"%s\""
-
-#, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr "%s%s: la función \"weechat_init\" no se encuentra en el archivo \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr ""
-"%s%s: no es posible evaluar la función \"weechat_init\" en el archivo \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s%s: no es posible evaluar el código ruby interno de WeeChat"
-
msgid "list/load/unload scripts"
msgstr "listar/cargar/descargar scripts"
@@ -8467,6 +8399,409 @@ msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s%s: argumentos incorrectos para la función \"%s\" (script: %s)"
#, fuzzy
+msgid "Support of python scripts"
+msgstr "lista de scripts"
+
+#, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s%s: no es posible inicializar el módulo de WeeChat"
+
+#, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "%s%s: no es posible redirigir la salida stdout"
+
+#, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s%s: no es posible redirigir la salida stderr"
+
+msgid "path to python 2.x interpreter"
+msgstr "ruta al interprete de python 2.x"
+
+#, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s%s: no es posible iniciar el intérprete global"
+
+#, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s%s: no es posible obtener el estado del interprete actual"
+
+#, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s%s: no es posible liberar el interprete"
+
+#, fuzzy
+msgid "Support of ruby scripts"
+msgstr "lista de scripts"
+
+#, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%s%s: stdout/stderr: %s%s"
+
+#, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "%s%s: no es posible leer el archivo \"%s\""
+
+#, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "%s%s: error mientras se cargaba el archivo \"%s\""
+
+#, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr "%s%s: la función \"weechat_init\" no se encuentra en el archivo \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr ""
+"%s%s: no es posible evaluar la función \"weechat_init\" en el archivo \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s%s: no es posible evaluar el código ruby interno de WeeChat"
+
+msgid "Scripts manager"
+msgstr ""
+
+#, fuzzy
+msgid "Scripts loaded:"
+msgstr "scripts en %s cargados:"
+
+#, fuzzy, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "%s: descargando el script \"%s\""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "%s: descargando el script \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "%s: descargando el script \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s%s: el script \"%s\" no está cargado"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "%s: script \"%s\" descargado"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s%s: script \"%s\" no encontrado"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s%s: el script \"%s\" no está cargado"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" held"
+msgstr "%s: script \"%s\" descargado"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr "%s%s: el servidor \"%s\" ya existe, ¡no se puede crear!"
+
+#, fuzzy, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "%s: scripts descargados"
+
+msgid "Script"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+msgid "Description"
+msgstr "Descripción"
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+#, fuzzy
+msgid "Date updated"
+msgstr "Barra \"%s\" actualizada"
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+#, fuzzy
+msgid "Min WeeChat"
+msgstr "cerrar WeeChat"
+
+#, fuzzy
+msgid "Max WeeChat"
+msgstr "cerrar WeeChat"
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
+msgstr ""
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+
+msgid "Scripts"
+msgstr ""
+
+#, fuzzy
+msgid "WeeChat scripts manager"
+msgstr "sitio web de WeeChat"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+#, fuzzy
+msgid "list of scripts in repository"
+msgstr "lista de scripts"
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+#, fuzzy
+msgid "color for status \"popular\" (\"*\")"
+msgstr "color para el texto de la hora (en la barra de estado)"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+#, fuzzy
+msgid "text color in script buffer"
+msgstr "color para los nombres de los buffers"
+
+#, fuzzy
+msgid "text color of dates in script buffer"
+msgstr "color para el otro apodo en una conversación privada"
+
+#, fuzzy
+msgid "text color of delimiters in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of description in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of extension in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of script name in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of tags in script buffer"
+msgstr "color para los nombres de los buffers"
+
+#, fuzzy
+msgid "text color of version in script buffer"
+msgstr "color para el otro apodo en una conversación privada"
+
+#, fuzzy
+msgid "text color of version loaded in script buffer"
+msgstr "color para el otro apodo en una conversación privada"
+
+#, fuzzy
+msgid "background color in script buffer"
+msgstr "color de fondo para el área de conversación"
+
+#, fuzzy
+msgid "text color for selected line in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of dates for selected line in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of description for selected line in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of extension for selected line in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of script name for selected line in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of tags for selected line in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of version for selected line in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "text color of version loaded for selected line in script buffer"
+msgstr "color para el cliente seleccionado"
+
+#, fuzzy
+msgid "background color for selected line in script buffer"
+msgstr "color para el cliente seleccionado"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+#, fuzzy
+msgid "URL for file with list of scripts"
+msgstr "lista de scripts"
+
+#, fuzzy
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+"nombre del script (puede empezar o terminar con \"*\" como comodín) "
+"(opcional)"
+
+#, fuzzy
+msgid "scripts from repository"
+msgstr "lista de scripts"
+
+#, fuzzy, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s%s: error al enviar datos al cliente: %s"
+
+#, fuzzy, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "%s: script removido: %s"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s%s: error al enviar datos al cliente: %s"
+
+#, fuzzy, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "%s: descargando el script \"%s\""
+
+#, fuzzy
msgid "Support of tcl scripts"
msgstr "lista de scripts"
@@ -8866,9 +9201,6 @@ msgstr "Plugin"
msgid "Name"
msgstr "Nombre"
-msgid "Description"
-msgstr "Descripción"
-
msgid "Arguments"
msgstr "Argumentos"
@@ -8897,6 +9229,17 @@ msgid "Constants"
msgstr "Constantes"
#, fuzzy
+#~ msgid "%s: downloading \"%s\"..."
+#~ msgstr "%s: descargando el script \"%s\""
+
+#~ msgid ""
+#~ "%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
+#~ "WeeChat was not built with libgcrypt support"
+#~ msgstr ""
+#~ "%s%s: no es posible autenticarse con SASL y el mecanismo DH-BLOWFISH "
+#~ "debido a que WeeChat no fue compilado con soporte libgcrypt"
+
+#, fuzzy
#~ msgid "Regex modifier"
#~ msgstr "Modificadores regulares predeterminados"
@@ -8933,9 +9276,6 @@ msgstr "Constantes"
#~ msgid "%s%s: sending data to client error %d: %d %s"
#~ msgstr "%s%s: error al enviar datos al cliente %d (%s)"
-#~ msgid "%s%s: error sending data to client: %s"
-#~ msgstr "%s%s: error al enviar datos al cliente: %s"
-
#~ msgid "display channel modes in \"buffer_name\" bar item"
#~ msgstr "mostrar los modos del canal en el elemento de barra \"buffer_name\""
diff --git a/po/fr.po b/po/fr.po
index 334b75737..49c13f37a 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.9-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
-"PO-Revision-Date: 2012-08-02 22:50+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
+"PO-Revision-Date: 2012-08-14 18:26+0200\n"
"Last-Translator: Sebastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: French\n"
@@ -6629,14 +6629,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr "%s%s: client capability, activé: %s"
#, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-"%s%s: impossible de s'authentifier avec SASL et le mécanisme DH-BLOWFISH car "
-"WeeChat n'a pas été construit avec le support libgcrypt"
-
-#, c-format
msgid "%s%s: client capability, refused: %s"
msgstr "%s%s: client capability, refusé: %s"
@@ -8365,66 +8357,6 @@ msgstr "%s%s: erreur inconnue en chargement du fichier \"%s\""
msgid "%s%s: unable to initialize %s"
msgstr "%s%s: impossible d'initialiser %s"
-msgid "Support of python scripts"
-msgstr "Support des scripts python"
-
-#, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s%s: impossible d'initialiser le module WeeChat"
-
-#, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "%s%s: impossible de rediriger stdout"
-
-#, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s%s: impossible de rediriger stderr"
-
-msgid "path to python 2.x interpreter"
-msgstr "chemin vers l'interpréteur python 2.x"
-
-#, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s%s: impossible de lancer l'interpréteur global"
-
-#, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s%s: impossible de lire l'état courant de l'interpréteur"
-
-#, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s%s: impossible de libérer l'interpréteur"
-
-msgid "Support of ruby scripts"
-msgstr "Support des scripts ruby"
-
-#, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%s%s: stdout/stderr: %s%s"
-
-#, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "%s%s: impossible de lire le fichier \"%s\""
-
-#, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "%s%s: erreur en chargement du fichier \"%s\""
-
-#, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr ""
-"%s%s: la fonction \"weechat_init\" est manquante dans le fichier \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr ""
-"%s%s: impossible d'évaluer la fonction \"weechat_init\" dans le fichier \"%s"
-"\""
-
-#, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s%s: impossible d'évaluer le code ruby interne WeeChat"
-
msgid "list/load/unload scripts"
msgstr "lister/charger/décharger des scripts"
@@ -8544,6 +8476,456 @@ msgstr ""
msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s%s: paramètres invalides pour la fonction \"%s\" (script: %s)"
+msgid "Support of python scripts"
+msgstr "Support des scripts python"
+
+#, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s%s: impossible d'initialiser le module WeeChat"
+
+#, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "%s%s: impossible de rediriger stdout"
+
+#, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s%s: impossible de rediriger stderr"
+
+msgid "path to python 2.x interpreter"
+msgstr "chemin vers l'interpréteur python 2.x"
+
+#, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s%s: impossible de lancer l'interpréteur global"
+
+#, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s%s: impossible de lire l'état courant de l'interpréteur"
+
+#, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s%s: impossible de libérer l'interpréteur"
+
+msgid "Support of ruby scripts"
+msgstr "Support des scripts ruby"
+
+#, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%s%s: stdout/stderr: %s%s"
+
+#, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "%s%s: impossible de lire le fichier \"%s\""
+
+#, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "%s%s: erreur en chargement du fichier \"%s\""
+
+#, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr ""
+"%s%s: la fonction \"weechat_init\" est manquante dans le fichier \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr ""
+"%s%s: impossible d'évaluer la fonction \"weechat_init\" dans le fichier \"%s"
+"\""
+
+#, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s%s: impossible d'évaluer le code ruby interne WeeChat"
+
+msgid "Scripts manager"
+msgstr "Gestionnaire de scripts"
+
+msgid "Scripts loaded:"
+msgstr "Scripts chargés:"
+
+#, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "%s: langage inconnu pour le script \"%s\""
+
+#, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "%s%s: erreur de téléchargement du script \"%s\": %s"
+
+#, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "%s: téléchargement du script \"%s\"..."
+
+#, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s: le script \"%s\" n'est pas installé"
+
+#, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "%s: le script \"%s\" est figé"
+
+#, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s: script \"%s\" non trouvé"
+
+#, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s: le script \"%s\" n'est plus figé"
+
+#, c-format
+msgid "%s: script \"%s\" held"
+msgstr "%s: script \"%s\" figé"
+
+#, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr "%s: le script \"%s\" est déjà installé et à jour"
+
+#, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "%s: tous les scripts sont à jour"
+
+msgid "Script"
+msgstr "Script"
+
+msgid "Version"
+msgstr "Version"
+
+msgid "Author"
+msgstr "Auteur"
+
+msgid "License"
+msgstr "Licence"
+
+msgid "Description"
+msgstr "Description"
+
+msgid "Tags"
+msgstr "Etiquettes"
+
+msgid "Status"
+msgstr "Statut"
+
+msgid "Date added"
+msgstr "Date d'ajout"
+
+msgid "Date updated"
+msgstr "Date de mise à jour"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "MD5"
+msgstr "MD5"
+
+msgid "Requires"
+msgstr "Requiert"
+
+msgid "Min WeeChat"
+msgstr "WeeChat mini"
+
+msgid "Max WeeChat"
+msgstr "WeeChat maxi"
+
+msgid "popular"
+msgstr "populaire"
+
+msgid "installed"
+msgstr "installé"
+
+msgid "held"
+msgstr "figé"
+
+msgid "running"
+msgstr "chargé"
+
+msgid "obsolete"
+msgstr "obsolète"
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr "alt+d=retour à la liste"
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+"%d/%d scripts (filtre: %s) | Tri: %s | alt+i=installer r=supprimer l=charger "
+"u=décharger h=(dé)figer d=afficher détail | Entrée: 'q'=fermer "
+"'r'=rafraîchir 's:x,y'=trier 'words'=filtrer '*'=réinit filtre"
+
+msgid "Scripts"
+msgstr "Scripts"
+
+msgid "WeeChat scripts manager"
+msgstr "Gestionnaire de scripts WeeChat"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+" list: lister les scripts chargés (tous les langages)\n"
+" show: afficher des infos détaillées sur le script\n"
+" load: charger un ou plusieurs scripts\n"
+" unload: décharger un ou plusieurs scripts\n"
+" install: installer/mettre à jour un ou plusieurs scripts\n"
+" remove: supprimer un ou plusieurs scripts\n"
+" hold: figer/défiger un ou plusieurs scripts (un script figé ne sera plus "
+"mis à jour et ne peut pas être supprimé)\n"
+" upgrade: mettre à jour les scripts obsolètes (avec nouvelle version "
+"disponible)\n"
+" update: mettre à jour le cache local des scripts\n"
+"\n"
+"Sans paramètre, cette commande ouvre un tampon avec la liste des scripts.\n"
+"\n"
+"Sur le tampon des scripts, les statuts pour chaque script sont :\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolète (nouvelle version disponible)\n"
+" | | | chargé\n"
+" | | figé\n"
+" | installé\n"
+" script populaire\n"
+"\n"
+"Les touches sur le tampon des scripts :\n"
+" alt+i installer le script\n"
+" alt+r supprimer le script\n"
+" alt+l charger le script\n"
+" alt+u décharger le script\n"
+" alt+h (dé)figer le script\n"
+"\n"
+"Entrée autorisée sur le tampon des scripts :\n"
+" q fermer le tampon\n"
+" r rafraîchir le tampon\n"
+" s:x,y trier le tampon en utilisant les clés x et y (voir /help script."
+"look.sort)\n"
+" s: réinitialiser le tri (utiliser le tri par défaut)\n"
+" word(s) filtrer les scripts: recherche du/des mot(s) dans les scripts "
+"(description, étiquettes, ...)\n"
+" * supprimer le filtre"
+
+msgid "list of scripts in repository"
+msgstr "liste des scripts du repository"
+
+msgid "list of scripts installed (from repository)"
+msgstr "liste des scripts installés (du repository)"
+
+msgid "files in script directories"
+msgstr "fichiers dans les répertoires de script"
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+"format des colonnes affichées dans le tampon des scripts: les identifiants "
+"de colonne suivants sont remplacés par leur valeur: %a=auteur, "
+"%d=description, %D=date d'ajout, %e=extension, %l=langage, %L=licence, "
+"%n=nom avec extension, %N=nom, %r=dépendances, %s=statuts, %t=étiquettes, "
+"%u=date de mise à jour, %v=version, %V=version chargée, %w=min_weechat, "
+"%W=max_weechat"
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+"tri par défaut des scripts: liste d'identifiants séparés par des virgules: "
+"a=auteur, d=date d'ajour, e=extension, i=installé, l=langage, n=nom, "
+"o=obsolète, p=populaire, r=chargé, u=date de mise à jour; le caractère \"-\" "
+"peut être utilisé avant l'identifiant pour inverser l'ordre; exemple: \"i,u"
+"\": scripts installés en premier, triés par date de mise à jour"
+
+msgid "color for status \"popular\" (\"*\")"
+msgstr "couleur du statut \"populaire\" (\"*\")"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr "couleur du statut \"installé\" (\"i\")"
+
+msgid "color for status \"held\" (\"H\")"
+msgstr "couleur du statut \"figé\" (\"H\")"
+
+msgid "color for status \"running\" (\"r\")"
+msgstr "couleur du statut \"chargé\" (\"r\")"
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr "couleur du statut \"obsolète\" (\"N\")"
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr "couleur du statut \"inconnu\" (\"?\")"
+
+msgid "text color in script buffer"
+msgstr "couleur du texte dans le tampon script"
+
+msgid "text color of dates in script buffer"
+msgstr "couleur du texte pour les dates dans le tampon script"
+
+msgid "text color of delimiters in script buffer"
+msgstr "couleur du texte pour les délimiteurs dans le tampon script"
+
+msgid "text color of description in script buffer"
+msgstr "couleur du texte pour la description dans le tampon script"
+
+msgid "text color of extension in script buffer"
+msgstr "couleur du texte pour l'extension dans le tampon script"
+
+msgid "text color of script name in script buffer"
+msgstr "couleur du texte pour le nom du script dans le tampon script"
+
+msgid "text color of tags in script buffer"
+msgstr "couleur du texte pour les étiquettes dans le tampon script"
+
+msgid "text color of version in script buffer"
+msgstr "couleur du texte pour la version dans le tampon script"
+
+msgid "text color of version loaded in script buffer"
+msgstr "couleur du texte pour la version chargée dans le tampon script"
+
+msgid "background color in script buffer"
+msgstr "couleur du fond dans le tampon script"
+
+msgid "text color for selected line in script buffer"
+msgstr "couleur du texte pour la ligne sélectionnée dans le tampon script"
+
+msgid "text color of dates for selected line in script buffer"
+msgstr ""
+"couleur du texte pour les dates de la ligne sélectionnée dans le tampon "
+"script"
+
+msgid "text color of description for selected line in script buffer"
+msgstr ""
+"couleur du texte pour la description de la ligne sélectionnée dans le tampon "
+"script"
+
+msgid "text color of extension for selected line in script buffer"
+msgstr ""
+"couleur du texte pour l'extension de la ligne sélectionnée dans le tampon "
+"script"
+
+msgid "text color of script name for selected line in script buffer"
+msgstr ""
+"couleur du texte pour le nom du script de la ligne sélectionnée dans le "
+"tampon script"
+
+msgid "text color of tags for selected line in script buffer"
+msgstr ""
+"couleur du texte pour les étiquettes de la ligne sélectionnée dans le tampon "
+"script"
+
+msgid "text color of version for selected line in script buffer"
+msgstr ""
+"couleur du texte pour la version de la ligne sélectionnée dans le tampon "
+"script"
+
+msgid "text color of version loaded for selected line in script buffer"
+msgstr ""
+"couleur du texte pour la version chargée de la ligne sélectionnée dans le "
+"tampon script"
+
+msgid "background color for selected line in script buffer"
+msgstr "couleur du fond pour la ligne sélectionnée dans le tampon script"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+"temps d'expiration du cache local, en minutes (-1 = n'expire jamais, 0 = "
+"expire toujours)"
+
+msgid "local cache directory for scripts"
+msgstr "répertoire du cache local pour les scripts"
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+"scripts à \"figer\": liste de scripts séparés par des virgules qui ne seront "
+"jamais mis à jour et ne peuvent pas être supprimés, par exemple: \"buffers."
+"pl,iset.pl\""
+
+msgid "URL for file with list of scripts"
+msgstr "URL pour le fichier avec la liste des scripts"
+
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+"nom du script avec extension (peut démarrer ou se terminer par \"*\" comme "
+"joker) (optionnel)"
+
+msgid "scripts from repository"
+msgstr "scripts du repository"
+
+#, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s%s: erreur de lecture de la liste des scripts"
+
+#, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "%s: %d scripts pour WeeChat %s"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+"%s%s: la liste des scripts est vide (le fichier du repository est cassé, ou "
+"bien le téléchargement a échoué)"
+
+#, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s%s: erreur de téléchargement de la liste des scripts: %s"
+
+#, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "%s: téléchargement de la liste des scripts..."
+
msgid "Support of tcl scripts"
msgstr "Support des scripts tcl"
@@ -8940,9 +9322,6 @@ msgstr "Extension"
msgid "Name"
msgstr "Nom"
-msgid "Description"
-msgstr "Description"
-
msgid "Arguments"
msgstr "Paramètres"
@@ -8969,6 +9348,3 @@ msgstr "Type"
msgid "Constants"
msgstr "Constantes"
-
-#~ msgid "Regex modifier"
-#~ msgstr "Modifieur avec expressions régulières"
diff --git a/po/hu.po b/po/hu.po
index 97b6f3840..1edb20e7f 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.9-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: 2012-06-03 09:49+0200\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5866,14 +5866,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr ""
#, fuzzy, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-"%s nem sikerült SSL használattal kapcsolódni, mert a WeeChat GNUtls "
-"támogatás nélkül lett fordítva\n"
-
-#, fuzzy, c-format
msgid "%s%s: client capability, refused: %s"
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
@@ -7503,65 +7495,6 @@ msgid "%s%s: unable to initialize %s"
msgstr "%s nem sikerült a modult betölteni \"%s\"\n"
#, fuzzy
-msgid "Support of python scripts"
-msgstr "Aliaszok listája:\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s nem sikerült a modult betölteni \"%s\"\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s nem sikerült a szervert létrehozni\n"
-
-msgid "path to python 2.x interpreter"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s nem sikerült a szervert létrehozni\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s nem sikerült a szervert létrehozni\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s nem sikerült a szervert létrehozni\n"
-
-#, fuzzy
-msgid "Support of ruby scripts"
-msgstr "Aliaszok listája:\n"
-
-#, fuzzy, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%sSzerver: %s%s\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
-
-#, fuzzy, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
-
-#, fuzzy, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s nem sikerült a szervert létrehozni\n"
-
-#, fuzzy
msgid "list/load/unload scripts"
msgstr "modulok listázása/betöltése/eltávolítása"
@@ -7674,6 +7607,406 @@ msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s rossz argumentum a \"%s\" parancsnak\n"
#, fuzzy
+msgid "Support of python scripts"
+msgstr "Aliaszok listája:\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s nem sikerült a modult betölteni \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s nem sikerült a szervert létrehozni\n"
+
+msgid "path to python 2.x interpreter"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s nem sikerült a szervert létrehozni\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s nem sikerült a szervert létrehozni\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s nem sikerült a szervert létrehozni\n"
+
+#, fuzzy
+msgid "Support of ruby scripts"
+msgstr "Aliaszok listája:\n"
+
+#, fuzzy, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%sSzerver: %s%s\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
+
+#, fuzzy, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
+
+#, fuzzy, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s nem sikerült a szervert létrehozni\n"
+
+msgid "Scripts manager"
+msgstr ""
+
+#, fuzzy
+msgid "Scripts loaded:"
+msgstr "FIFO cső bezárva\n"
+
+#, fuzzy, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "folyamat: \"%s\" szerver betöltése\n"
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "folyamat: \"%s\" szerver betöltése\n"
+
+#, fuzzy, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "folyamat: \"%s\" szerver betöltése\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s a \"%s\" szerver nem található\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "A \"%s\" modul eltávolítva.\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s a \"%s\" szerver nem található\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s a \"%s\" szerver nem található\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" held"
+msgstr "A \"%s\" modul eltávolítva.\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr "%s a \"%s\" szerver már létezik, nem hozhatja létre!\n"
+
+#, fuzzy, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "A \"%s\" modul eltávolítva.\n"
+
+msgid "Script"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+#, fuzzy
+msgid "Description"
+msgstr " . leírás : %s\n"
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+#, fuzzy
+msgid "Date updated"
+msgstr "A \"%s\" => \"%s\" aliasz elkészült\n"
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+#, fuzzy
+msgid "Min WeeChat"
+msgstr "WeeChat szlogen"
+
+#, fuzzy
+msgid "Max WeeChat"
+msgstr "WeeChat szlogen"
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
+msgstr ""
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+
+msgid "Scripts"
+msgstr ""
+
+#, fuzzy
+msgid "WeeChat scripts manager"
+msgstr "WeeChat szlogen"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+#, fuzzy
+msgid "list of scripts in repository"
+msgstr "Aliaszok listája:\n"
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+#, fuzzy
+msgid "color for status \"popular\" (\"*\")"
+msgstr "státuszsor színe"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+#, fuzzy
+msgid "text color in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of dates in script buffer"
+msgstr "másik fél nevének színe privát beszélgetésben"
+
+#, fuzzy
+msgid "text color of delimiters in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of description in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of extension in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of script name in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of tags in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of version in script buffer"
+msgstr "másik fél nevének színe privát beszélgetésben"
+
+#, fuzzy
+msgid "text color of version loaded in script buffer"
+msgstr "másik fél nevének színe privát beszélgetésben"
+
+#, fuzzy
+msgid "background color in script buffer"
+msgstr "nevek háttere"
+
+#, fuzzy
+msgid "text color for selected line in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of dates for selected line in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of description for selected line in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of extension for selected line in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of script name for selected line in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of tags for selected line in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of version for selected line in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "text color of version loaded for selected line in script buffer"
+msgstr "szerver nevének színe"
+
+#, fuzzy
+msgid "background color for selected line in script buffer"
+msgstr "szerver nevének színe"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+#, fuzzy
+msgid "URL for file with list of scripts"
+msgstr "Aliaszok listája:\n"
+
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+
+#, fuzzy
+msgid "scripts from repository"
+msgstr "Aliaszok listája:\n"
+
+#, fuzzy, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s adatküldési hiba az IRC szerveren\n"
+
+#, fuzzy, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "nincs a szobában"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s adatküldési hiba az IRC szerveren\n"
+
+#, fuzzy, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "folyamat: \"%s\" szerver betöltése\n"
+
+#, fuzzy
msgid "Support of tcl scripts"
msgstr "Aliaszok listája:\n"
@@ -8080,10 +8413,6 @@ msgid "Name"
msgstr ""
#, fuzzy
-msgid "Description"
-msgstr " . leírás : %s\n"
-
-#, fuzzy
msgid "Arguments"
msgstr "fogadó típusa [paraméterek]"
@@ -8114,6 +8443,18 @@ msgid "Constants"
msgstr ""
#, fuzzy
+#~ msgid "%s: downloading \"%s\"..."
+#~ msgstr "folyamat: \"%s\" szerver betöltése\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
+#~ "WeeChat was not built with libgcrypt support"
+#~ msgstr ""
+#~ "%s nem sikerült SSL használattal kapcsolódni, mert a WeeChat GNUtls "
+#~ "támogatás nélkül lett fordítva\n"
+
+#, fuzzy
#~ msgid "Regex modifier"
#~ msgstr "Alapértelmezett billentyűparancsok visszaállítva\n"
@@ -8145,10 +8486,6 @@ msgstr ""
#~ msgstr "%s adatküldési hiba az IRC szerveren\n"
#, fuzzy
-#~ msgid "%s%s: error sending data to client: %s"
-#~ msgstr "%s adatküldési hiba az IRC szerveren\n"
-
-#, fuzzy
#~ msgid "%sError: name can not start with \"#\""
#~ msgstr "%s nem sikerült a \"%s\" fájlt létrehozni\n"
diff --git a/po/it.po b/po/it.po
index 9b353710d..acad5da75 100644
--- a/po/it.po
+++ b/po/it.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.9-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: 2012-07-30 15:38+0200\n"
"Last-Translator: Marco Paolone <marcopaolone@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6554,14 +6554,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr "%s%s: capacità del client, abilitata: %s"
#, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-"%s%s: impossibile effettuare l'autenticazione con SASL ed il meccanismo DH-"
-"BLOWFISH perché WeeChat non è stato compilato con il suppporto a libgcrypt"
-
-#, c-format
msgid "%s%s: client capability, refused: %s"
msgstr "%s%s: capacità del client, rifiutata: %s"
@@ -8275,66 +8267,6 @@ msgstr "%s%s: errore sconosciuto durante la lettura del file \"%s\""
msgid "%s%s: unable to initialize %s"
msgstr "%s%s: impossibile inizializzare %s"
-#, fuzzy
-msgid "Support of python scripts"
-msgstr "elenco degli script"
-
-#, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s%s: impossibile inizializzare il modulo WeeChat"
-
-#, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "%s%s: impossibile reindirizzare stdout"
-
-#, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s%s: impossibile reindirizzare stderr"
-
-msgid "path to python 2.x interpreter"
-msgstr "path per l'interprete python 2.x"
-
-#, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s%s: impossibile avviare l'interprete globale"
-
-#, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s%s: impossibile ricevere lo stato attuale dell'interprete"
-
-#, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s%s: impossibile liberare l'interprete"
-
-#, fuzzy
-msgid "Support of ruby scripts"
-msgstr "elenco degli script"
-
-#, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%s%s: stdout/stderr: %s%s"
-
-#, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "%s%s: impossibile leggere il file \"%s\""
-
-#, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "%s%s: errore durante il caricamento del file \"%s\""
-
-#, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr "%s%s: funzione \"weechat_init\" mancante nel file \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr ""
-"%s%s: impossibile analizzare la funzione \"weechat_init\" nel file \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s%s: impossibile analizzare il codice interno ruby di WeeChat"
-
msgid "list/load/unload scripts"
msgstr "elenca/carica/scarica script"
@@ -8457,6 +8389,409 @@ msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s%s: argomenti errati per la funzione \"%s\" (script: %s)"
#, fuzzy
+msgid "Support of python scripts"
+msgstr "elenco degli script"
+
+#, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s%s: impossibile inizializzare il modulo WeeChat"
+
+#, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "%s%s: impossibile reindirizzare stdout"
+
+#, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s%s: impossibile reindirizzare stderr"
+
+msgid "path to python 2.x interpreter"
+msgstr "path per l'interprete python 2.x"
+
+#, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s%s: impossibile avviare l'interprete globale"
+
+#, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s%s: impossibile ricevere lo stato attuale dell'interprete"
+
+#, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s%s: impossibile liberare l'interprete"
+
+#, fuzzy
+msgid "Support of ruby scripts"
+msgstr "elenco degli script"
+
+#, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%s%s: stdout/stderr: %s%s"
+
+#, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "%s%s: impossibile leggere il file \"%s\""
+
+#, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "%s%s: errore durante il caricamento del file \"%s\""
+
+#, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr "%s%s: funzione \"weechat_init\" mancante nel file \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr ""
+"%s%s: impossibile analizzare la funzione \"weechat_init\" nel file \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s%s: impossibile analizzare il codice interno ruby di WeeChat"
+
+msgid "Scripts manager"
+msgstr ""
+
+#, fuzzy
+msgid "Scripts loaded:"
+msgstr "script %s caricati:"
+
+#, fuzzy, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "%s: scaricamento dello script \"%s\""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "%s: scaricamento dello script \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "%s: scaricamento dello script \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s%s: script \"%s\" non caricato"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "%s: script \"%s\" scaricato"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s%s: script \"%s\" non trovato"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s%s: script \"%s\" non caricato"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" held"
+msgstr "%s: script \"%s\" scaricato"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr "%s%s: script \"%s\" già registrato (funzione register ignorata)"
+
+#, fuzzy, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "%s: script scaricati"
+
+msgid "Script"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+msgid "Description"
+msgstr "Descrizione"
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+#, fuzzy
+msgid "Date updated"
+msgstr "Barra \"%s\" aggiornata"
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+#, fuzzy
+msgid "Min WeeChat"
+msgstr "esce da WeeChat"
+
+#, fuzzy
+msgid "Max WeeChat"
+msgstr "esce da WeeChat"
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
+msgstr ""
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+
+msgid "Scripts"
+msgstr ""
+
+#, fuzzy
+msgid "WeeChat scripts manager"
+msgstr "sito di WeeChat"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+#, fuzzy
+msgid "list of scripts in repository"
+msgstr "elenco degli script"
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+#, fuzzy
+msgid "color for status \"popular\" (\"*\")"
+msgstr "colore del testo per l'ora (barra di stato)"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+#, fuzzy
+msgid "text color in script buffer"
+msgstr "colore del testo nel buffer xfer"
+
+#, fuzzy
+msgid "text color of dates in script buffer"
+msgstr "colore del testo per gli altri nick nel buffer privato"
+
+#, fuzzy
+msgid "text color of delimiters in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of description in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of extension in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of script name in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of tags in script buffer"
+msgstr "colore del testo nel buffer xfer"
+
+#, fuzzy
+msgid "text color of version in script buffer"
+msgstr "colore del testo per gli altri nick nel buffer privato"
+
+#, fuzzy
+msgid "text color of version loaded in script buffer"
+msgstr "colore del testo per gli altri nick nel buffer privato"
+
+#, fuzzy
+msgid "background color in script buffer"
+msgstr "colore di sfondo del buffer xfer"
+
+#, fuzzy
+msgid "text color for selected line in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of dates for selected line in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of description for selected line in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of extension for selected line in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of script name for selected line in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of tags for selected line in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of version for selected line in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "text color of version loaded for selected line in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+#, fuzzy
+msgid "background color for selected line in script buffer"
+msgstr "colore della riga selezionata nel buffer xfer"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+#, fuzzy
+msgid "URL for file with list of scripts"
+msgstr "elenco degli script"
+
+#, fuzzy
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+"nome script (può iniziare o terminare con \"*\" come carattere jolly) "
+"(opzionale)"
+
+#, fuzzy
+msgid "scripts from repository"
+msgstr "elenco degli script"
+
+#, fuzzy, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s%s: errore durante l'invio dei dati al client: %s"
+
+#, fuzzy, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "%s: script eliminato: %s"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s%s: errore durante l'invio dei dati al client: %s"
+
+#, fuzzy, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "%s: scaricamento dello script \"%s\""
+
+#, fuzzy
msgid "Support of tcl scripts"
msgstr "elenco degli script"
@@ -8843,9 +9178,6 @@ msgstr "Plugin"
msgid "Name"
msgstr "Nome"
-msgid "Description"
-msgstr "Descrizione"
-
msgid "Arguments"
msgstr "Argomenti"
@@ -8874,6 +9206,18 @@ msgid "Constants"
msgstr "Costanti"
#, fuzzy
+#~ msgid "%s: downloading \"%s\"..."
+#~ msgstr "%s: scaricamento dello script \"%s\""
+
+#~ msgid ""
+#~ "%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
+#~ "WeeChat was not built with libgcrypt support"
+#~ msgstr ""
+#~ "%s%s: impossibile effettuare l'autenticazione con SASL ed il meccanismo "
+#~ "DH-BLOWFISH perché WeeChat non è stato compilato con il suppporto a "
+#~ "libgcrypt"
+
+#, fuzzy
#~ msgid "Regex modifier"
#~ msgstr "Rmodifier predefiniti:"
@@ -8907,9 +9251,6 @@ msgstr "Costanti"
#~ msgid "%s%s: sending data to client error %d: %d %s"
#~ msgstr "%s%s: errore nell'invio dei dati al client %d (%s)"
-#~ msgid "%s%s: error sending data to client: %s"
-#~ msgstr "%s%s: errore durante l'invio dei dati al client: %s"
-
#~ msgid "display channel modes in \"buffer_name\" bar item"
#~ msgstr "visualizza le modalità canale nell'elemento barra \"buffer_name\""
diff --git a/po/ja.po b/po/ja.po
index 817d7fec1..01396e0a3 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.9-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: 2012-07-27 12:16+0200\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/WeeChat>\n"
@@ -6383,14 +6383,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr "%s%s: クライアント能力、有効化: %s"
#, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-"%s%s: WeeChat が libgcrypt をサポートしてビルドされていないので、SASL と DH-"
-"BLOWFISH メカニズムの組み合わせでは認証出来ません"
-
-#, c-format
msgid "%s%s: client capability, refused: %s"
msgstr "%s%s: クライアント能力、拒否されました: %s"
@@ -8074,65 +8066,6 @@ msgstr "%s%s: ファイル \"%s\" のロード中の未定義のエラー"
msgid "%s%s: unable to initialize %s"
msgstr "%s%s: %s の初期化に失敗"
-#, fuzzy
-msgid "Support of python scripts"
-msgstr "スクリプトのリスト"
-
-#, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s%s: WeeChat モジュールを初期化に失敗"
-
-#, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "%s%s: 標準入力のリダイレクトに失敗"
-
-#, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s%s: 標準エラーのリダイレクトに失敗"
-
-msgid "path to python 2.x interpreter"
-msgstr "python 2.x インタプリタへのパス"
-
-#, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s%s: グローバルインタプリタの起動に失敗"
-
-#, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s%s: 現在のインタプリタの状態の取得に失敗"
-
-#, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s%s: インタプリタの開放に失敗"
-
-#, fuzzy
-msgid "Support of ruby scripts"
-msgstr "スクリプトのリスト"
-
-#, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%s%s: 標準入力/標準エラー: %s%s"
-
-#, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "%s%s: ファイル \"%s\" を読み込めません"
-
-#, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "%s%s: ファイル \"%s\" の読み込み中にエラー"
-
-#, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr "%s%s: 関数 \"weechat_init\" がファイル \"%s\" の中に見つかりません"
-
-#, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr "%s%s: ファイル \"%s\" 内の関数 \"weechat_init\" を評価できません"
-
-#, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s%s: WeeChat ruby 内部コードを評価できません"
-
msgid "list/load/unload scripts"
msgstr "スクリプトをリストアップ/ロード/アンロード"
@@ -8250,6 +8183,407 @@ msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s%s: 関数 \"%s\" の不正な引数 (スクリプト: %s)"
#, fuzzy
+msgid "Support of python scripts"
+msgstr "スクリプトのリスト"
+
+#, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s%s: WeeChat モジュールを初期化に失敗"
+
+#, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "%s%s: 標準入力のリダイレクトに失敗"
+
+#, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s%s: 標準エラーのリダイレクトに失敗"
+
+msgid "path to python 2.x interpreter"
+msgstr "python 2.x インタプリタへのパス"
+
+#, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s%s: グローバルインタプリタの起動に失敗"
+
+#, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s%s: 現在のインタプリタの状態の取得に失敗"
+
+#, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s%s: インタプリタの開放に失敗"
+
+#, fuzzy
+msgid "Support of ruby scripts"
+msgstr "スクリプトのリスト"
+
+#, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%s%s: 標準入力/標準エラー: %s%s"
+
+#, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "%s%s: ファイル \"%s\" を読み込めません"
+
+#, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "%s%s: ファイル \"%s\" の読み込み中にエラー"
+
+#, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr "%s%s: 関数 \"weechat_init\" がファイル \"%s\" の中に見つかりません"
+
+#, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr "%s%s: ファイル \"%s\" 内の関数 \"weechat_init\" を評価できません"
+
+#, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s%s: WeeChat ruby 内部コードを評価できません"
+
+msgid "Scripts manager"
+msgstr ""
+
+#, fuzzy
+msgid "Scripts loaded:"
+msgstr "ロードされた %s スクリプト:"
+
+#, fuzzy, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "%s: スクリプト \"%s\" のアンロード中"
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "%s: スクリプト \"%s\" のアンロード中"
+
+#, fuzzy, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "%s: スクリプト \"%s\" のアンロード中"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s%s: スクリプト \"%s\" はロードされていません"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "%s: スクリプト \"%s\" がアンロードされました"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s%s: スクリプト \"%s\" が見つかりません"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s%s: スクリプト \"%s\" はロードされていません"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" held"
+msgstr "%s: スクリプト \"%s\" がアンロードされました"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr "%s%s: サーバ \"%s\" は既に存在しており、作成できません"
+
+#, fuzzy, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "%s: スクリプトがロードされました"
+
+msgid "Script"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+msgid "Description"
+msgstr "説明"
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+#, fuzzy
+msgid "Date updated"
+msgstr "バー \"%s\" がアップデートされました"
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+#, fuzzy
+msgid "Min WeeChat"
+msgstr "WeeChat を終了"
+
+#, fuzzy
+msgid "Max WeeChat"
+msgstr "WeeChat を終了"
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
+msgstr ""
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+
+msgid "Scripts"
+msgstr ""
+
+#, fuzzy
+msgid "WeeChat scripts manager"
+msgstr "WeeChat サイト"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+#, fuzzy
+msgid "list of scripts in repository"
+msgstr "スクリプトのリスト"
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+#, fuzzy
+msgid "color for status \"popular\" (\"*\")"
+msgstr "時間のテキスト色 (ステータスバー)"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+#, fuzzy
+msgid "text color in script buffer"
+msgstr "バッファ名のテキスト色"
+
+#, fuzzy
+msgid "text color of dates in script buffer"
+msgstr "プライベートバッファ内の他のニックネームのテキスト色"
+
+#, fuzzy
+msgid "text color of delimiters in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of description in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of extension in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of script name in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of tags in script buffer"
+msgstr "バッファ名のテキスト色"
+
+#, fuzzy
+msgid "text color of version in script buffer"
+msgstr "プライベートバッファ内の他のニックネームのテキスト色"
+
+#, fuzzy
+msgid "text color of version loaded in script buffer"
+msgstr "プライベートバッファ内の他のニックネームのテキスト色"
+
+#, fuzzy
+msgid "background color in script buffer"
+msgstr "チャットの背景色"
+
+#, fuzzy
+msgid "text color for selected line in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of dates for selected line in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of description for selected line in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of extension for selected line in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of script name for selected line in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of tags for selected line in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of version for selected line in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "text color of version loaded for selected line in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+#, fuzzy
+msgid "background color for selected line in script buffer"
+msgstr "選択されたクライアント行のテキスト色"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+#, fuzzy
+msgid "URL for file with list of scripts"
+msgstr "スクリプトのリスト"
+
+#, fuzzy
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+"スクリプト名 (ワイルドカードとして \"*\" で始めるか終われる) (オプション)"
+
+#, fuzzy
+msgid "scripts from repository"
+msgstr "スクリプトのリスト"
+
+#, fuzzy, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s%s: クライアントへのデータ送信中にエラー: %s"
+
+#, fuzzy, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "%s: スクリプトが削除されました: %s"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s%s: クライアントへのデータ送信中にエラー: %s"
+
+#, fuzzy, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "%s: スクリプト \"%s\" のアンロード中"
+
+#, fuzzy
msgid "Support of tcl scripts"
msgstr "スクリプトのリスト"
@@ -8637,9 +8971,6 @@ msgstr "プラグイン"
msgid "Name"
msgstr "名前"
-msgid "Description"
-msgstr "説明"
-
msgid "Arguments"
msgstr "引数"
@@ -8668,6 +8999,17 @@ msgid "Constants"
msgstr "定数"
#, fuzzy
+#~ msgid "%s: downloading \"%s\"..."
+#~ msgstr "%s: スクリプト \"%s\" のアンロード中"
+
+#~ msgid ""
+#~ "%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
+#~ "WeeChat was not built with libgcrypt support"
+#~ msgstr ""
+#~ "%s%s: WeeChat が libgcrypt をサポートしてビルドされていないので、SASL と "
+#~ "DH-BLOWFISH メカニズムの組み合わせでは認証出来ません"
+
+#, fuzzy
#~ msgid "Regex modifier"
#~ msgstr "デフォルトの rmodifier:"
@@ -8700,9 +9042,6 @@ msgstr "定数"
#~ msgid "%s%s: sending data to client error %d: %d %s"
#~ msgstr "%s%s: クライアント %d (%s) へのデータ送信中にエラー"
-#~ msgid "%s%s: error sending data to client: %s"
-#~ msgstr "%s%s: クライアントへのデータ送信中にエラー: %s"
-
#~ msgid "display channel modes in \"buffer_name\" bar item"
#~ msgstr "\"buffer_name\" バーアイテムにチャンネルモードを表示"
diff --git a/po/pl.po b/po/pl.po
index 3f9a072bc..d3867c5e9 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.9-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: 2012-07-27 12:16+0200\n"
"Last-Translator: Krzysztof Korościk <soltys@szluug.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6517,14 +6517,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr "%s%s: możliwości klienta, włączone: %s"
#, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-"%s%s: nie można uwierzytelnić za pomocą SASL oraz mechanizmu DH-BLOWFISH, "
-"ponieważ WeeChat został skompilowany bez wsparcia dla libgcrypt"
-
-#, c-format
msgid "%s%s: client capability, refused: %s"
msgstr "%s%s: możliwości klienta, odrzucone: %s"
@@ -8214,65 +8206,6 @@ msgstr "%s%s: nieznany błąd podczas ładowania pliku \"%s\""
msgid "%s%s: unable to initialize %s"
msgstr "%s%s: nie można zainicjować %s"
-#, fuzzy
-msgid "Support of python scripts"
-msgstr "lista skryptów"
-
-#, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s%s: nie można zainicjować modułu WeeChat"
-
-#, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "%s%s: nie można przekierować wyjścia"
-
-#, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s%s: nie można przekierować wyjścia błędu"
-
-msgid "path to python 2.x interpreter"
-msgstr "ścieżka do interpretera pythona 2.x"
-
-#, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s%s: nie można uruchomić globalnego interpretera"
-
-#, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s%s: nie można pobrać obecnego stanu interpretera"
-
-#, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s%s: nie można zwolnić interpretera"
-
-#, fuzzy
-msgid "Support of ruby scripts"
-msgstr "lista skryptów"
-
-#, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%s%s: stdout/stderr: %s%s"
-
-#, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "%s%s: nie można odczytać pliku \"%s\""
-
-#, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "%s%s: błąd podczas ładowania pliku \"%s\""
-
-#, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr "%s%s: funkcja \"weechat_init\" nie znaleziona w pliku \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr "%s%s: nie można dokonać oceny funkcji \"weechat_init\" w pliku \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s%s: nie można ocenić wewnętrznego kodu ruby w WeeChat"
-
msgid "list/load/unload scripts"
msgstr "list/load/unload skrypt"
@@ -8390,6 +8323,406 @@ msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s%s: nieprawidłowe argumenty dla funkcji \"%s\" (skrypt: %s)"
#, fuzzy
+msgid "Support of python scripts"
+msgstr "lista skryptów"
+
+#, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s%s: nie można zainicjować modułu WeeChat"
+
+#, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "%s%s: nie można przekierować wyjścia"
+
+#, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s%s: nie można przekierować wyjścia błędu"
+
+msgid "path to python 2.x interpreter"
+msgstr "ścieżka do interpretera pythona 2.x"
+
+#, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s%s: nie można uruchomić globalnego interpretera"
+
+#, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s%s: nie można pobrać obecnego stanu interpretera"
+
+#, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s%s: nie można zwolnić interpretera"
+
+#, fuzzy
+msgid "Support of ruby scripts"
+msgstr "lista skryptów"
+
+#, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%s%s: stdout/stderr: %s%s"
+
+#, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "%s%s: nie można odczytać pliku \"%s\""
+
+#, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "%s%s: błąd podczas ładowania pliku \"%s\""
+
+#, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr "%s%s: funkcja \"weechat_init\" nie znaleziona w pliku \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr "%s%s: nie można dokonać oceny funkcji \"weechat_init\" w pliku \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s%s: nie można ocenić wewnętrznego kodu ruby w WeeChat"
+
+msgid "Scripts manager"
+msgstr ""
+
+#, fuzzy
+msgid "Scripts loaded:"
+msgstr "załadowano skrypt %s:"
+
+#, fuzzy, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "%s: wyładowuję skrypt \"%s\""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "%s: wyładowuję skrypt \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "%s: wyładowuję skrypt \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s%s: skrypt \"%s\" nie załadowany"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "%s: skrypt \"%s\" wyładowano"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s%s: nie znaleziono skryptu \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s%s: skrypt \"%s\" nie załadowany"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" held"
+msgstr "%s: skrypt \"%s\" wyładowano"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr "%s%s: serwer \"%s\" już istnieje, nie mogę go utworzyć!"
+
+#, fuzzy, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "%s: skryptów wyładowano"
+
+msgid "Script"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+msgid "Description"
+msgstr "Opis"
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+#, fuzzy
+msgid "Date updated"
+msgstr "Uaktualniono pasek \"%s\""
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+#, fuzzy
+msgid "Min WeeChat"
+msgstr "zakończ WeeChat"
+
+#, fuzzy
+msgid "Max WeeChat"
+msgstr "zakończ WeeChat"
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
+msgstr ""
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+
+msgid "Scripts"
+msgstr ""
+
+#, fuzzy
+msgid "WeeChat scripts manager"
+msgstr "Strona WeeChat"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+#, fuzzy
+msgid "list of scripts in repository"
+msgstr "lista skryptów"
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+#, fuzzy
+msgid "color for status \"popular\" (\"*\")"
+msgstr "kolor czasu (pasek statusu)"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+#, fuzzy
+msgid "text color in script buffer"
+msgstr "kolor nazw buforów"
+
+#, fuzzy
+msgid "text color of dates in script buffer"
+msgstr "kolor innego nicka w prywatnym buforze"
+
+#, fuzzy
+msgid "text color of delimiters in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of description in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of extension in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of script name in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of tags in script buffer"
+msgstr "kolor nazw buforów"
+
+#, fuzzy
+msgid "text color of version in script buffer"
+msgstr "kolor innego nicka w prywatnym buforze"
+
+#, fuzzy
+msgid "text color of version loaded in script buffer"
+msgstr "kolor innego nicka w prywatnym buforze"
+
+#, fuzzy
+msgid "background color in script buffer"
+msgstr "kolor tła czatu"
+
+#, fuzzy
+msgid "text color for selected line in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of dates for selected line in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of description for selected line in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of extension for selected line in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of script name for selected line in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of tags for selected line in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of version for selected line in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "text color of version loaded for selected line in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+#, fuzzy
+msgid "background color for selected line in script buffer"
+msgstr "kolor tekstu zaznaczonej linii klienta"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+#, fuzzy
+msgid "URL for file with list of scripts"
+msgstr "lista skryptów"
+
+#, fuzzy
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr "nazwa skryptu (może się zaczynać lub kończyć \"*\") (opcjonalne)"
+
+#, fuzzy
+msgid "scripts from repository"
+msgstr "lista skryptów"
+
+#, fuzzy, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s%s: błąd podczas wysyłania danych do klienta: %s"
+
+#, fuzzy, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "%s: usunięto skrypt: %s"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s%s: błąd podczas wysyłania danych do klienta: %s"
+
+#, fuzzy, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "%s: wyładowuję skrypt \"%s\""
+
+#, fuzzy
msgid "Support of tcl scripts"
msgstr "lista skryptów"
@@ -8777,9 +9110,6 @@ msgstr "Wtyczka"
msgid "Name"
msgstr "Nazwa"
-msgid "Description"
-msgstr "Opis"
-
msgid "Arguments"
msgstr "Argumenty"
@@ -8808,6 +9138,17 @@ msgid "Constants"
msgstr "Stałe"
#, fuzzy
+#~ msgid "%s: downloading \"%s\"..."
+#~ msgstr "%s: wyładowuję skrypt \"%s\""
+
+#~ msgid ""
+#~ "%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
+#~ "WeeChat was not built with libgcrypt support"
+#~ msgstr ""
+#~ "%s%s: nie można uwierzytelnić za pomocą SASL oraz mechanizmu DH-BLOWFISH, "
+#~ "ponieważ WeeChat został skompilowany bez wsparcia dla libgcrypt"
+
+#, fuzzy
#~ msgid "Regex modifier"
#~ msgstr "Domyślne rmodifiery:"
@@ -8841,9 +9182,6 @@ msgstr "Stałe"
#~ msgid "%s%s: sending data to client error %d: %d %s"
#~ msgstr "%s%s: błąd podczas wysyłania danych do klienta %d (%s)"
-#~ msgid "%s%s: error sending data to client: %s"
-#~ msgstr "%s%s: błąd podczas wysyłania danych do klienta: %s"
-
#~ msgid "display channel modes in \"buffer_name\" bar item"
#~ msgstr "wyświetl atrybuty kanału w elemencie paska \"buffer_name\""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index b72203d66..9ccef91cd 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.9-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: 2012-06-03 09:49+0200\n"
"Last-Translator: Sergio Durigan Junior <sergiosdj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6013,12 +6013,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr ""
#, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-
-#, c-format
msgid "%s%s: client capability, refused: %s"
msgstr ""
@@ -7646,66 +7640,6 @@ msgstr "%s%s: erro desconhecido ao carregar arquivo \"%s\""
msgid "%s%s: unable to initialize %s"
msgstr "%s%s: não foi possível inicializar %s"
-#, fuzzy
-msgid "Support of python scripts"
-msgstr "list de scripts"
-
-#, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s%s: não foi possível inicializar módulo do WeeChat"
-
-#, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "%s%s: não foi possível redirecionar saída padrão (stdout)"
-
-#, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s%s: não foi possível redirecionar saída de erro (stderr)"
-
-msgid "path to python 2.x interpreter"
-msgstr "diretório do interpretador python 2.x"
-
-#, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s%s: não foi possível executar interpretador global"
-
-#, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s%s: não foi possível obter estado do interpretador atual"
-
-#, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s%s: não foi possível liberar interpretador"
-
-#, fuzzy
-msgid "Support of ruby scripts"
-msgstr "list de scripts"
-
-#, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%s%s: stdout/stderr: %s%s"
-
-#, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "%s%s: não foi possível ler arquivo \"%s\""
-
-#, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "%s%s: erro na leitura do arquivo \"%s\""
-
-#, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr "%s%s: função \"weechat_init\" está faltando no arquivo \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr ""
-"%s%s: não foi possível avaliar função \"weechat_init\" no arquivo \"%s\""
-
-#, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s%s: não foi possível avaliar código interno Ruby do WeeChat"
-
msgid "list/load/unload scripts"
msgstr "listar/carregar/descarregar scripts"
@@ -7823,6 +7757,409 @@ msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s%s: argumentos inválidos para a função \"%s\" (script: %s)"
#, fuzzy
+msgid "Support of python scripts"
+msgstr "list de scripts"
+
+#, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s%s: não foi possível inicializar módulo do WeeChat"
+
+#, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "%s%s: não foi possível redirecionar saída padrão (stdout)"
+
+#, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s%s: não foi possível redirecionar saída de erro (stderr)"
+
+msgid "path to python 2.x interpreter"
+msgstr "diretório do interpretador python 2.x"
+
+#, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s%s: não foi possível executar interpretador global"
+
+#, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s%s: não foi possível obter estado do interpretador atual"
+
+#, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s%s: não foi possível liberar interpretador"
+
+#, fuzzy
+msgid "Support of ruby scripts"
+msgstr "list de scripts"
+
+#, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%s%s: stdout/stderr: %s%s"
+
+#, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "%s%s: não foi possível ler arquivo \"%s\""
+
+#, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "%s%s: erro na leitura do arquivo \"%s\""
+
+#, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr "%s%s: função \"weechat_init\" está faltando no arquivo \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr ""
+"%s%s: não foi possível avaliar função \"weechat_init\" no arquivo \"%s\""
+
+#, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s%s: não foi possível avaliar código interno Ruby do WeeChat"
+
+msgid "Scripts manager"
+msgstr ""
+
+#, fuzzy
+msgid "Scripts loaded:"
+msgstr "scripts %s carregados:"
+
+#, fuzzy, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "%s: descarregando script \"%s\""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "%s: descarregando script \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "%s: descarregando script \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s%s: script \"%s\" não carregado"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "%s: script \"%s\" descarregado"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s%s: script \"%s\" não encontrado"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s%s: script \"%s\" não carregado"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" held"
+msgstr "%s: script \"%s\" descarregado"
+
+#, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "%s: scripts descarregados"
+
+msgid "Script"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+msgid "Description"
+msgstr "Descrição"
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+#, fuzzy
+msgid "Date updated"
+msgstr "Barra \"%s\" atualizada"
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+#, fuzzy
+msgid "Min WeeChat"
+msgstr "quit WeeChat"
+
+#, fuzzy
+msgid "Max WeeChat"
+msgstr "quit WeeChat"
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
+msgstr ""
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+
+msgid "Scripts"
+msgstr ""
+
+#, fuzzy
+msgid "WeeChat scripts manager"
+msgstr "site do WeeChat"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+#, fuzzy
+msgid "list of scripts in repository"
+msgstr "list de scripts"
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+#, fuzzy
+msgid "color for status \"popular\" (\"*\")"
+msgstr "cor de texto para o tempo (barra de status)"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+#, fuzzy
+msgid "text color in script buffer"
+msgstr "cor do texto para nomes de buffer"
+
+#, fuzzy
+msgid "text color of dates in script buffer"
+msgstr "cor de texto para outros apelidos em buffers privados"
+
+#, fuzzy
+msgid "text color of delimiters in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of description in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of extension in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of script name in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of tags in script buffer"
+msgstr "cor do texto para nomes de buffer"
+
+#, fuzzy
+msgid "text color of version in script buffer"
+msgstr "cor de texto para outros apelidos em buffers privados"
+
+#, fuzzy
+msgid "text color of version loaded in script buffer"
+msgstr "cor de texto para outros apelidos em buffers privados"
+
+#, fuzzy
+msgid "background color in script buffer"
+msgstr "cor de fundo para conversa"
+
+#, fuzzy
+msgid "text color for selected line in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of dates for selected line in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of description for selected line in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of extension for selected line in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of script name for selected line in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of tags for selected line in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of version for selected line in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "text color of version loaded for selected line in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+#, fuzzy
+msgid "background color for selected line in script buffer"
+msgstr "cor do texto da linha do cliente selecionada"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+#, fuzzy
+msgid "URL for file with list of scripts"
+msgstr "list de scripts"
+
+#, fuzzy
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+"nome do script (pode começar ou terminar com \"*\" como um coringa) "
+"(opcional)"
+
+#, fuzzy
+msgid "scripts from repository"
+msgstr "list de scripts"
+
+#, fuzzy, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s%s: erro ao criar transferência"
+
+#, fuzzy, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "%s: script removido: %s"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s%s: erro na leitura do arquivo \"%s\""
+
+#, fuzzy, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "%s: descarregando script \"%s\""
+
+#, fuzzy
msgid "Support of tcl scripts"
msgstr "list de scripts"
@@ -8218,9 +8555,6 @@ msgstr "Plugin"
msgid "Name"
msgstr "Nome"
-msgid "Description"
-msgstr "Descrição"
-
msgid "Arguments"
msgstr "Argumentos"
@@ -8250,6 +8584,10 @@ msgid "Constants"
msgstr ""
#, fuzzy
+#~ msgid "%s: downloading \"%s\"..."
+#~ msgstr "%s: descarregando script \"%s\""
+
+#, fuzzy
#~ msgid "Regex modifier"
#~ msgstr "Rmodifiers padrões:"
diff --git a/po/ru.po b/po/ru.po
index 30bc1c85b..736633539 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.9-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: 2012-06-03 09:49+0200\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5890,14 +5890,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr ""
#, fuzzy, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-"%s невозможно соединиться с использованием SSL, так как WeeChat собран без "
-"поддержки GNUtls\n"
-
-#, fuzzy, c-format
msgid "%s%s: client capability, refused: %s"
msgstr "Не могу записать лог-файл \"%s\"\n"
@@ -7526,65 +7518,6 @@ msgid "%s%s: unable to initialize %s"
msgstr "%s не могу инициализировать plugin \"%s\"\n"
#, fuzzy
-msgid "Support of python scripts"
-msgstr "Список сокращений:\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to initialize WeeChat module"
-msgstr "%s не могу инициализировать plugin \"%s\"\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to redirect stdout"
-msgstr "Не могу записать лог-файл \"%s\"\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to redirect stderr"
-msgstr "%s не могу создать сервер\n"
-
-msgid "path to python 2.x interpreter"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "%s%s: unable to launch global interpreter"
-msgstr "%s не могу создать сервер\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to get current interpreter state"
-msgstr "%s не могу создать сервер\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to free interpreter"
-msgstr "%s не могу создать сервер\n"
-
-#, fuzzy
-msgid "Support of ruby scripts"
-msgstr "Список сокращений:\n"
-
-#, fuzzy, c-format
-msgid "%s%s: stdout/stderr: %s%s"
-msgstr "%sСервер: %s%s\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to read file \"%s\""
-msgstr "Не могу записать лог-файл \"%s\"\n"
-
-#, fuzzy, c-format
-msgid "%s%s: error while loading file \"%s\""
-msgstr "Не могу записать лог-файл \"%s\"\n"
-
-#, fuzzy, c-format
-msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
-msgstr "Не могу записать лог-файл \"%s\"\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
-msgstr "Не могу записать лог-файл \"%s\"\n"
-
-#, fuzzy, c-format
-msgid "%s%s: unable to eval WeeChat ruby internal code"
-msgstr "%s не могу создать сервер\n"
-
-#, fuzzy
msgid "list/load/unload scripts"
msgstr "перечислить/загрузить/выгрузить plugin'ы"
@@ -7697,6 +7630,406 @@ msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
msgstr "%s некорректные аргументы команды \"%s\"\n"
#, fuzzy
+msgid "Support of python scripts"
+msgstr "Список сокращений:\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to initialize WeeChat module"
+msgstr "%s не могу инициализировать plugin \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to redirect stdout"
+msgstr "Не могу записать лог-файл \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to redirect stderr"
+msgstr "%s не могу создать сервер\n"
+
+msgid "path to python 2.x interpreter"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: unable to launch global interpreter"
+msgstr "%s не могу создать сервер\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to get current interpreter state"
+msgstr "%s не могу создать сервер\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to free interpreter"
+msgstr "%s не могу создать сервер\n"
+
+#, fuzzy
+msgid "Support of ruby scripts"
+msgstr "Список сокращений:\n"
+
+#, fuzzy, c-format
+msgid "%s%s: stdout/stderr: %s%s"
+msgstr "%sСервер: %s%s\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to read file \"%s\""
+msgstr "Не могу записать лог-файл \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s%s: error while loading file \"%s\""
+msgstr "Не могу записать лог-файл \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s%s: function \"weechat_init\" is missing in file \"%s\""
+msgstr "Не могу записать лог-файл \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to eval function \"weechat_init\" in file \"%s\""
+msgstr "Не могу записать лог-файл \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s%s: unable to eval WeeChat ruby internal code"
+msgstr "%s не могу создать сервер\n"
+
+msgid "Scripts manager"
+msgstr ""
+
+#, fuzzy
+msgid "Scripts loaded:"
+msgstr "FIFO pipe закрыт\n"
+
+#, fuzzy, c-format
+msgid "%s: unknown language for script \"%s\""
+msgstr "сессия: загружаю сервер \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
+msgstr "сессия: загружаю сервер \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s: downloading script \"%s\"..."
+msgstr "сессия: загружаю сервер \"%s\"\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is not installed"
+msgstr "%s сервер \"%s\" не найден\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is held"
+msgstr "Plugin \"%s\" выгружен.\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not found"
+msgstr "%s сервер \"%s\" не найден\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" not held any more"
+msgstr "%s сервер \"%s\" не найден\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" held"
+msgstr "Plugin \"%s\" выгружен.\n"
+
+#, fuzzy, c-format
+msgid "%s: script \"%s\" is already installed and up-to-date"
+msgstr "%s сервер \"%s\" уже существует, не могу создать его!\n"
+
+#, fuzzy, c-format
+msgid "%s: all scripts are up-to-date"
+msgstr "Plugin \"%s\" выгружен.\n"
+
+msgid "Script"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+#, fuzzy
+msgid "Description"
+msgstr " . описание: %s\n"
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+#, fuzzy
+msgid "Date updated"
+msgstr "Сокращение \"%s\" => \"%s\" создано\n"
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+#, fuzzy
+msgid "Min WeeChat"
+msgstr "слоган WeeChat"
+
+#, fuzzy
+msgid "Max WeeChat"
+msgstr "слоган WeeChat"
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
+msgstr ""
+
+#, c-format
+msgid "alt+d=back to list"
+msgstr ""
+
+#, c-format
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
+msgstr ""
+
+msgid "Scripts"
+msgstr ""
+
+#, fuzzy
+msgid "WeeChat scripts manager"
+msgstr "слоган WeeChat"
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+#, fuzzy
+msgid "list of scripts in repository"
+msgstr "Список сокращений:\n"
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+#, fuzzy
+msgid "color for status \"popular\" (\"*\")"
+msgstr "цвет строки состояния"
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+#, fuzzy
+msgid "text color in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of dates in script buffer"
+msgstr "цвет ника собеседника в окне привата"
+
+#, fuzzy
+msgid "text color of delimiters in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of description in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of extension in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of script name in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of tags in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of version in script buffer"
+msgstr "цвет ника собеседника в окне привата"
+
+#, fuzzy
+msgid "text color of version loaded in script buffer"
+msgstr "цвет ника собеседника в окне привата"
+
+#, fuzzy
+msgid "background color in script buffer"
+msgstr "фон ников"
+
+#, fuzzy
+msgid "text color for selected line in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of dates for selected line in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of description for selected line in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of extension for selected line in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of script name for selected line in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of tags for selected line in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of version for selected line in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "text color of version loaded for selected line in script buffer"
+msgstr "цвет названия сервера"
+
+#, fuzzy
+msgid "background color for selected line in script buffer"
+msgstr "цвет названия сервера"
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+#, fuzzy
+msgid "URL for file with list of scripts"
+msgstr "Список сокращений:\n"
+
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+
+#, fuzzy
+msgid "scripts from repository"
+msgstr "Список сокращений:\n"
+
+#, fuzzy, c-format
+msgid "%s%s: error reading list of scripts"
+msgstr "%s ошибка при отправке данных IRC серверу\n"
+
+#, fuzzy, c-format
+msgid "%s: %d scripts for WeeChat %s"
+msgstr "не на канале"
+
+#, c-format
+msgid ""
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr "%s ошибка при отправке данных IRC серверу\n"
+
+#, fuzzy, c-format
+msgid "%s: downloading list of scripts..."
+msgstr "сессия: загружаю сервер \"%s\"\n"
+
+#, fuzzy
msgid "Support of tcl scripts"
msgstr "Список сокращений:\n"
@@ -8099,10 +8432,6 @@ msgid "Name"
msgstr ""
#, fuzzy
-msgid "Description"
-msgstr " . описание: %s\n"
-
-#, fuzzy
msgid "Arguments"
msgstr "адресат тип [аргументы]"
@@ -8133,6 +8462,18 @@ msgid "Constants"
msgstr ""
#, fuzzy
+#~ msgid "%s: downloading \"%s\"..."
+#~ msgstr "сессия: загружаю сервер \"%s\"\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
+#~ "WeeChat was not built with libgcrypt support"
+#~ msgstr ""
+#~ "%s невозможно соединиться с использованием SSL, так как WeeChat собран "
+#~ "без поддержки GNUtls\n"
+
+#, fuzzy
#~ msgid "Regex modifier"
#~ msgstr "Комбинации клавиш по умолчанию восстановлены\n"
@@ -8164,10 +8505,6 @@ msgstr ""
#~ msgstr "%s ошибка при отправке данных IRC серверу\n"
#, fuzzy
-#~ msgid "%s%s: error sending data to client: %s"
-#~ msgstr "%s ошибка при отправке данных IRC серверу\n"
-
-#, fuzzy
#~ msgid "%sError: name can not start with \"#\""
#~ msgstr "%s не могу создать файл \"%s\"\n"
diff --git a/po/srcfiles.cmake b/po/srcfiles.cmake
index 19bf394f9..a2e05661a 100644
--- a/po/srcfiles.cmake
+++ b/po/srcfiles.cmake
@@ -230,6 +230,12 @@ SET(WEECHAT_SOURCES
./src/plugins/perl/weechat-perl-api.h
./src/plugins/perl/weechat-perl.c
./src/plugins/perl/weechat-perl.h
+./src/plugins/plugin-script.c
+./src/plugins/plugin-script.h
+./src/plugins/plugin-script-api.c
+./src/plugins/plugin-script-api.h
+./src/plugins/plugin-script-callback.c
+./src/plugins/plugin-script-callback.h
./src/plugins/python/weechat-python-api.c
./src/plugins/python/weechat-python-api.h
./src/plugins/python/weechat-python.c
@@ -238,12 +244,22 @@ SET(WEECHAT_SOURCES
./src/plugins/ruby/weechat-ruby-api.h
./src/plugins/ruby/weechat-ruby.c
./src/plugins/ruby/weechat-ruby.h
-./src/plugins/plugin-script-api.c
-./src/plugins/plugin-script-api.h
-./src/plugins/plugin-script.c
-./src/plugins/plugin-script-callback.c
-./src/plugins/plugin-script-callback.h
-./src/plugins/plugin-script.h
+./src/plugins/script/script.c
+./src/plugins/script/script.h
+./src/plugins/script/script-action.c
+./src/plugins/script/script-action.h
+./src/plugins/script/script-buffer.c
+./src/plugins/script/script-buffer.h
+./src/plugins/script/script-command.c
+./src/plugins/script/script-command.h
+./src/plugins/script/script-completion.c
+./src/plugins/script/script-completion.h
+./src/plugins/script/script-config.c
+./src/plugins/script/script-config.h
+./src/plugins/script/script-info.c
+./src/plugins/script/script-info.h
+./src/plugins/script/script-repo.c
+./src/plugins/script/script-repo.h
./src/plugins/tcl/weechat-tcl-api.c
./src/plugins/tcl/weechat-tcl-api.h
./src/plugins/tcl/weechat-tcl.c
diff --git a/po/weechat.pot b/po/weechat.pot
index 5eb38173c..2dba5d6fa 100644
--- a/po/weechat.pot
+++ b/po/weechat.pot
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2012-08-02 22:48+0200\n"
+"POT-Creation-Date: 2012-08-14 18:26+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -5083,12 +5083,6 @@ msgid "%s%s: client capability, enabled: %s"
msgstr ""
#, c-format
-msgid ""
-"%s%s: cannot authenticate with SASL and mechanism DH-BLOWFISH because "
-"WeeChat was not built with libgcrypt support"
-msgstr ""
-
-#, c-format
msgid "%s%s: client capability, refused: %s"
msgstr ""
@@ -6602,6 +6596,101 @@ msgstr ""
msgid "%s%s: unable to initialize %s"
msgstr ""
+msgid "list/load/unload scripts"
+msgstr ""
+
+msgid ""
+"list|listfull [<name>] || load <filename> || autoload || reload|unload "
+"[<name>]"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts\n"
+"listfull: list loaded scripts (verbose)\n"
+" load: load a script\n"
+"autoload: load all scripts in \"autoload\" directory\n"
+" reload: reload a script (if no name given, unload all scripts, then load "
+"all scripts in \"autoload\" directory)\n"
+" unload: unload a script (if no name given, unload all scripts)\n"
+"filename: script (file) to load\n"
+" name: a script name (name used in call to \"register\" function)\n"
+"\n"
+"Without argument, this command lists all loaded scripts."
+msgstr ""
+
+msgid "list of scripts"
+msgstr ""
+
+msgid "script pointer (optional)"
+msgstr ""
+
+msgid "script name (can start or end with \"*\" as wildcard) (optional)"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s%s: warning, invalid pointer (\"%s\") for function \"%s\" (script: %s)"
+msgstr ""
+
+#, c-format
+msgid "%s: error loading script \"%s\" (bad name, spaces are forbidden)"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s%s: warning, license \"%s\" for script \"%s\" differs from plugin license "
+"(\"%s\")"
+msgstr ""
+
+#, c-format
+msgid "%s: error loading script \"%s\" (not enough memory)"
+msgstr ""
+
+#, c-format
+msgid "%s: script removed: %s"
+msgstr ""
+
+#, c-format
+msgid "%s%s: failed to remove script: %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s: script \"%s\" not found, nothing was removed"
+msgstr ""
+
+#, c-format
+msgid "%s%s: failed to move script %s to %s (%s)"
+msgstr ""
+
+#. TRANSLATORS: "%s" is language (for example "perl")
+#, c-format
+msgid "%s scripts loaded:"
+msgstr ""
+
+#, c-format
+msgid " file: %s"
+msgstr ""
+
+#, c-format
+msgid " written by \"%s\", license: %s"
+msgstr ""
+
+msgid " (none)"
+msgstr ""
+
+#, c-format
+msgid "%s: scripts unloaded"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s%s: unable to call function \"%s\", script is not initialized (script: %s)"
+msgstr ""
+
+#, c-format
+msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
+msgstr ""
+
msgid "Support of python scripts"
msgstr ""
@@ -6659,99 +6748,316 @@ msgstr ""
msgid "%s%s: unable to eval WeeChat ruby internal code"
msgstr ""
-msgid "list/load/unload scripts"
+msgid "Scripts manager"
msgstr ""
-msgid ""
-"list|listfull [<name>] || load <filename> || autoload || reload|unload "
-"[<name>]"
+msgid "Scripts loaded:"
msgstr ""
-msgid ""
-" list: list loaded scripts\n"
-"listfull: list loaded scripts (verbose)\n"
-" load: load a script\n"
-"autoload: load all scripts in \"autoload\" directory\n"
-" reload: reload a script (if no name given, unload all scripts, then load "
-"all scripts in \"autoload\" directory)\n"
-" unload: unload a script (if no name given, unload all scripts)\n"
-"filename: script (file) to load\n"
-" name: a script name (name used in call to \"register\" function)\n"
-"\n"
-"Without argument, this command lists all loaded scripts."
+#, c-format
+msgid "%s: unknown language for script \"%s\""
msgstr ""
-msgid "list of scripts"
+#, c-format
+msgid "%s%s: error downloading script \"%s\": %s"
msgstr ""
-msgid "script pointer (optional)"
+#, c-format
+msgid "%s: downloading script \"%s\"..."
msgstr ""
-msgid "script name (can start or end with \"*\" as wildcard) (optional)"
+#, c-format
+msgid "%s: script \"%s\" is not installed"
msgstr ""
#, c-format
-msgid ""
-"%s%s: warning, invalid pointer (\"%s\") for function \"%s\" (script: %s)"
+msgid "%s: script \"%s\" is held"
msgstr ""
#, c-format
-msgid "%s: error loading script \"%s\" (bad name, spaces are forbidden)"
+msgid "%s: script \"%s\" not found"
msgstr ""
#, c-format
-msgid ""
-"%s%s: warning, license \"%s\" for script \"%s\" differs from plugin license "
-"(\"%s\")"
+msgid "%s: script \"%s\" not held any more"
msgstr ""
#, c-format
-msgid "%s: error loading script \"%s\" (not enough memory)"
+msgid "%s: script \"%s\" held"
msgstr ""
#, c-format
-msgid "%s: script removed: %s"
+msgid "%s: script \"%s\" is already installed and up-to-date"
msgstr ""
#, c-format
-msgid "%s%s: failed to remove script: %s (%s)"
+msgid "%s: all scripts are up-to-date"
msgstr ""
-#, c-format
-msgid "%s: script \"%s\" not found, nothing was removed"
+msgid "Script"
msgstr ""
-#, c-format
-msgid "%s%s: failed to move script %s to %s (%s)"
+msgid "Version"
msgstr ""
-#. TRANSLATORS: "%s" is language (for example "perl")
-#, c-format
-msgid "%s scripts loaded:"
+msgid "Author"
+msgstr ""
+
+msgid "License"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Tags"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Date added"
+msgstr ""
+
+msgid "Date updated"
+msgstr ""
+
+msgid "URL"
+msgstr ""
+
+msgid "MD5"
+msgstr ""
+
+msgid "Requires"
+msgstr ""
+
+msgid "Min WeeChat"
+msgstr ""
+
+msgid "Max WeeChat"
+msgstr ""
+
+msgid "popular"
+msgstr ""
+
+msgid "installed"
+msgstr ""
+
+msgid "held"
+msgstr ""
+
+msgid "running"
+msgstr ""
+
+msgid "obsolete"
msgstr ""
#, c-format
-msgid " file: %s"
+msgid "alt+d=back to list"
msgstr ""
#, c-format
-msgid " written by \"%s\", license: %s"
+msgid ""
+"%d/%d scripts (filter: %s) | Sort: %s | alt+i=install r=remove l=load "
+"u=unload h=(un)hold d=show detail | Input: 'q'=close 'r'=refresh 's:x,"
+"y'=sort 'words'=filter '*'=reset filter"
msgstr ""
-msgid " (none)"
+msgid "Scripts"
+msgstr ""
+
+msgid "WeeChat scripts manager"
+msgstr ""
+
+msgid ""
+"list || show <script> || load|unload <script> [<script>...] || install|"
+"remove|hold <script> [<script>...] || upgrade || update"
+msgstr ""
+
+msgid ""
+" list: list loaded scripts (all languages)\n"
+" show: show detailed info about a script\n"
+" load: load script(s)\n"
+" unload: unload script(s)\n"
+" install: install/upgrade script(s)\n"
+" remove: remove script(s)\n"
+" hold: hold/unhold script(s) (a script held will not be upgraded any more "
+"and cannot be removed)\n"
+" upgrade: upgrade all installed scripts which are obsolete (new version "
+"available)\n"
+" update: update local scripts cache\n"
+"\n"
+"Without argument, this command opens a buffer with list of scripts.\n"
+"\n"
+"On script buffer, the possible status for each script are:\n"
+" * i H r N\n"
+" | | | | |\n"
+" | | | | obsolete (new version available)\n"
+" | | | running (loaded)\n"
+" | | held\n"
+" | installed\n"
+" popular script\n"
+"\n"
+"Keys on script buffer:\n"
+" alt+i install script\n"
+" alt+r remove script\n"
+" alt+l load script\n"
+" alt+u unload script\n"
+" alt+h (un)hold script\n"
+"\n"
+"Input allowed on script buffer:\n"
+" q close buffer\n"
+" r refresh buffer\n"
+" s:x,y sort buffer using keys x and y (see /help script.look.sort)\n"
+" s: reset sort (use default sort)\n"
+" word(s) filter scripts: search word(s) in scripts (description, "
+"tags, ...)\n"
+" * remove filter"
+msgstr ""
+
+msgid "list of scripts in repository"
+msgstr ""
+
+msgid "list of scripts installed (from repository)"
+msgstr ""
+
+msgid "files in script directories"
+msgstr ""
+
+msgid ""
+"format of columns displayed in script buffer: following column identifiers "
+"are replaced by their value: %a=author, %d=description, %D=date added, "
+"%e=extension, %l=language, %L=license, %n=name with extension, %N=name, "
+"%r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version "
+"loaded, %w=min_weechat, %W=max_weechat)"
+msgstr ""
+
+msgid ""
+"default sort keys for scripts: comma-separated list of identifiers: "
+"a=author, d=date added, e=extension, i=installed, l=language, n=name, "
+"o=obsolete, p=popularity, r=running, u=date updated; char \"-\" can be used "
+"before identifier to reverse order; example: \"i,u\": installed scripts "
+"first, sorted by update date"
+msgstr ""
+
+msgid "color for status \"popular\" (\"*\")"
+msgstr ""
+
+msgid "color for status \"installed\" (\"i\")"
+msgstr ""
+
+msgid "color for status \"held\" (\"H\")"
+msgstr ""
+
+msgid "color for status \"running\" (\"r\")"
+msgstr ""
+
+msgid "color for status \"obsolete\" (\"N\")"
+msgstr ""
+
+msgid "color for status \"unknown\" (\"?\")"
+msgstr ""
+
+msgid "text color in script buffer"
+msgstr ""
+
+msgid "text color of dates in script buffer"
+msgstr ""
+
+msgid "text color of delimiters in script buffer"
+msgstr ""
+
+msgid "text color of description in script buffer"
+msgstr ""
+
+msgid "text color of extension in script buffer"
+msgstr ""
+
+msgid "text color of script name in script buffer"
+msgstr ""
+
+msgid "text color of tags in script buffer"
+msgstr ""
+
+msgid "text color of version in script buffer"
+msgstr ""
+
+msgid "text color of version loaded in script buffer"
+msgstr ""
+
+msgid "background color in script buffer"
+msgstr ""
+
+msgid "text color for selected line in script buffer"
+msgstr ""
+
+msgid "text color of dates for selected line in script buffer"
+msgstr ""
+
+msgid "text color of description for selected line in script buffer"
+msgstr ""
+
+msgid "text color of extension for selected line in script buffer"
+msgstr ""
+
+msgid "text color of script name for selected line in script buffer"
+msgstr ""
+
+msgid "text color of tags for selected line in script buffer"
+msgstr ""
+
+msgid "text color of version for selected line in script buffer"
+msgstr ""
+
+msgid "text color of version loaded for selected line in script buffer"
+msgstr ""
+
+msgid "background color for selected line in script buffer"
+msgstr ""
+
+msgid ""
+"local cache expiration time, in minutes (-1 = never expires, 0 = always "
+"expire)"
+msgstr ""
+
+msgid "local cache directory for scripts"
+msgstr ""
+
+msgid ""
+"scripts to \"hold\": comma-separated list of scripts which will never been "
+"upgraded and can not be removed, for example: \"buffers.pl,iset.pl\""
+msgstr ""
+
+msgid "URL for file with list of scripts"
+msgstr ""
+
+msgid ""
+"script name with extension (can start or end with \"*\" as wildcard) "
+"(optional)"
+msgstr ""
+
+msgid "scripts from repository"
msgstr ""
#, c-format
-msgid "%s: scripts unloaded"
+msgid "%s%s: error reading list of scripts"
+msgstr ""
+
+#, c-format
+msgid "%s: %d scripts for WeeChat %s"
msgstr ""
#, c-format
msgid ""
-"%s%s: unable to call function \"%s\", script is not initialized (script: %s)"
+"%s%s: list of scripts is empty (repository file is broken, or download has "
+"failed)"
msgstr ""
#, c-format
-msgid "%s%s: wrong arguments for function \"%s\" (script: %s)"
+msgid "%s%s: error downloading list of scripts: %s"
+msgstr ""
+
+#, c-format
+msgid "%s: downloading list of scripts..."
msgstr ""
msgid "Support of tcl scripts"
@@ -7103,9 +7409,6 @@ msgstr ""
msgid "Name"
msgstr ""
-msgid "Description"
-msgstr ""
-
msgid "Arguments"
msgstr ""
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 503737b09..3e39cd328 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -90,13 +90,9 @@ IF(ENABLE_NLS)
ENDIF(ENABLE_NLS)
# Check for libgcrypt
-IF(ENABLE_GCRYPT)
- FIND_PACKAGE(Gcrypt)
- IF(GCRYPT_FOUND)
- ADD_DEFINITIONS(-DHAVE_GCRYPT)
- LIST(APPEND EXTRA_LIBS "${GCRYPT_LDFLAGS}")
- ENDIF(GCRYPT_FOUND)
-ENDIF(ENABLE_GCRYPT)
+FIND_PACKAGE(Gcrypt REQUIRED)
+ADD_DEFINITIONS(-DHAVE_GCRYPT)
+LIST(APPEND EXTRA_LIBS "${GCRYPT_LDFLAGS}")
# Check for GnuTLS
IF(ENABLE_GNUTLS)
@@ -112,12 +108,8 @@ IF(ENABLE_GNUTLS)
ENDIF(ENABLE_GNUTLS)
# Check for zlib
-IF(ENABLE_ZLIB)
- FIND_PACKAGE(ZLIB)
- IF(ZLIB_FOUND)
- ADD_DEFINITIONS(-DHAVE_ZLIB)
- ENDIF(ZLIB_FOUND)
-ENDIF(ENABLE_ZLIB)
+FIND_PACKAGE(ZLIB REQUIRED)
+ADD_DEFINITIONS(-DHAVE_ZLIB)
# Check for iconv
FIND_PACKAGE(Iconv)
diff --git a/src/core/wee-network.c b/src/core/wee-network.c
index 97d2d5e23..6b2480243 100644
--- a/src/core/wee-network.c
+++ b/src/core/wee-network.c
@@ -37,15 +37,12 @@
#include <arpa/inet.h>
#include <netdb.h>
#include <errno.h>
+#include <gcrypt.h>
#ifdef HAVE_GNUTLS
#include <gnutls/gnutls.h>
#endif
-#ifdef HAVE_GCRYPT
-#include <gcrypt.h>
-#endif
-
#include "weechat.h"
#include "wee-network.h"
#include "wee-hook.h"
@@ -121,14 +118,12 @@ network_init ()
}
#endif /* HAVE_GNUTLS */
-#ifdef HAVE_GCRYPT
if (!weechat_no_gcrypt)
{
gcry_check_version (GCRYPT_VERSION);
gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
}
-#endif /* HAVE_GCRYPT */
network_init_ok = 1;
}
diff --git a/src/gui/curses/gui-curses-key.c b/src/gui/curses/gui-curses-key.c
index 70591b160..31b91cb27 100644
--- a/src/gui/curses/gui-curses-key.c
+++ b/src/gui/curses/gui-curses-key.c
@@ -266,6 +266,8 @@ gui_key_default_bindings (int context)
BIND("@chat:button1-gesture-right-long", "/window ${_window_number};/input jump_last_buffer");
BIND("@chat:wheelup", "/window scroll_up -window ${_window_number}");
BIND("@chat:wheeldown", "/window scroll_down -window ${_window_number}");
+ BIND("@chat(script.scripts):wheelup", "/script up 5");
+ BIND("@chat(script.scripts):wheeldown", "/script down 5");
/* mouse events on nicklist */
BIND("@bar(nicklist):button1-gesture-up", "/bar scroll nicklist ${_window_number} -100%");
BIND("@bar(nicklist):button1-gesture-down", "/bar scroll nicklist ${_window_number} +100%");
diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt
index 7e3b84bf4..cb5d705b0 100644
--- a/src/plugins/CMakeLists.txt
+++ b/src/plugins/CMakeLists.txt
@@ -82,6 +82,10 @@ IF(ENABLE_RMODIFIER)
ADD_SUBDIRECTORY( rmodifier )
ENDIF(ENABLE_RMODIFIER)
+IF(ENABLE_SCRIPT)
+ ADD_SUBDIRECTORY( script )
+ENDIF(ENABLE_SCRIPT)
+
IF(ENABLE_XFER)
ADD_SUBDIRECTORY( xfer )
ENDIF(ENABLE_XFER)
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index 977b657e2..aa10d4aaa 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -75,6 +75,10 @@ if PLUGIN_RMODIFIER
rmodifier_dir = rmodifier
endif
+if PLUGIN_SCRIPT
+script_dir = script
+endif
+
if PLUGIN_XFER
xfer_dir = xfer
endif
@@ -104,7 +108,7 @@ guile_dir = guile
endif
SUBDIRS = . $(alias_dir) $(aspell_dir) $(charset_dir) $(demo_dir) $(fifo_dir) \
- $(irc_dir) $(logger_dir) $(relay_dir) $(rmodifier_dir) \
+ $(irc_dir) $(logger_dir) $(relay_dir) $(rmodifier_dir) $(script_dir) \
$(xfer_dir) $(perl_dir) $(python_dir) $(ruby_dir) $(lua_dir) \
$(tcl_dir) $(guile_dir)
diff --git a/src/plugins/irc/CMakeLists.txt b/src/plugins/irc/CMakeLists.txt
index 0601cae7b..d38c14244 100644
--- a/src/plugins/irc/CMakeLists.txt
+++ b/src/plugins/irc/CMakeLists.txt
@@ -52,9 +52,7 @@ IF(GNUTLS_FOUND)
LIST(APPEND LINK_LIBS ${GNUTLS_LIBRARY})
ENDIF(GNUTLS_FOUND)
-IF(GCRYPT_FOUND)
- LIST(APPEND LINK_LIBS gcrypt)
-ENDIF(GCRYPT_FOUND)
+LIST(APPEND LINK_LIBS gcrypt)
TARGET_LINK_LIBRARIES(irc ${LINK_LIBS})
diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c
index e7c4d7f77..d8e156984 100644
--- a/src/plugins/irc/irc-protocol.c
+++ b/src/plugins/irc/irc-protocol.c
@@ -331,19 +331,8 @@ IRC_PROTOCOL_CALLBACK(cap)
IRC_SERVER_OPTION_SASL_MECHANISM))
{
case IRC_SASL_MECHANISM_DH_BLOWFISH:
-#ifdef HAVE_GCRYPT
irc_server_sendf (server, 0, NULL,
"AUTHENTICATE DH-BLOWFISH");
-#else
- weechat_printf (server->buffer,
- _("%s%s: cannot authenticate with SASL "
- "and mechanism DH-BLOWFISH because "
- "WeeChat was not built with "
- "libgcrypt support"),
- weechat_prefix ("error"),
- IRC_PLUGIN_NAME);
- irc_server_sendf (server, 0, NULL, "CAP END");
-#endif
break;
case IRC_SASL_MECHANISM_EXTERNAL:
irc_server_sendf (server, 0, NULL,
diff --git a/src/plugins/irc/irc-sasl.c b/src/plugins/irc/irc-sasl.c
index 0231183a6..7e5057ade 100644
--- a/src/plugins/irc/irc-sasl.c
+++ b/src/plugins/irc/irc-sasl.c
@@ -26,10 +26,7 @@
#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
-
-#ifdef HAVE_GCRYPT
#include <gcrypt.h>
-#endif
#include "../weechat-plugin.h"
#include "irc.h"
@@ -91,7 +88,6 @@ irc_sasl_mechanism_dh_blowfish (const char *data_base64,
const char *sasl_username,
const char *sasl_password)
{
-#ifdef HAVE_GCRYPT
char *data, *answer, *ptr_answer, *answer_base64;
unsigned char *ptr_data, *secret_bin, *public_bin;
unsigned char *password_clear, *password_crypted;
@@ -245,12 +241,4 @@ end:
gcry_mpi_release (secret_mpi);
return answer_base64;
-#else
- /* make C compiler happy */
- (void) data_base64;
- (void) sasl_username;
- (void) sasl_password;
-
- return NULL;
-#endif
}
diff --git a/src/plugins/relay/CMakeLists.txt b/src/plugins/relay/CMakeLists.txt
index cf02a5e8e..bdd827632 100644
--- a/src/plugins/relay/CMakeLists.txt
+++ b/src/plugins/relay/CMakeLists.txt
@@ -37,9 +37,7 @@ SET_TARGET_PROPERTIES(relay PROPERTIES PREFIX "")
SET (LINK_LIBS)
-IF(ZLIB_FOUND)
- LIST(APPEND LINK_LIBS ${ZLIB_LIBRARY})
-ENDIF(ZLIB_FOUND)
+LIST(APPEND LINK_LIBS ${ZLIB_LIBRARY})
IF(GNUTLS_FOUND)
INCLUDE_DIRECTORIES(${GNUTLS_INCLUDE_PATH})
diff --git a/src/plugins/relay/weechat/relay-weechat-msg.c b/src/plugins/relay/weechat/relay-weechat-msg.c
index 2a5f785ea..91c05c30f 100644
--- a/src/plugins/relay/weechat/relay-weechat-msg.c
+++ b/src/plugins/relay/weechat/relay-weechat-msg.c
@@ -30,10 +30,7 @@
#include <sys/time.h>
#include <errno.h>
#include <arpa/inet.h>
-
-#ifdef HAVE_ZLIB
#include <zlib.h>
-#endif
#include "../../weechat-plugin.h"
#include "../relay.h"
@@ -964,7 +961,6 @@ relay_weechat_msg_send (struct t_relay_client *client,
{
uint32_t size32;
char compression;
-#ifdef HAVE_ZLIB
int rc;
Bytef *dest;
uLongf dest_size;
@@ -1009,7 +1005,8 @@ relay_weechat_msg_send (struct t_relay_client *client,
free (dest);
}
}
-#endif
+
+ /* compression with zlib failed (or not asked), send uncompressed message */
/* set size and compression flag */
size32 = htonl ((uint32_t)msg->data_size);
diff --git a/src/plugins/relay/weechat/relay-weechat.c b/src/plugins/relay/weechat/relay-weechat.c
index c82323ecf..5728b8055 100644
--- a/src/plugins/relay/weechat/relay-weechat.c
+++ b/src/plugins/relay/weechat/relay-weechat.c
@@ -201,11 +201,7 @@ relay_weechat_alloc (struct t_relay_client *client)
if (client->protocol_data)
{
RELAY_WEECHAT_DATA(client, password_ok) = (password && password[0]) ? 0 : 1;
-#ifdef HAVE_ZLIB
RELAY_WEECHAT_DATA(client, compression) = 1;
-#else
- RELAY_WEECHAT_DATA(client, compression) = 0;
-#endif
RELAY_WEECHAT_DATA(client, buffers_sync) =
weechat_hashtable_new (16,
WEECHAT_HASHTABLE_STRING,
diff --git a/src/plugins/script/CMakeLists.txt b/src/plugins/script/CMakeLists.txt
new file mode 100644
index 000000000..e1d8b5570
--- /dev/null
+++ b/src/plugins/script/CMakeLists.txt
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+#
+# This file is part of WeeChat, the extensible chat client.
+#
+# WeeChat 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.
+#
+# WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+#
+
+ADD_LIBRARY(script MODULE
+script.c script.h
+script-action.c script-action.h
+script-buffer.c script-buffer.h
+script-command.c script-command.h
+script-completion.c script-completion.h
+script-config.c script-config.h
+script-info.c script-info.h
+script-repo.c script-repo.h)
+SET_TARGET_PROPERTIES(script PROPERTIES PREFIX "")
+
+SET (LINK_LIBS)
+
+IF(ZLIB_FOUND)
+ LIST(APPEND LINK_LIBS ${ZLIB_LIBRARY})
+ENDIF(ZLIB_FOUND)
+
+IF(GCRYPT_FOUND)
+ LIST(APPEND LINK_LIBS gcrypt)
+ENDIF(GCRYPT_FOUND)
+
+TARGET_LINK_LIBRARIES(script ${LINK_LIBS})
+
+INSTALL(TARGETS script LIBRARY DESTINATION ${LIBDIR}/plugins)
diff --git a/src/plugins/script/Makefile.am b/src/plugins/script/Makefile.am
new file mode 100644
index 000000000..0f07f3dfe
--- /dev/null
+++ b/src/plugins/script/Makefile.am
@@ -0,0 +1,46 @@
+#
+# Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+#
+# This file is part of WeeChat, the extensible chat client.
+#
+# WeeChat 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.
+#
+# WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+#
+
+INCLUDES = -DLOCALEDIR=\"$(datadir)/locale\" $(ZLIB_CFLAGS) $(GCRYPT_CFLAGS)
+
+libdir = ${weechat_libdir}/plugins
+
+lib_LTLIBRARIES = script.la
+
+script_la_SOURCES = script.c \
+ script.h \
+ script-action.c \
+ script-action.h \
+ script-buffer.c \
+ script-buffer.h \
+ script-command.c \
+ script-command.h \
+ script-completion.c \
+ script-completion.h \
+ script-config.c \
+ script-config.h \
+ script-info.c \
+ script-info.h \
+ script-repo.c \
+ script-repo.h
+
+script_la_LDFLAGS = -module
+script_la_LIBADD = $(SCRIPT_LFLAGS) $(ZLIB_LFLAGS) $(GCRYPT_LFLAGS)
+
+EXTRA_DIST = CMakeLists.txt
diff --git a/src/plugins/script/script-action.c b/src/plugins/script/script-action.c
new file mode 100644
index 000000000..aabb8e504
--- /dev/null
+++ b/src/plugins/script/script-action.c
@@ -0,0 +1,710 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * script-action.c: actions on scripts (load/unload, install/remove, hold, ...)
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <libgen.h>
+
+#include "../weechat-plugin.h"
+#include "script.h"
+#include "script-action.h"
+#include "script-buffer.h"
+#include "script-config.h"
+#include "script-repo.h"
+
+
+char *script_actions = NULL;
+
+
+void script_action_install ();
+
+
+/*
+ * script_action_list: list loaded scripts (all languages)
+ */
+
+void
+script_action_list ()
+{
+ int i, scripts_loaded;
+ char hdata_name[128];
+ const char *ptr_name;
+ struct t_hdata *hdata;
+ void *ptr_script;
+
+ weechat_printf (NULL, "");
+ weechat_printf (NULL, _("Scripts loaded:"));
+
+ scripts_loaded = 0;
+
+ for (i = 0; script_language[i]; i++)
+ {
+ snprintf (hdata_name, sizeof (hdata_name),
+ "%s_script", script_language[i]);
+ hdata = weechat_hdata_get (hdata_name);
+ ptr_script = weechat_hdata_get_list (hdata, "scripts");
+ while (ptr_script)
+ {
+ ptr_name = weechat_hdata_string (hdata, ptr_script, "name");
+ weechat_printf (NULL, " %s %s%s%s.%s %s%s %s(%s%s%s)",
+ script_repo_get_status_for_display (script_repo_search_by_name (ptr_name),
+ "*?HN", 0),
+ weechat_color (weechat_config_string (script_config_color_text_name)),
+ ptr_name,
+ weechat_color (weechat_config_string (script_config_color_text_extension)),
+ script_extension[i],
+ weechat_color (weechat_config_string (script_config_color_text_version)),
+ weechat_hdata_string (hdata, ptr_script, "version"),
+ weechat_color ("chat_delimiters"),
+ weechat_color (weechat_config_string (script_config_color_text_description)),
+ weechat_hdata_string (hdata, ptr_script, "description"),
+ weechat_color ("chat_delimiters"));
+ scripts_loaded++;
+ ptr_script = weechat_hdata_move (hdata, ptr_script, 1);
+ }
+ }
+
+ if (scripts_loaded == 0)
+ {
+ weechat_printf (NULL, _(" (none)"));
+ }
+}
+
+/*
+ * script_action_load: load a script
+ */
+
+void
+script_action_load (const char *name)
+{
+ char *pos, str_command[1024];
+ int language;
+
+ language = -1;
+ pos = strrchr (name, '.');
+ if (pos)
+ language = script_language_search_by_extension (pos + 1);
+ if (language < 0)
+ {
+ weechat_printf (NULL,
+ _("%s: unknown language for script \"%s\""),
+ SCRIPT_PLUGIN_NAME, name);
+ return;
+ }
+
+ /* execute command (for example: "/perl load iset.pl") */
+ snprintf (str_command, sizeof (str_command),
+ "/%s load %s",
+ script_language[language],
+ name);
+ weechat_command (NULL, str_command);
+}
+
+/*
+ * script_action_unload: unload a script
+ */
+
+void
+script_action_unload (const char *name)
+{
+ char *pos, hdata_name[128], *filename, *ptr_base_name, str_command[1024];
+ const char *ptr_filename, *ptr_registered_name;
+ int language, found, i;
+ struct t_hdata *hdata;
+ void *ptr_script;
+
+ language = -1;
+ pos = strrchr (name, '.');
+ if (pos)
+ {
+ /* unload script by using name + extension (example: "iset.pl") */
+ language = script_language_search_by_extension (pos + 1);
+ if (language < 0)
+ {
+ weechat_printf (NULL,
+ _("%s: unknown language for script \"%s\""),
+ SCRIPT_PLUGIN_NAME, name);
+ return;
+ }
+ /*
+ * search registered name of script using name with extension,
+ * for example with "iset.pl" we should find "iset"
+ */
+ snprintf (hdata_name, sizeof (hdata_name),
+ "%s_script", script_language[language]);
+ hdata = weechat_hdata_get (hdata_name);
+ ptr_script = weechat_hdata_get_list (hdata, "scripts");
+ while (ptr_script)
+ {
+ found = 0;
+ ptr_filename = weechat_hdata_string (hdata, ptr_script, "filename");
+ if (ptr_filename)
+ {
+ filename = strdup (ptr_filename);
+ if (filename)
+ {
+ ptr_base_name = basename (filename);
+ if (strcmp (ptr_base_name, name) == 0)
+ found = 1;
+ free (filename);
+ }
+ }
+ if (found)
+ {
+ ptr_registered_name = weechat_hdata_string (hdata, ptr_script,
+ "name");
+ if (ptr_registered_name)
+ {
+ snprintf (str_command, sizeof (str_command),
+ "/%s unload %s",
+ script_language[language],
+ ptr_registered_name);
+ weechat_command (NULL, str_command);
+ }
+ return;
+ }
+ ptr_script = weechat_hdata_move (hdata, ptr_script, 1);
+ }
+ }
+ else
+ {
+ /* unload script by using name (example: "iset") */
+ for (i = 0; script_language[i]; i++)
+ {
+ snprintf (hdata_name, sizeof (hdata_name),
+ "%s_script", script_language[i]);
+ hdata = weechat_hdata_get (hdata_name);
+ ptr_script = weechat_hdata_get_list (hdata, "scripts");
+ while (ptr_script)
+ {
+ ptr_registered_name = weechat_hdata_string (hdata, ptr_script,
+ "name");
+ if (strcmp (ptr_registered_name, name) == 0)
+ {
+ snprintf (str_command, sizeof (str_command),
+ "/%s unload %s",
+ script_language[i],
+ name);
+ weechat_command (NULL, str_command);
+ return;
+ }
+ ptr_script = weechat_hdata_move (hdata, ptr_script, 1);
+ }
+ }
+ }
+}
+
+/*
+ * script_action_installnext_timer_cb: callback called to install next script
+ */
+
+int
+script_action_installnext_timer_cb (void *data, int remaining_calls)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) remaining_calls;
+
+ script_action_install ();
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_action_install_process_cb: callback called when script is downloaded
+ */
+
+int
+script_action_install_process_cb (void *data, const char *command,
+ int return_code, const char *out,
+ const char *err)
+{
+ char *pos, *filename, str_signal[256];
+ struct t_repo_script *ptr_script;
+
+ /* make C compiler happy */
+ (void) data;
+
+ if (return_code >= 0)
+ {
+ pos = strrchr (command, '/');
+
+ if ((err && err[0]) || (out && (strncmp (out, "error:", 6) == 0)))
+ {
+ weechat_printf (NULL,
+ _("%s%s: error downloading script \"%s\": %s"),
+ weechat_prefix ("error"),
+ SCRIPT_PLUGIN_NAME,
+ (pos) ? pos + 1 : "?",
+ (err && err[0]) ? err : out + 6);
+ return WEECHAT_RC_OK;
+ }
+
+ if (pos)
+ {
+ ptr_script = script_repo_search_by_name_ext (pos + 1);
+ if (ptr_script)
+ {
+ filename = script_config_get_script_download_filename (ptr_script);
+ if (filename)
+ {
+ snprintf (str_signal, sizeof (str_signal),
+ "%s_script_install",
+ script_language[ptr_script->language]);
+ weechat_hook_signal_send (str_signal,
+ WEECHAT_HOOK_SIGNAL_STRING,
+ filename);
+ free (filename);
+ }
+
+ /* schedule install of next script */
+ weechat_hook_timer (10, 0, 1,
+ &script_action_installnext_timer_cb, NULL);
+ }
+ }
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_action_install: install script(s) marked for install
+ */
+
+void
+script_action_install ()
+{
+ struct t_repo_script *ptr_script, *ptr_script_to_install;
+ char *filename, *url;
+ int length;
+ struct t_hashtable *options;
+
+ ptr_script_to_install = NULL;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (ptr_script->install_order > 0)
+ {
+ if (ptr_script->install_order == 1)
+ ptr_script_to_install = ptr_script;
+ ptr_script->install_order--;
+ }
+ }
+
+ if (ptr_script_to_install)
+ {
+ filename = script_config_get_script_download_filename (ptr_script_to_install);
+ if (filename)
+ {
+ options = weechat_hashtable_new (8,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_STRING,
+ NULL,
+ NULL);
+ if (options)
+ {
+ length = 4 + strlen (ptr_script_to_install->url) + 1;
+ url = malloc (length);
+ if (url)
+ {
+ weechat_printf (NULL,
+ _("%s: downloading script \"%s\"..."),
+ SCRIPT_PLUGIN_NAME,
+ ptr_script_to_install->name_with_extension);
+
+ snprintf (url, length, "url:%s",
+ ptr_script_to_install->url);
+ weechat_hashtable_set (options, "file_out", filename);
+ weechat_hook_process_hashtable (url, options, 30000,
+ &script_action_install_process_cb,
+ NULL);
+ free (url);
+ }
+ weechat_hashtable_free (options);
+ }
+ free (filename);
+ }
+ }
+}
+
+/*
+ * script_action_remove: remove a script
+ */
+
+void
+script_action_remove (const char *name)
+{
+ struct t_repo_script *ptr_script;
+ char str_signal[256];
+
+ ptr_script = script_repo_search_by_name_ext (name);
+ if (ptr_script)
+ {
+ if (!(ptr_script->status & SCRIPT_STATUS_INSTALLED))
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" is not installed"),
+ SCRIPT_PLUGIN_NAME, name);
+ }
+ else if (ptr_script->status & SCRIPT_STATUS_HELD)
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" is held"),
+ SCRIPT_PLUGIN_NAME, name);
+ }
+ else
+ {
+ snprintf (str_signal, sizeof (str_signal),
+ "%s_script_remove",
+ script_language[ptr_script->language]);
+ weechat_hook_signal_send (str_signal,
+ WEECHAT_HOOK_SIGNAL_STRING,
+ ptr_script->name_with_extension);
+ }
+ }
+ else
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" not found"),
+ SCRIPT_PLUGIN_NAME, name);
+ }
+}
+
+/*
+ * script_action_hold: (un)hold a script
+ * return 1 if ok, 0 if error
+ */
+
+int
+script_action_hold (const char *name, int quiet)
+{
+ struct t_repo_script *ptr_script;
+
+ ptr_script = script_repo_search_by_name_ext (name);
+ if (ptr_script)
+ {
+ if (ptr_script->status & SCRIPT_STATUS_HELD)
+ {
+ script_config_unhold (ptr_script->name_with_extension);
+ if (!quiet)
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" not "
+ "held any more"),
+ SCRIPT_PLUGIN_NAME, name);
+ }
+ }
+ else
+ {
+ script_config_hold (ptr_script->name_with_extension);
+ if (!quiet)
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" held"),
+ SCRIPT_PLUGIN_NAME, name);
+ }
+ }
+ script_repo_update_status (ptr_script);
+ return 1;
+ }
+ else
+ {
+ if (!quiet)
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" not found"),
+ SCRIPT_PLUGIN_NAME, name);
+ }
+ }
+
+ return 0;
+}
+
+/*
+ * script_action_show: show detailed info on a script
+ */
+
+void
+script_action_show (const char *name, int quiet)
+{
+ struct t_repo_script *ptr_script;
+
+ if (name)
+ {
+ ptr_script = script_repo_search_by_name_ext (name);
+ if (ptr_script)
+ {
+ script_buffer_show_detail_script (ptr_script);
+ }
+ else
+ {
+ if (!quiet)
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" not found"),
+ SCRIPT_PLUGIN_NAME, name);
+ }
+ }
+ }
+ else
+ script_buffer_show_detail_script (NULL);
+}
+
+/*
+ * script_action_run: run planned actions
+ * return 1 if an action was executed, otherwise 0
+ */
+
+int
+script_action_run ()
+{
+ char **actions, **argv, **argv_eol, *ptr_action;
+ int num_actions, argc, i, j, quiet, script_found;
+ struct t_repo_script *ptr_script;
+
+ if (!script_actions)
+ return 0;
+
+ actions = weechat_string_split (script_actions, "\n", 0, 0, &num_actions);
+ if (actions)
+ {
+ for (i = 0; i < num_actions; i++)
+ {
+ quiet = 0;
+ ptr_action = actions[i];
+ if (ptr_action[0] == '-')
+ {
+ /*
+ * if action starts with options (like "-q"),
+ * read and skip them
+ */
+ ptr_action++;
+ while (ptr_action[0] && (ptr_action[0] != ' '))
+ {
+ switch (ptr_action[0])
+ {
+ case 'q': /* quiet */
+ quiet = 1;
+ break;
+ }
+ ptr_action++;
+ }
+ while (ptr_action[0] == ' ')
+ {
+ ptr_action++;
+ }
+ }
+ argv = weechat_string_split (ptr_action, " ", 0, 0, &argc);
+ argv_eol = weechat_string_split (ptr_action, " ", 1, 0, &argc);
+ if (argv && argv_eol)
+ {
+ if (weechat_strcasecmp (argv[0], "buffer") == 0)
+ {
+ /* open buffer with list of scripts */
+ if (!script_buffer)
+ {
+ script_buffer_open ();
+ script_buffer_refresh (1);
+ }
+ weechat_buffer_set (script_buffer, "display", "1");
+ }
+ else if (weechat_strcasecmp (argv[0], "list") == 0)
+ {
+ script_action_list ();
+ }
+ else if (weechat_strcasecmp (argv[0], "load") == 0)
+ {
+ for (j = 1; j < argc; j++)
+ {
+ script_action_load (argv[j]);
+ }
+ }
+ else if (weechat_strcasecmp (argv[0], "unload") == 0)
+ {
+ for (j = 1; j < argc; j++)
+ {
+ script_action_unload (argv[j]);
+ }
+ }
+ else if (weechat_strcasecmp (argv[0], "install") == 0)
+ {
+ script_found = 0;
+ for (j = 1; j < argc; j++)
+ {
+ ptr_script = script_repo_search_by_name_ext (argv[j]);
+ if (ptr_script)
+ {
+ if (ptr_script->status & SCRIPT_STATUS_HELD)
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" is held"),
+ SCRIPT_PLUGIN_NAME, argv[j]);
+ }
+ else if ((ptr_script->status & SCRIPT_STATUS_INSTALLED)
+ && !(ptr_script->status & SCRIPT_STATUS_NEW_VERSION))
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" is already "
+ "installed and up-to-date"),
+ SCRIPT_PLUGIN_NAME, argv[j]);
+ }
+ else
+ {
+ script_found++;
+ ptr_script->install_order = script_found;
+ }
+ }
+ else
+ {
+ weechat_printf (NULL,
+ _("%s: script \"%s\" not found"),
+ SCRIPT_PLUGIN_NAME, argv[j]);
+ }
+ }
+ if (script_found)
+ script_action_install ();
+ }
+ else if (weechat_strcasecmp (argv[0], "remove") == 0)
+ {
+ for (j = 1; j < argc; j++)
+ {
+ script_action_remove (argv[j]);
+ }
+ }
+ else if (weechat_strcasecmp (argv[0], "hold") == 0)
+ {
+ script_found = 0;
+ for (j = 1; j < argc; j++)
+ {
+ if (script_action_hold (argv[j], quiet))
+ script_found = 1;
+ }
+ if (script_found)
+ script_buffer_refresh (0);
+ }
+ else if (weechat_strcasecmp (argv[0], "show") == 0)
+ {
+ if (!script_buffer)
+ script_buffer_open ();
+ script_action_show ((argc >= 2) ? argv[1] : NULL,
+ quiet);
+ weechat_buffer_set (script_buffer, "display", "1");
+ }
+ else if (weechat_strcasecmp (argv[0], "upgrade") == 0)
+ {
+ script_found = 0;
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ /*
+ * if script is intalled, with new version available,
+ * and not held, then upgrade it
+ */
+ if ((ptr_script->status & SCRIPT_STATUS_INSTALLED)
+ && (ptr_script->status & SCRIPT_STATUS_NEW_VERSION)
+ && !(ptr_script->status & SCRIPT_STATUS_HELD))
+ {
+ script_found++;
+ ptr_script->install_order = script_found;
+ }
+ }
+ if (script_found)
+ script_action_install ();
+ else
+ {
+ weechat_printf (NULL,
+ _("%s: all scripts are up-to-date"),
+ SCRIPT_PLUGIN_NAME);
+ }
+ }
+ }
+ if (argv)
+ weechat_string_free_split (argv);
+ if (argv_eol)
+ weechat_string_free_split (argv_eol);
+ }
+ weechat_string_free_split (actions);
+ }
+
+ free (script_actions);
+ script_actions = NULL;
+
+ return 1;
+}
+
+
+/*
+ * script_action_add: add an action to list of actions
+ */
+
+void
+script_action_add (const char *action)
+{
+ char *new_actions;
+
+ if (!action)
+ return;
+
+ if (script_actions)
+ {
+ new_actions = realloc (script_actions,
+ strlen (script_actions) + 1 + strlen (action) + 1);
+ if (!new_actions)
+ return;
+ script_actions = new_actions;
+ strcat (script_actions, "\n");
+ strcat (script_actions, action);
+ }
+ else
+ {
+ script_actions = strdup (action);
+ }
+}
+
+/*
+ * script_action_schedule: schedule action
+ * if "need_repository" is 1, then the action will be
+ * executed only when the repository file is up-to-date
+ */
+
+void
+script_action_schedule (const char *action, int need_repository, int quiet)
+{
+ script_action_add (action);
+
+ if (need_repository)
+ {
+ if (script_repo_file_is_uptodate ())
+ {
+ if (!repo_scripts)
+ script_repo_file_read (quiet);
+ script_action_run ();
+ }
+ else
+ script_repo_file_update (quiet);
+ }
+ else
+ script_action_run ();
+}
diff --git a/src/plugins/script/script-action.h b/src/plugins/script/script-action.h
new file mode 100644
index 000000000..42af8c639
--- /dev/null
+++ b/src/plugins/script/script-action.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __WEECHAT_SCRIPT_ACTION_H
+#define __WEECHAT_SCRIPT_ACTION_H 1
+
+extern char *script_actions;
+
+extern int script_action_run ();
+extern void script_action_schedule (const char *action, int need_repository,
+ int quiet);
+
+#endif /* __WEECHAT_SCRIPT_ACTION_H */
diff --git a/src/plugins/script/script-buffer.c b/src/plugins/script/script-buffer.c
new file mode 100644
index 000000000..bf040010d
--- /dev/null
+++ b/src/plugins/script/script-buffer.c
@@ -0,0 +1,797 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * script-buffer.c: display scripts on script buffer
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#include "../weechat-plugin.h"
+#include "script.h"
+#include "script-buffer.h"
+#include "script-config.h"
+#include "script-repo.h"
+
+
+struct t_gui_buffer *script_buffer = NULL;
+int script_buffer_selected_line = 0;
+struct t_repo_script *script_buffer_detail_script = NULL;
+
+
+/*
+ * script_buffer_display_line_script: display a line with script
+ */
+
+void
+script_buffer_display_line_script (int line, struct t_repo_script *script)
+{
+ char str_line[16384], str_item[1024], str_color_name[256], str_color[32];
+ char str_format[256], str_date[64], str_key[2], utf_char[16], *tags;
+ const char *columns, *ptr_col;
+ int char_size, *ptr_max_length, max_length, num_spaces, unknown;
+ struct tm *tm;
+
+ snprintf (str_color_name, sizeof (str_color_name),
+ "%s,%s",
+ (line == script_buffer_selected_line) ?
+ weechat_config_string (script_config_color_text_selected) :
+ weechat_config_string (script_config_color_text),
+ (line == script_buffer_selected_line) ?
+ weechat_config_string (script_config_color_text_bg_selected) :
+ weechat_config_string (script_config_color_text_bg));
+ snprintf (str_color, sizeof (str_color),
+ "%s", weechat_color (str_color_name));
+
+ columns = weechat_config_string (script_config_look_columns);
+ ptr_col = columns;
+
+ str_line[0] = '\0';
+ while (ptr_col[0])
+ {
+ unknown = 0;
+ str_item[0] = '\0';
+ num_spaces = 0;
+ char_size = weechat_utf8_char_size (ptr_col);
+ memcpy (utf_char, ptr_col, char_size);
+ utf_char[char_size] = '\0';
+ if (utf_char[0] == '%')
+ {
+ ptr_col += char_size;
+ char_size = weechat_utf8_char_size (ptr_col);
+ memcpy (utf_char, ptr_col, char_size);
+ utf_char[char_size] = '\0';
+
+ str_key[0] = ptr_col[0];
+ str_key[1] = '\0';
+ ptr_max_length = weechat_hashtable_get (script_repo_max_length_field,
+ str_key);
+ max_length = (ptr_max_length) ? *ptr_max_length : 0;
+ num_spaces = max_length;
+
+ switch (utf_char[0])
+ {
+ case 'a': /* author */
+ if (script->author)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->author);
+ snprintf (str_item, sizeof (str_item),
+ "%s", script->author);
+ }
+ break;
+ case 'd': /* description */
+ if (script->description)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->description);
+ snprintf (str_item, sizeof (str_item),
+ "%s%s",
+ weechat_color ((line == script_buffer_selected_line) ? "white" : "249"),
+ script->description);
+ }
+ break;
+ case 'D': /* date added */
+ if (script->date_added > 0)
+ {
+ tm = localtime (&script->date_added);
+ strftime (str_date, sizeof (str_date),
+ "%Y-%m-%d", tm);
+ snprintf (str_item, sizeof (str_item),
+ "%s%s",
+ weechat_color (
+ weechat_config_string (
+ (line == script_buffer_selected_line) ?
+ script_config_color_text_date_selected :
+ script_config_color_text_date)),
+ str_date);
+ }
+ else
+ num_spaces = 10;
+ break;
+ case 'e': /* file extension */
+ if (script->language >= 0)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script_extension[script->language]);
+ snprintf (str_item, sizeof (str_item),
+ "%s%s",
+ weechat_color (
+ weechat_config_string (
+ (line == script_buffer_selected_line) ?
+ script_config_color_text_extension_selected :
+ script_config_color_text_extension)),
+ script_extension[script->language]);
+ }
+ break;
+ case 'l': /* language */
+ if (script->language >= 0)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script_language[script->language]);
+ snprintf (str_item, sizeof (str_item),
+ "%s", script_language[script->language]);
+ }
+ break;
+ case 'L': /* license */
+ if (script->license)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->license);
+ snprintf (str_item, sizeof (str_item),
+ "%s", script->license);
+ }
+ break;
+ case 'n': /* name + extension */
+ if (script->name_with_extension)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->name_with_extension);
+ snprintf (str_item, sizeof (str_item),
+ "%s%s%s.%s",
+ weechat_color (
+ weechat_config_string (
+ (line == script_buffer_selected_line) ?
+ script_config_color_text_name_selected :
+ script_config_color_text_name)),
+ script->name,
+ weechat_color (
+ weechat_config_string (
+ (line == script_buffer_selected_line) ?
+ script_config_color_text_extension_selected :
+ script_config_color_text_extension)),
+ script_extension[script->language]);
+ }
+ break;
+ case 'N': /* name (without extension) */
+ if (script->name)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->name);
+ snprintf (str_item, sizeof (str_item),
+ "%s%s",
+ weechat_color (
+ weechat_config_string (
+ (line == script_buffer_selected_line) ?
+ script_config_color_text_name_selected :
+ script_config_color_text_name)),
+ script->name);
+ }
+ break;
+ case 'r': /* requirements */
+ if (script->requirements)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->requirements);
+ snprintf (str_item, sizeof (str_item),
+ "%s", script->requirements);
+ }
+ break;
+ case 's': /* status */
+ snprintf (str_item, sizeof (str_item),
+ script_repo_get_status_for_display (script,
+ "*iHrN", 0));
+ break;
+ case 't': /* tags */
+ if (script->tags)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->tags);
+ tags = weechat_string_replace (script->tags, ",", " ");
+ if (tags)
+ {
+ snprintf (str_item, sizeof (str_item),
+ "%s%s",
+ weechat_color (
+ weechat_config_string (
+ (line == script_buffer_selected_line) ?
+ script_config_color_text_tags_selected :
+ script_config_color_text_tags)),
+ tags);
+ free (tags);
+ }
+ }
+ break;
+ case 'u': /* date updated */
+ if (script->date_updated > 0)
+ {
+ tm = localtime (&script->date_updated);
+ strftime (str_date, sizeof (str_date),
+ "%Y-%m-%d", tm);
+ snprintf (str_item, sizeof (str_item),
+ "%s%s",
+ weechat_color (
+ weechat_config_string (
+ (line == script_buffer_selected_line) ?
+ script_config_color_text_date_selected :
+ script_config_color_text_date)),
+ str_date);
+ }
+ else
+ num_spaces = 10;
+ break;
+ case 'v': /* version */
+ if (script->version)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->version);
+ snprintf (str_item, sizeof (str_item),
+ "%s%s",
+ weechat_color (
+ weechat_config_string (
+ (line == script_buffer_selected_line) ?
+ script_config_color_text_version_selected :
+ script_config_color_text_version)),
+ script->version);
+ }
+ break;
+ case 'V': /* version loaded */
+ if (script->version_loaded)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->version_loaded);
+ snprintf (str_item, sizeof (str_item),
+ "%s%s",
+ weechat_color (
+ weechat_config_string (
+ (line == script_buffer_selected_line) ?
+ script_config_color_text_version_loaded_selected :
+ script_config_color_text_version_loaded)),
+ script->version_loaded);
+ }
+ break;
+ case 'w': /* min_weechat */
+ if (script->min_weechat)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->min_weechat);
+ snprintf (str_item, sizeof (str_item),
+ "%s", script->min_weechat);
+ }
+ break;
+ case 'W': /* max_weechat */
+ if (script->max_weechat)
+ {
+ num_spaces = max_length - weechat_utf8_strlen_screen (script->max_weechat);
+ snprintf (str_item, sizeof (str_item),
+ "%s", script->max_weechat);
+ }
+ break;
+ case '%': /* "%%" will display a single "%" */
+ snprintf (str_item, sizeof (str_item),
+ "%s%%",
+ weechat_color (weechat_config_string (script_config_color_text_delimiters)));
+ break;
+ default:
+ unknown = 1;
+ break;
+ }
+ }
+ else
+ {
+ snprintf (str_item, sizeof (str_item),
+ "%s%s",
+ weechat_color (weechat_config_string (script_config_color_text_delimiters)),
+ utf_char);
+ }
+ if (!unknown)
+ {
+ if (str_item[0])
+ {
+ strcat (str_line, str_color);
+ strcat (str_line, str_item);
+ }
+ if (num_spaces > 0)
+ {
+ snprintf (str_format, sizeof (str_format),
+ "%%-%ds",
+ num_spaces);
+ snprintf (str_item, sizeof (str_item),
+ str_format, " ");
+ strcat (str_line, str_item);
+ }
+ }
+ ptr_col += char_size;
+ }
+
+ weechat_printf_y (script_buffer, line, "%s", str_line);
+}
+
+/*
+ * script_buffer_detail_label: get header of a line for detail of script
+ * The returned string is aligned on the right
+ */
+
+const char *
+script_buffer_detail_label (const char *text, int max_length)
+{
+ char str_format[16];
+ static char result[1024];
+ int num_spaces;
+
+ num_spaces = max_length - weechat_utf8_strlen_screen (text);
+ snprintf (str_format, sizeof (str_format),
+ "%%-%ds%%s", num_spaces);
+ snprintf (result, sizeof (result),
+ str_format,
+ (num_spaces > 0) ? " " : "",
+ text);
+
+ return result;
+}
+
+/*
+ * script_buffer_display_detail_script: display detail on a script
+ */
+
+void
+script_buffer_display_detail_script (struct t_repo_script *script)
+{
+ struct tm *tm;
+ char str_time[1024];
+ char *labels[] = { N_("Script"), N_("Version"), N_("Author"),
+ N_("License"), N_("Description"), N_("Tags"),
+ N_("Status"), N_("Date added"), N_("Date updated"),
+ N_("URL"), N_("MD5"), N_("Requires"), N_("Min WeeChat"),
+ N_("Max WeeChat"), NULL };
+ int i, length, max_length, line;
+
+ max_length = 0;
+ for (i = 0; labels[i]; i++)
+ {
+ length = weechat_utf8_strlen_screen (_(labels[i]));
+ if (length > max_length)
+ max_length = length;
+ }
+
+ line = 0;
+
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s%s%s.%s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ weechat_color (weechat_config_string (script_config_color_text_name)),
+ script->name,
+ weechat_color (weechat_config_string (script_config_color_text_extension)),
+ script_extension[script->language]);
+ line++;
+ weechat_printf_y (script_buffer, line + 1, "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ script->version);
+ line++;
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s <%s>",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ script->author,
+ script->mail);
+ line++;
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ script->license);
+ line++;
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ script->description);
+ line++;
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ script->tags);
+ line++;
+ if ((script->popularity == 0) && (script->status == 0))
+ {
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: -",
+ script_buffer_detail_label (_(labels[line]), max_length));
+ }
+ else
+ {
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s%s (%s%s%s%s%s%s%s%s%s%s )",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ script_repo_get_status_for_display (script, "*iHrN", 1),
+ weechat_color ("chat"),
+ (script->popularity > 0) ? " " : "",
+ (script->popularity > 0) ? _("popular") : "",
+ (script->status & SCRIPT_STATUS_INSTALLED) ? " " : "",
+ (script->status & SCRIPT_STATUS_INSTALLED) ? _("installed") : "",
+ (script->status & SCRIPT_STATUS_HELD) ? " " : "",
+ (script->status & SCRIPT_STATUS_HELD) ? _("held") : "",
+ (script->status & SCRIPT_STATUS_RUNNING) ? " " : "",
+ (script->status & SCRIPT_STATUS_RUNNING) ? _("running") : "",
+ (script->status & SCRIPT_STATUS_NEW_VERSION) ? " " : "",
+ (script->status & SCRIPT_STATUS_NEW_VERSION) ? _("obsolete") : "");
+ }
+ line++;
+ tm = localtime (&script->date_added);
+ strftime (str_time, sizeof (str_time), "%Y-%m-%d %H:%M:%S", tm);
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ str_time);
+ line++;
+ tm = localtime (&script->date_updated);
+ strftime (str_time, sizeof (str_time), "%Y-%m-%d %H:%M:%S", tm);
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ str_time);
+ line++;
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ script->url);
+ line++;
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ script->md5sum);
+ line++;
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ (script->requirements) ? script->requirements : "-");
+ line++;
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ (script->min_weechat) ? script->min_weechat : "-");
+ line++;
+ weechat_printf_y (script_buffer, line + 1,
+ "%s: %s",
+ script_buffer_detail_label (_(labels[line]), max_length),
+ (script->max_weechat) ? script->max_weechat : "-");
+}
+
+/*
+ * script_buffer_refresh: update list of scripts in script buffer
+ */
+
+void
+script_buffer_refresh (int clear)
+{
+ struct t_repo_script *ptr_script;
+ int line;
+ char str_title[1024];
+
+ if (!script_buffer)
+ return;
+
+ if (clear)
+ {
+ weechat_buffer_clear (script_buffer);
+ script_buffer_selected_line = (script_repo_count_displayed > 0) ? 0 : -1;
+ }
+
+ if (script_buffer_detail_script)
+ {
+ snprintf (str_title, sizeof (str_title),
+ _("alt+d=back to list"));
+ }
+ else
+ {
+ snprintf (str_title, sizeof (str_title),
+ _("%d/%d scripts (filter: %s) | Sort: %s | "
+ "alt+i=install r=remove l=load u=unload h=(un)hold "
+ "d=show detail | Input: 'q'=close 'r'=refresh 's:x,y'=sort "
+ "'words'=filter '*'=reset filter"),
+ script_repo_count_displayed,
+ script_repo_count,
+ (script_repo_filter) ? script_repo_filter : "*",
+ weechat_config_string (script_config_look_sort));
+ }
+ weechat_buffer_set (script_buffer, "title", str_title);
+
+ if (script_buffer_detail_script)
+ {
+ /* detail on a script */
+ script_buffer_display_detail_script (script_buffer_detail_script);
+ }
+ else
+ {
+ /* list of scripts */
+ line = 0;
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (ptr_script->displayed)
+ {
+ script_buffer_display_line_script (line, ptr_script);
+ line++;
+ }
+ }
+ }
+}
+
+/*
+ * script_buffer_set_current_line: set current selected line in script buffer
+ */
+
+void
+script_buffer_set_current_line (int line)
+{
+ int old_line;
+
+ old_line = script_buffer_selected_line;
+ script_buffer_selected_line = line;
+
+ script_buffer_display_line_script (old_line,
+ script_repo_search_displayed_by_number (old_line));
+ script_buffer_display_line_script (script_buffer_selected_line,
+ script_repo_search_displayed_by_number (script_buffer_selected_line));
+}
+
+/*
+ * script_buffer_show_detail_script: show detailed info on a script
+ */
+
+void
+script_buffer_show_detail_script (struct t_repo_script *script)
+{
+ if (!script_buffer)
+ return;
+
+ if (script_buffer_detail_script == script)
+ script_buffer_detail_script = NULL;
+ else
+ script_buffer_detail_script = script;
+
+ weechat_buffer_clear (script_buffer);
+ script_buffer_refresh (0);
+
+ if (!script_buffer_detail_script)
+ script_buffer_check_line_outside_window ();
+}
+
+/*
+ * script_buffer_get_window_info: get infos about window
+ */
+
+void
+script_buffer_get_window_info (struct t_gui_window *window,
+ int *start_line_y, int *chat_height)
+{
+ struct t_hdata *hdata_window, *hdata_window_scroll, *hdata_line;
+ struct t_hdata *hdata_line_data;
+ void *window_scroll, *start_line, *line_data;
+
+ hdata_window = weechat_hdata_get ("window");
+ hdata_window_scroll = weechat_hdata_get ("window_scroll");
+ hdata_line = weechat_hdata_get ("line");
+ hdata_line_data = weechat_hdata_get ("line_data");
+ *start_line_y = 0;
+ window_scroll = weechat_hdata_pointer (hdata_window, window, "scroll");
+ if (window_scroll)
+ {
+ start_line = weechat_hdata_pointer (hdata_window_scroll, window_scroll,
+ "start_line");
+ if (start_line)
+ {
+ line_data = weechat_hdata_pointer (hdata_line, start_line, "data");
+ if (line_data)
+ {
+ *start_line_y = weechat_hdata_integer (hdata_line_data,
+ line_data, "y");
+ }
+ }
+ }
+ *chat_height = weechat_hdata_integer (hdata_window, window,
+ "win_chat_height");
+}
+
+/*
+ * script_buffer_check_line_outside_window: check if current line is outside
+ * window
+ */
+
+void
+script_buffer_check_line_outside_window ()
+{
+ struct t_gui_window *window;
+ int start_line_y, chat_height;
+ char str_command[256];
+
+ window = weechat_window_search_with_buffer (script_buffer);
+ if (!window)
+ return;
+
+ script_buffer_get_window_info (window, &start_line_y, &chat_height);
+ if ((start_line_y > script_buffer_selected_line)
+ || (start_line_y <= script_buffer_selected_line - chat_height))
+ {
+ snprintf (str_command, sizeof (str_command),
+ "/window scroll -window %d %s%d",
+ weechat_window_get_integer (window, "number"),
+ (start_line_y > script_buffer_selected_line) ? "-" : "+",
+ (start_line_y > script_buffer_selected_line) ?
+ start_line_y - script_buffer_selected_line :
+ script_buffer_selected_line - start_line_y - chat_height + 1);
+ weechat_command (script_buffer, str_command);
+ }
+}
+
+/*
+ * script_buffer_window_scrolled_cb: called when signal "window_scrolled" is
+ * received
+ */
+
+int
+script_buffer_window_scrolled_cb (void *data, const char *signal,
+ const char *type_data,
+ void *signal_data)
+{
+ int start_line_y, chat_height, line;
+
+ /* make C compiler happy */
+ (void) data;
+ (void) signal;
+ (void) type_data;
+
+ /* scrolled another window/buffer? then just ignore */
+ if (weechat_window_get_pointer (signal_data, "buffer") != script_buffer)
+ return WEECHAT_RC_OK;
+
+ /* ignore if detail of a script is displayed */
+ if (script_buffer_detail_script)
+ return WEECHAT_RC_OK;
+
+ script_buffer_get_window_info (signal_data, &start_line_y, &chat_height);
+
+ line = script_buffer_selected_line;
+ while (line < start_line_y)
+ {
+ line += chat_height;
+ }
+ while (line >= start_line_y + chat_height)
+ {
+ line -= chat_height;
+ }
+ if (line < start_line_y)
+ line = start_line_y;
+ if (line >= script_repo_count_displayed)
+ line = script_repo_count_displayed - 1;
+ script_buffer_set_current_line (line);
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_buffer_input_cb: callback called when user send data to script list
+ * buffer
+ */
+
+int
+script_buffer_input_cb (void *data, struct t_gui_buffer *buffer,
+ const char *input_data)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) buffer;
+
+ if (strcmp (input_data, "q") == 0)
+ {
+ weechat_buffer_close (buffer);
+ return WEECHAT_RC_OK;
+ }
+
+ if (strncmp (input_data, "s:", 2) == 0)
+ {
+ if (input_data[2])
+ weechat_config_option_set (script_config_look_sort, input_data + 2, 1);
+ else
+ weechat_config_option_reset (script_config_look_sort, 1);
+ return WEECHAT_RC_OK;
+ }
+
+ if (strcmp (input_data, "r") == 0)
+ {
+ script_get_loaded_scripts ();
+ script_repo_remove_all ();
+ script_repo_file_read (1);
+ script_buffer_refresh (1);
+ return WEECHAT_RC_OK;
+ }
+
+ script_repo_filter_scripts (input_data);
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_buffer_close_cb: callback called when script buffer is closed
+ */
+
+int
+script_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) buffer;
+
+ script_buffer = NULL;
+ script_buffer_selected_line = 0;
+ script_buffer_detail_script = NULL;
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_buffer_set_callbacks: restore buffers callbacks (input and close) for
+ * buffer created by script plugin
+ */
+
+void
+script_buffer_set_callbacks ()
+{
+ struct t_gui_buffer *ptr_buffer;
+
+ ptr_buffer = weechat_buffer_search (SCRIPT_PLUGIN_NAME, SCRIPT_BUFFER_NAME);
+ if (ptr_buffer)
+ {
+ script_buffer = ptr_buffer;
+ weechat_buffer_set_pointer (script_buffer, "close_callback", &script_buffer_close_cb);
+ weechat_buffer_set_pointer (script_buffer, "input_callback", &script_buffer_input_cb);
+ }
+}
+
+/*
+ * script_buffer_open: open script buffer (to display list of scripts)
+ */
+
+void
+script_buffer_open ()
+{
+ if (!script_buffer)
+ {
+ script_buffer = weechat_buffer_new (SCRIPT_BUFFER_NAME,
+ &script_buffer_input_cb, NULL,
+ &script_buffer_close_cb, NULL);
+
+ /* failed to create buffer ? then exit */
+ if (!script_buffer)
+ return;
+
+ weechat_buffer_set (script_buffer, "type", "free");
+ weechat_buffer_set (script_buffer, "title", _("Scripts"));
+ weechat_buffer_set (script_buffer, "key_bind_meta2-A", "/script up");
+ weechat_buffer_set (script_buffer, "key_bind_meta2-B", "/script down");
+ weechat_buffer_set (script_buffer, "key_bind_meta-l", "/script load");
+ weechat_buffer_set (script_buffer, "key_bind_meta-u", "/script unload");
+ weechat_buffer_set (script_buffer, "key_bind_meta-i", "/script install");
+ weechat_buffer_set (script_buffer, "key_bind_meta-r", "/script remove");
+ weechat_buffer_set (script_buffer, "key_bind_meta-h", "/script hold");
+ weechat_buffer_set (script_buffer, "key_bind_meta-d", "/script show");
+ weechat_buffer_set (script_buffer, "localvar_set_type", "script");
+
+ script_buffer_selected_line = 0;
+ script_buffer_detail_script = NULL;
+ }
+}
diff --git a/src/plugins/script/script-buffer.h b/src/plugins/script/script-buffer.h
new file mode 100644
index 000000000..a9a29d326
--- /dev/null
+++ b/src/plugins/script/script-buffer.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __WEECHAT_SCRIPT_BUFFER_H
+#define __WEECHAT_SCRIPT_BUFFER_H 1
+
+#define SCRIPT_BUFFER_NAME "scripts"
+
+struct t_repo_script;
+
+extern struct t_gui_buffer *script_buffer;
+extern int script_buffer_selected_line;
+extern struct t_repo_script *script_buffer_detail_script;
+
+extern void script_buffer_refresh (int clear);
+extern void script_buffer_set_current_line (int line);
+extern void script_buffer_show_detail_script (struct t_repo_script *script);
+extern void script_buffer_check_line_outside_window ();
+extern int script_buffer_window_scrolled_cb (void *data, const char *signal,
+ const char *type_data,
+ void *signal_data);
+extern int script_buffer_input_cb (void *data, struct t_gui_buffer *buffer,
+ const char *input_data);
+extern int script_buffer_close_cb (void *data, struct t_gui_buffer *buffer);
+extern void script_buffer_set_callbacks ();
+extern void script_buffer_open ();
+
+#endif /* __WEECHAT_SCRIPT_BUFFER_H */
diff --git a/src/plugins/script/script-command.c b/src/plugins/script/script-command.c
new file mode 100644
index 000000000..4ba65cb84
--- /dev/null
+++ b/src/plugins/script/script-command.c
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * script-command.c: script commands
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "../weechat-plugin.h"
+#include "script.h"
+#include "script-command.h"
+#include "script-action.h"
+#include "script-buffer.h"
+#include "script-config.h"
+#include "script-repo.h"
+
+
+/*
+ * script_command_action: run action
+ */
+
+void
+script_command_action (struct t_gui_buffer *buffer, const char *action,
+ const char *action_with_args, int need_repository)
+{
+ struct t_repo_script *ptr_script;
+ char str_action[4096];
+
+ if (action_with_args)
+ {
+ /* action with arguments on command line */
+ script_action_schedule (action_with_args, need_repository, 0);
+ }
+ else if (script_buffer && (buffer == script_buffer))
+ {
+ /* action on current line of script buffer */
+ if ((weechat_strcasecmp (action, "show") == 0)
+ && script_buffer_detail_script)
+ {
+ /* if detail on script is displayed, back to list */
+ snprintf (str_action, sizeof (str_action),
+ "-q %s",
+ action);
+ script_action_schedule (str_action, need_repository, 1);
+ }
+ else
+ {
+ /* if list is displayed, execute action on script */
+ if (!script_buffer_detail_script)
+ {
+ ptr_script = script_repo_search_displayed_by_number (script_buffer_selected_line);
+ if (ptr_script)
+ {
+ snprintf (str_action, sizeof (str_action),
+ "-q %s %s",
+ action,
+ ptr_script->name_with_extension);
+ script_action_schedule (str_action, need_repository, 1);
+ }
+ }
+ }
+ }
+}
+
+/*
+ * script_command_script: command to manage scripts
+ */
+
+int
+script_command_script (void *data, struct t_gui_buffer *buffer, int argc,
+ char **argv, char **argv_eol)
+{
+ char *error;
+ long value;
+ int line;
+
+ /* make C compiler happy */
+ (void) data;
+
+ if (argc == 1)
+ {
+ script_action_schedule ("buffer", 1, 0);
+ return WEECHAT_RC_OK;
+ }
+
+ if (weechat_strcasecmp (argv[1], "list") == 0)
+ {
+ script_action_schedule ("list", 1, 0);
+ return WEECHAT_RC_OK;
+ }
+
+ if ((weechat_strcasecmp (argv[1], "load") == 0)
+ || (weechat_strcasecmp (argv[1], "unload") == 0))
+ {
+ script_command_action (buffer,
+ argv[1],
+ (argc > 2) ? argv_eol[1] : NULL,
+ 0);
+ return WEECHAT_RC_OK;
+ }
+
+ if ((weechat_strcasecmp (argv[1], "install") == 0)
+ || (weechat_strcasecmp (argv[1], "remove") == 0)
+ || (weechat_strcasecmp (argv[1], "hold") == 0)
+ || (weechat_strcasecmp (argv[1], "show") == 0))
+ {
+ script_command_action (buffer,
+ argv[1],
+ (argc > 2) ? argv_eol[1] : NULL,
+ 1);
+ return WEECHAT_RC_OK;
+ }
+
+ if (weechat_strcasecmp (argv[1], "upgrade") == 0)
+ {
+ script_action_schedule ("upgrade", 1, 0);
+ return WEECHAT_RC_OK;
+ }
+
+ if (weechat_strcasecmp (argv[1], "update") == 0)
+ {
+ script_repo_file_update (0);
+ return WEECHAT_RC_OK;
+ }
+
+ if (!script_buffer)
+ script_buffer_open ();
+
+ if (script_buffer)
+ {
+ weechat_buffer_set (script_buffer, "display", "1");
+
+ if (argc > 1)
+ {
+ if (!script_buffer_detail_script
+ && (script_buffer_selected_line >= 0)
+ && (script_repo_count_displayed > 0))
+ {
+ if (strcmp (argv[1], "up") == 0)
+ {
+ value = 1;
+ if (argc > 2)
+ {
+ error = NULL;
+ value = strtol (argv[2], &error, 10);
+ if (!error || error[0])
+ value = 1;
+ }
+ line = script_buffer_selected_line - value;
+ if (line < 0)
+ line = 0;
+ if (line != script_buffer_selected_line)
+ {
+ script_buffer_set_current_line (line);
+ script_buffer_check_line_outside_window ();
+ }
+ return WEECHAT_RC_OK;
+ }
+ else if (strcmp (argv[1], "down") == 0)
+ {
+ value = 1;
+ if (argc > 2)
+ {
+ error = NULL;
+ value = strtol (argv[2], &error, 10);
+ if (!error || error[0])
+ value = 1;
+ }
+ line = script_buffer_selected_line + value;
+ if (line >= script_repo_count_displayed)
+ line = script_repo_count_displayed - 1;
+ if (line != script_buffer_selected_line)
+ {
+ script_buffer_set_current_line (line);
+ script_buffer_check_line_outside_window ();
+ }
+ return WEECHAT_RC_OK;
+ }
+ }
+ }
+ }
+
+ script_buffer_refresh (0);
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * scrit_command_init: init script commands (create hooks)
+ */
+
+void
+script_command_init ()
+{
+ weechat_hook_command ("script",
+ N_("WeeChat scripts manager"),
+ N_("list || show <script>"
+ " || load|unload <script> [<script>...]"
+ " || install|remove|hold <script> [<script>...]"
+ " || upgrade || update"),
+ N_(" list: list loaded scripts (all languages)\n"
+ " show: show detailed info about a script\n"
+ " load: load script(s)\n"
+ " unload: unload script(s)\n"
+ " install: install/upgrade script(s)\n"
+ " remove: remove script(s)\n"
+ " hold: hold/unhold script(s) (a script held "
+ "will not be upgraded any more and cannot be "
+ "removed)\n"
+ " upgrade: upgrade all installed scripts which "
+ "are obsolete (new version available)\n"
+ " update: update local scripts cache\n\n"
+ "Without argument, this command opens a buffer "
+ "with list of scripts.\n\n"
+ "On script buffer, the possible status for each "
+ "script are:\n"
+ " * i H r N\n"
+ " | | | | |\n"
+ " | | | | obsolete (new version available)\n"
+ " | | | running (loaded)\n"
+ " | | held\n"
+ " | installed\n"
+ " popular script\n\n"
+ "Keys on script buffer:\n"
+ " alt+i install script\n"
+ " alt+r remove script\n"
+ " alt+l load script\n"
+ " alt+u unload script\n"
+ " alt+h (un)hold script\n\n"
+ "Input allowed on script buffer:\n"
+ " q close buffer\n"
+ " r refresh buffer\n"
+ " s:x,y sort buffer using keys x and y (see /help "
+ "script.look.sort)\n"
+ " s: reset sort (use default sort)\n"
+ " word(s) filter scripts: search word(s) in "
+ "scripts (description, tags, ...)\n"
+ " * remove filter"),
+ "list"
+ " || show %(script_scripts)"
+ " || load %(script_files)"
+ " || unload %(python_script)|%(perl_script)|"
+ "%(ruby_script)|%(tcl_script)|%(lua_script)|"
+ "%(guile_script)"
+ " || install %(script_scripts)|%*"
+ " || remove %(script_scripts_installed)|%*"
+ " || hold %(script_scripts)"
+ " || update"
+ " || upgrade",
+ &script_command_script, NULL);
+}
diff --git a/src/plugins/script/script-command.h b/src/plugins/script/script-command.h
new file mode 100644
index 000000000..0af7d2098
--- /dev/null
+++ b/src/plugins/script/script-command.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __WEECHAT_SCRIPT_COMMAND_H
+#define __WEECHAT_SCRIPT_COMMAND_H 1
+
+extern void script_command_init ();
+
+#endif /* __WEECHAT_SCRIPT_COMMAND_H */
diff --git a/src/plugins/script/script-completion.c b/src/plugins/script/script-completion.c
new file mode 100644
index 000000000..e9d6fbc99
--- /dev/null
+++ b/src/plugins/script/script-completion.c
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * script-completion.c: completion for script commands
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <libgen.h>
+
+#include "../weechat-plugin.h"
+#include "script.h"
+#include "script-repo.h"
+
+
+/*
+ * script_completion_scripts_cb: callback for completion with scripts in
+ * repository
+ */
+
+int
+script_completion_scripts_cb (void *data, const char *completion_item,
+ struct t_gui_buffer *buffer,
+ struct t_gui_completion *completion)
+{
+ struct t_repo_script *ptr_script;
+
+ /* make C compiler happy */
+ (void) data;
+ (void) completion_item;
+ (void) buffer;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ weechat_hook_completion_list_add (completion,
+ ptr_script->name_with_extension,
+ 0, WEECHAT_LIST_POS_SORT);
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_completion_scripts_installed_cb: callback for completion with scripts
+ * installed
+ */
+
+int
+script_completion_scripts_installed_cb (void *data, const char *completion_item,
+ struct t_gui_buffer *buffer,
+ struct t_gui_completion *completion)
+{
+ struct t_repo_script *ptr_script;
+
+ /* make C compiler happy */
+ (void) data;
+ (void) completion_item;
+ (void) buffer;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (ptr_script->status & SCRIPT_STATUS_INSTALLED)
+ {
+ weechat_hook_completion_list_add (completion,
+ ptr_script->name_with_extension,
+ 0, WEECHAT_LIST_POS_SORT);
+ }
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_completion_exec_file_cb: callback called for each file in script
+ * directories
+ */
+
+void
+script_completion_exec_file_cb (void *data, const char *filename)
+{
+ struct t_gui_completion *completion;
+ const char *extension;
+ char *pos, *filename2, *ptr_base_name;
+
+ completion = (struct t_gui_completion *)(((void **)data)[0]);
+ extension = (const char *)(((void **)data)[1]);
+
+ pos = strrchr (filename, '.');
+ if (!pos)
+ return;
+
+ /* ignore scripts that do not ends with expected extension */
+ if (strcmp (pos + 1, extension) != 0)
+ return;
+
+ filename2 = strdup (filename);
+ if (filename2)
+ {
+ ptr_base_name = basename (filename2);
+ weechat_hook_completion_list_add (completion,
+ ptr_base_name,
+ 0, WEECHAT_LIST_POS_SORT);
+ free (filename2);
+ }
+}
+
+/*
+ * script_completion_scripts_files_cb: callback for completion with files in
+ * script directories
+ */
+
+int
+script_completion_scripts_files_cb (void *data, const char *completion_item,
+ struct t_gui_buffer *buffer,
+ struct t_gui_completion *completion)
+{
+ const char *weechat_home;
+ char *directory;
+ int length, i;
+ void *pointers[2];
+
+ /* make C compiler happy */
+ (void) data;
+ (void) completion_item;
+ (void) buffer;
+
+ weechat_home = weechat_info_get ("weechat_dir", NULL);
+
+ length = strlen (weechat_home) + 128 + 1;
+ directory = malloc (length);
+ if (directory)
+ {
+ for (i = 0; script_language[i]; i++)
+ {
+ pointers[0] = completion;
+ pointers[1] = script_extension[i];
+
+ /* look for files in "~/.weechat/<language>/" */
+ snprintf (directory, length,
+ "%s/%s", weechat_home, script_language[i]);
+ weechat_exec_on_files (directory, 0,
+ pointers, &script_completion_exec_file_cb);
+
+ /* look for files in "~/.weechat/<language>/autoload/" */
+ snprintf (directory, length,
+ "%s/%s/autoload", weechat_home, script_language[i]);
+ weechat_exec_on_files (directory, 0,
+ pointers, &script_completion_exec_file_cb);
+ }
+ free (directory);
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_completion_init: init completion for script plugin
+ */
+
+void
+script_completion_init ()
+{
+ weechat_hook_completion ("script_scripts",
+ N_("list of scripts in repository"),
+ &script_completion_scripts_cb, NULL);
+ weechat_hook_completion ("script_scripts_installed",
+ N_("list of scripts installed (from repository)"),
+ &script_completion_scripts_installed_cb, NULL);
+ weechat_hook_completion ("script_files",
+ N_("files in script directories"),
+ &script_completion_scripts_files_cb, NULL);
+}
diff --git a/src/plugins/script/script-completion.h b/src/plugins/script/script-completion.h
new file mode 100644
index 000000000..a14e2a0ba
--- /dev/null
+++ b/src/plugins/script/script-completion.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __WEECHAT_SCRIPT_COMPLETION_H
+#define __WEECHAT_SCRIPT_COMPLETION_H 1
+
+extern void script_completion_init ();
+
+#endif /* __WEECHAT_SCRIPT_COMPLETION_H */
diff --git a/src/plugins/script/script-config.c b/src/plugins/script/script-config.c
new file mode 100644
index 000000000..0123b7c8c
--- /dev/null
+++ b/src/plugins/script/script-config.c
@@ -0,0 +1,587 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * script-config.c: script configuration options (file script.conf)
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "../weechat-plugin.h"
+#include "script.h"
+#include "script-config.h"
+#include "script-buffer.h"
+#include "script-repo.h"
+
+
+struct t_config_file *script_config_file = NULL;
+struct t_config_section *script_config_section_look = NULL;
+struct t_config_section *script_config_section_color = NULL;
+struct t_config_section *script_config_section_scripts = NULL;
+
+/* script config, look section */
+
+struct t_config_option *script_config_look_columns;
+struct t_config_option *script_config_look_sort;
+
+/* script config, color section */
+
+struct t_config_option *script_config_color_status_popular;
+struct t_config_option *script_config_color_status_installed;
+struct t_config_option *script_config_color_status_held;
+struct t_config_option *script_config_color_status_running;
+struct t_config_option *script_config_color_status_obsolete;
+struct t_config_option *script_config_color_status_unknown;
+struct t_config_option *script_config_color_text;
+struct t_config_option *script_config_color_text_date;
+struct t_config_option *script_config_color_text_delimiters;
+struct t_config_option *script_config_color_text_description;
+struct t_config_option *script_config_color_text_extension;
+struct t_config_option *script_config_color_text_name;
+struct t_config_option *script_config_color_text_tags;
+struct t_config_option *script_config_color_text_version;
+struct t_config_option *script_config_color_text_version_loaded;
+struct t_config_option *script_config_color_text_bg;
+struct t_config_option *script_config_color_text_selected;
+struct t_config_option *script_config_color_text_date_selected;
+struct t_config_option *script_config_color_text_description_selected;
+struct t_config_option *script_config_color_text_extension_selected;
+struct t_config_option *script_config_color_text_name_selected;
+struct t_config_option *script_config_color_text_tags_selected;
+struct t_config_option *script_config_color_text_version_selected;
+struct t_config_option *script_config_color_text_version_loaded_selected;
+struct t_config_option *script_config_color_text_bg_selected;
+
+/* script config, scripts section */
+
+struct t_config_option *script_config_scripts_cache_expire;
+struct t_config_option *script_config_scripts_dir;
+struct t_config_option *script_config_scripts_hold;
+struct t_config_option *script_config_scripts_url;
+
+
+/*
+ * script_config_get_dir: get local directory for script
+ * Note: result must be freed after use
+ */
+
+char *
+script_config_get_dir ()
+{
+ const char *weechat_home;
+ char *path, *path2;
+
+ weechat_home = weechat_info_get ("weechat_dir", NULL);
+
+ path = weechat_string_expand_home (weechat_config_string (script_config_scripts_dir));
+ path2 = weechat_string_replace ((path) ?
+ path : weechat_config_string (script_config_scripts_dir),
+ "%h", weechat_home);
+
+ if (path && path2)
+ {
+ free (path);
+ path = NULL;
+ }
+
+ if (path2)
+ return path2;
+ if (path)
+ return path;
+ return strdup (weechat_config_string (script_config_scripts_dir));
+}
+
+/*
+ * script_config_get_xml_filename: get filename with scripts (by default
+ * "/home/xxx/.weechat/script/plugins.xml.gz")
+ * Note: result must be freed after use
+ */
+
+char *
+script_config_get_xml_filename ()
+{
+ char *path, *filename;
+ int length;
+
+ path = script_config_get_dir ();
+ length = strlen (path) + 64;
+ filename = malloc (length);
+ if (filename)
+ snprintf (filename, length, "%s/plugins.xml.gz", path);
+ free (path);
+ return filename;
+}
+
+/*
+ * script_config_get_script_download_filename: get filename for a script to
+ * download, for eample:
+ * "/home/xxx/.weechat/script/iset.pl"
+ * Note: result must be freed after
+ * use
+ */
+
+char *
+script_config_get_script_download_filename (struct t_repo_script *script)
+{
+ char *path, *filename;
+ int length;
+
+ path = script_config_get_dir ();
+ length = strlen (path) + 1 + strlen (script->name_with_extension) + 1;
+ filename = malloc (length);
+ if (filename)
+ snprintf (filename, length, "%s/%s", path, script->name_with_extension);
+ free (path);
+ return filename;
+}
+
+/*
+ * script_config_refresh_cb: callback called when user changes xfer option that
+ * needs a refresh of script list
+ */
+
+void
+script_config_refresh_cb (void *data, struct t_config_option *option)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) option;
+
+ if (script_buffer)
+ script_buffer_refresh (0);
+}
+
+/*
+ * script_config_change_sort_cb: callback called when default sort keys are
+ * changed
+ */
+
+void
+script_config_change_sort_cb (void *data, struct t_config_option *option)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) option;
+
+ if (repo_scripts)
+ {
+ script_repo_remove_all ();
+ script_repo_file_read (1);
+ script_buffer_refresh (1);
+ }
+}
+
+/*
+ * script_config_change_hold_cb: callback called when list of scripts to "hold"
+ * is changed
+ */
+
+void
+script_config_change_hold_cb (void *data, struct t_config_option *option)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) option;
+
+ script_repo_update_status_all ();
+ if (script_buffer)
+ script_buffer_refresh (0);
+}
+
+/*
+ * script_config_hold: hold a script
+ * Note: the option is changed, but the status "held"
+ * in script is NOT updated by this function
+ */
+
+void
+script_config_hold (const char *name_with_extension)
+{
+ char **items, *hold;
+ int num_items, i, length;
+
+ length = strlen (weechat_config_string (script_config_scripts_hold)) +
+ 1 + strlen (name_with_extension) + 1;
+ hold = malloc (length);
+ if (hold)
+ {
+ hold[0] = '\0';
+ items = weechat_string_split (weechat_config_string (script_config_scripts_hold),
+ ",", 0, 0, &num_items);
+ if (items)
+ {
+ for (i = 0; i < num_items; i++)
+ {
+ if (strcmp (items[i], name_with_extension) != 0)
+ {
+ if (hold[0])
+ strcat (hold, ",");
+ strcat (hold, items[i]);
+ }
+ }
+ weechat_string_free_split (items);
+ }
+ if (hold[0])
+ strcat (hold, ",");
+ strcat (hold, name_with_extension);
+
+ weechat_config_option_set (script_config_scripts_hold, hold, 0);
+
+ free (hold);
+ }
+}
+
+/*
+ * script_config_unhold: unhold a script
+ * Note: the option is changed, but the status "held"
+ * in script is NOT updated by this function
+ */
+
+void
+script_config_unhold (const char *name_with_extension)
+{
+ char **items, *hold;
+ int num_items, i, length;
+
+ length = strlen (weechat_config_string (script_config_scripts_hold)) + 1;
+ hold = malloc (length);
+ if (hold)
+ {
+ hold[0] = '\0';
+ items = weechat_string_split (weechat_config_string (script_config_scripts_hold),
+ ",", 0, 0, &num_items);
+ if (items)
+ {
+ for (i = 0; i < num_items; i++)
+ {
+ if (strcmp (items[i], name_with_extension) != 0)
+ {
+ if (hold[0])
+ strcat (hold, ",");
+ strcat (hold, items[i]);
+ }
+ }
+ weechat_string_free_split (items);
+ }
+
+ weechat_config_option_set (script_config_scripts_hold, hold, 0);
+
+ free (hold);
+ }
+}
+
+/*
+ * script_config_reaload: reload script configuration file
+ */
+
+int
+script_config_reload (void *data, struct t_config_file *config_file)
+{
+ /* make C compiler happy */
+ (void) data;
+
+ return weechat_config_reload (config_file);
+}
+
+/*
+ * script_config_init: init script configuration file
+ * return: 1 if ok, 0 if error
+ */
+
+int
+script_config_init ()
+{
+ struct t_config_section *ptr_section;
+
+ script_config_file = weechat_config_new (SCRIPT_CONFIG_NAME,
+ &script_config_reload, NULL);
+ if (!script_config_file)
+ return 0;
+
+ /* look */
+ ptr_section = weechat_config_new_section (script_config_file, "look",
+ 0, 0,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL);
+ if (!ptr_section)
+ {
+ weechat_config_free (script_config_file);
+ return 0;
+ }
+
+ script_config_look_columns = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "columns", "string",
+ N_("format of columns displayed in script buffer: following column "
+ "identifiers are replaced by their value: %a=author, %d=description, "
+ "%D=date added, %e=extension, %l=language, %L=license, %n=name with "
+ "extension, %N=name, %r=requirements, %s=status, %t=tags, "
+ "%u=date updated, %v=version, %V=version loaded, %w=min_weechat, "
+ "%W=max_weechat)"),
+ NULL, 0, 0, "%s %n %V %v %u | %d | %t", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_look_sort = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "sort", "string",
+ N_("default sort keys for scripts: comma-separated list of identifiers: "
+ "a=author, d=date added, e=extension, i=installed, l=language, "
+ "n=name, o=obsolete, p=popularity, r=running, u=date updated; char "
+ "\"-\" can be used before identifier to reverse order; example: "
+ "\"i,u\": installed scripts first, sorted by update date"),
+ NULL, 0, 0, "p,n", NULL, 0,
+ NULL, NULL, &script_config_change_sort_cb, NULL, NULL, NULL);
+
+ /* color */
+ ptr_section = weechat_config_new_section (script_config_file, "color",
+ 0, 0,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL);
+ if (!ptr_section)
+ {
+ weechat_config_free (script_config_file);
+ return 0;
+ }
+
+ script_config_color_status_popular = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "status_popular", "color",
+ N_("color for status \"popular\" (\"*\")"),
+ NULL, 0, 0, "yellow", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_status_installed = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "status_installed", "color",
+ N_("color for status \"installed\" (\"i\")"),
+ NULL, 0, 0, "lightcyan", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_status_held = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "status_held", "color",
+ N_("color for status \"held\" (\"H\")"),
+ NULL, 0, 0, "white", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_status_running = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "status_running", "color",
+ N_("color for status \"running\" (\"r\")"),
+ NULL, 0, 0, "lightgreen", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_status_obsolete = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "status_obsolete", "color",
+ N_("color for status \"obsolete\" (\"N\")"),
+ NULL, 0, 0, "lightmagenta", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_status_unknown = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "status_unknown", "color",
+ N_("color for status \"unknown\" (\"?\")"),
+ NULL, 0, 0, "lightred", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text", "color",
+ N_("text color in script buffer"),
+ NULL, 0, 0, "default", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_date = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_date", "color",
+ N_("text color of dates in script buffer"),
+ NULL, 0, 0, "default", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_delimiters = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_delimiters", "color",
+ N_("text color of delimiters in script buffer"),
+ NULL, 0, 0, "darkgray", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_description = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_description", "color",
+ N_("text color of description in script buffer"),
+ NULL, 0, 0, "default", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_extension = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_extension", "color",
+ N_("text color of extension in script buffer"),
+ NULL, 0, 0, "default", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_name = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_name", "color",
+ N_("text color of script name in script buffer"),
+ NULL, 0, 0, "cyan", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_tags = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_tags", "color",
+ N_("text color of tags in script buffer"),
+ NULL, 0, 0, "brown", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_version = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_version", "color",
+ N_("text color of version in script buffer"),
+ NULL, 0, 0, "magenta", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_version_loaded = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_version_loaded", "color",
+ N_("text color of version loaded in script buffer"),
+ NULL, 0, 0, "default", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_bg = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_bg", "color",
+ N_("background color in script buffer"),
+ NULL, 0, 0, "default", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_selected = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_selected", "color",
+ N_("text color for selected line in script buffer"),
+ NULL, 0, 0, "white", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_date_selected = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_date_selected", "color",
+ N_("text color of dates for selected line in script buffer"),
+ NULL, 0, 0, "white", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_description_selected = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_description_selected", "color",
+ N_("text color of description for selected line in script buffer"),
+ NULL, 0, 0, "white", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_extension_selected = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_extension_selected", "color",
+ N_("text color of extension for selected line in script buffer"),
+ NULL, 0, 0, "white", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_name_selected = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_name_selected", "color",
+ N_("text color of script name for selected line in script buffer"),
+ NULL, 0, 0, "lightcyan", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_tags_selected = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_tags_selected", "color",
+ N_("text color of tags for selected line in script buffer"),
+ NULL, 0, 0, "yellow", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_version_selected = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_version_selected", "color",
+ N_("text color of version for selected line in script buffer"),
+ NULL, 0, 0, "lightmagenta", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_version_loaded_selected = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_version_loaded_selected", "color",
+ N_("text color of version loaded for selected line in script buffer"),
+ NULL, 0, 0, "white", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+ script_config_color_text_bg_selected = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "text_bg_selected", "color",
+ N_("background color for selected line in script buffer"),
+ NULL, 0, 0, "red", NULL, 0,
+ NULL, NULL, &script_config_refresh_cb, NULL, NULL, NULL);
+
+ /* scripts */
+ ptr_section = weechat_config_new_section (script_config_file, "scripts",
+ 0, 0,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL);
+ if (!ptr_section)
+ {
+ weechat_config_free (script_config_file);
+ return 0;
+ }
+
+ script_config_scripts_cache_expire = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "cache_expire", "integer",
+ N_("local cache expiration time, in minutes (-1 = never expires, "
+ "0 = always expire)"),
+ NULL, -1, 525600, "60", NULL, 0, NULL, NULL,
+ NULL, NULL, NULL, NULL);
+ script_config_scripts_dir = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "dir", "string",
+ N_("local cache directory for scripts"),
+ NULL, 0, 0, "%h/script", NULL, 0, NULL, NULL,
+ NULL, NULL, NULL, NULL);
+ script_config_scripts_hold = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "hold", "string",
+ N_("scripts to \"hold\": comma-separated list of scripts which will "
+ "never been upgraded and can not be removed, for example: "
+ "\"buffers.pl,iset.pl\""),
+ NULL, 0, 0, "", NULL, 0, NULL, NULL,
+ &script_config_change_hold_cb, NULL, NULL, NULL);
+ script_config_scripts_url = weechat_config_new_option (
+ script_config_file, ptr_section,
+ "url", "string",
+ N_("URL for file with list of scripts"),
+ NULL, 0, 0, "http://www.weechat.org/files/plugins.xml.gz", NULL, 0, NULL, NULL,
+ NULL, NULL, NULL, NULL);
+
+ return 1;
+}
+
+/*
+ * script_config_read: read script configuration file
+ */
+
+int
+script_config_read ()
+{
+ return weechat_config_read (script_config_file);
+}
+
+/*
+ * script_config_write: write script configuration file
+ */
+
+int
+script_config_write ()
+{
+ return weechat_config_write (script_config_file);
+}
+
+/*
+ * script_config_free: free script configuration file
+ */
+
+void
+script_config_free ()
+{
+ weechat_config_free (script_config_file);
+}
diff --git a/src/plugins/script/script-config.h b/src/plugins/script/script-config.h
new file mode 100644
index 000000000..31ec84bb5
--- /dev/null
+++ b/src/plugins/script/script-config.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __WEECHAT_SCRIPT_CONFIG_H
+#define __WEECHAT_SCRIPT_CONFIG_H 1
+
+#define SCRIPT_CONFIG_NAME "script"
+
+struct t_repo_script;
+
+extern struct t_config_option *script_config_look_columns;
+extern struct t_config_option *script_config_look_sort;
+
+extern struct t_config_option *script_config_color_status_popular;
+extern struct t_config_option *script_config_color_status_installed;
+extern struct t_config_option *script_config_color_status_held;
+extern struct t_config_option *script_config_color_status_running;
+extern struct t_config_option *script_config_color_status_obsolete;
+extern struct t_config_option *script_config_color_status_unknown;
+extern struct t_config_option *script_config_color_text;
+extern struct t_config_option *script_config_color_text_date;
+extern struct t_config_option *script_config_color_text_delimiters;
+extern struct t_config_option *script_config_color_text_description;
+extern struct t_config_option *script_config_color_text_extension;
+extern struct t_config_option *script_config_color_text_name;
+extern struct t_config_option *script_config_color_text_tags;
+extern struct t_config_option *script_config_color_text_version;
+extern struct t_config_option *script_config_color_text_version_loaded;
+extern struct t_config_option *script_config_color_text_bg;
+extern struct t_config_option *script_config_color_text_selected;
+extern struct t_config_option *script_config_color_text_date_selected;
+extern struct t_config_option *script_config_color_text_description_selected;
+extern struct t_config_option *script_config_color_text_extension_selected;
+extern struct t_config_option *script_config_color_text_name_selected;
+extern struct t_config_option *script_config_color_text_tags_selected;
+extern struct t_config_option *script_config_color_text_version_selected;
+extern struct t_config_option *script_config_color_text_version_loaded_selected;
+extern struct t_config_option *script_config_color_text_bg_selected;
+
+extern struct t_config_option *script_config_scripts_cache_expire;
+extern struct t_config_option *script_config_scripts_dir;
+extern struct t_config_option *script_config_scripts_hold;
+extern struct t_config_option *script_config_scripts_url;
+
+extern char *script_config_get_dir ();
+extern char *script_config_get_xml_filename ();
+extern char *script_config_get_script_download_filename (struct t_repo_script *script);
+extern void script_config_hold (const char *name_with_extension);
+extern void script_config_unhold (const char *name_with_extension);
+extern int script_config_init ();
+extern int script_config_read ();
+extern int script_config_write ();
+extern void script_config_free ();
+
+#endif /* __WEECHAT_SCRIPT_CONFIG_H */
diff --git a/src/plugins/script/script-info.c b/src/plugins/script/script-info.c
new file mode 100644
index 000000000..c04959223
--- /dev/null
+++ b/src/plugins/script/script-info.c
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * script-info.c: info, infolist and hdata hooks for script plugin
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "../weechat-plugin.h"
+#include "script.h"
+#include "script-repo.h"
+
+
+/*
+ * script_info_get_infolist_cb: callback called when script infolist is asked
+ */
+
+struct t_infolist *
+script_info_get_infolist_cb (void *data, const char *infolist_name,
+ void *pointer, const char *arguments)
+{
+ struct t_infolist *ptr_infolist;
+ struct t_repo_script *ptr_script;
+
+ /* make C compiler happy */
+ (void) data;
+
+ if (!infolist_name || !infolist_name[0])
+ return NULL;
+
+ if (weechat_strcasecmp (infolist_name, "script_script") == 0)
+ {
+ if (pointer && !script_repo_script_valid (pointer))
+ return NULL;
+
+ ptr_infolist = weechat_infolist_new ();
+ if (ptr_infolist)
+ {
+ if (pointer)
+ {
+ /* build list with only one script */
+ if (!script_repo_add_to_infolist (ptr_infolist, pointer))
+ {
+ weechat_infolist_free (ptr_infolist);
+ return NULL;
+ }
+ return ptr_infolist;
+ }
+ else
+ {
+ /* build list with all scripts matching arguments */
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (!arguments || !arguments[0]
+ || weechat_string_match (ptr_script->name_with_extension,
+ arguments, 0))
+ {
+ if (!script_repo_add_to_infolist (ptr_infolist, ptr_script))
+ {
+ weechat_infolist_free (ptr_infolist);
+ return NULL;
+ }
+ }
+ }
+ return ptr_infolist;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+/*
+ * script_info_init: initialize info, infolist and hdata hooks for script plugin
+ */
+
+void
+script_info_init ()
+{
+ /* infolist hooks */
+ weechat_hook_infolist ("script_script",
+ N_("list of scripts"),
+ N_("script pointer (optional)"),
+ N_("script name with extension (can start or end with \"*\" as wildcard) (optional)"),
+ &script_info_get_infolist_cb, NULL);
+
+ /* hdata hooks */
+ weechat_hook_hdata ("script_script", N_("scripts from repository"),
+ &script_repo_hdata_script_cb, NULL);
+}
diff --git a/src/plugins/script/script-info.h b/src/plugins/script/script-info.h
new file mode 100644
index 000000000..2e2811d90
--- /dev/null
+++ b/src/plugins/script/script-info.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __WEECHAT_SCRIPT_INFO_H
+#define __WEECHAT_SCRIPT_INFO_H 1
+
+extern void script_info_init ();
+
+#endif /* __WEECHAT_SCRIPT_INFO_H */
diff --git a/src/plugins/script/script-repo.c b/src/plugins/script/script-repo.c
new file mode 100644
index 000000000..12a326c6e
--- /dev/null
+++ b/src/plugins/script/script-repo.c
@@ -0,0 +1,1369 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * script-repo.c: download and read repository file (plugins.xml.gz)
+ */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <stdio.h>
+#include <time.h>
+#include <zlib.h>
+#include <gcrypt.h>
+
+#include "../weechat-plugin.h"
+#include "script.h"
+#include "script-repo.h"
+#include "script-action.h"
+#include "script-buffer.h"
+#include "script-config.h"
+
+
+struct t_repo_script *repo_scripts = NULL;
+struct t_repo_script *last_repo_script = NULL;
+int script_repo_count = 0;
+int script_repo_count_displayed = 0;
+struct t_hashtable *script_repo_max_length_field = NULL;
+char *script_repo_filter = NULL;
+
+
+/*
+ * script_repo_script_valid: check if a script pointer exists
+ * return 1 if script exists
+ * 0 if script is not found
+ */
+
+int
+script_repo_script_valid (struct t_repo_script *script)
+{
+ struct t_repo_script *ptr_script;
+
+ if (!script)
+ return 0;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (ptr_script == script)
+ return 1;
+ }
+
+ /* script not found */
+ return 0;
+}
+
+/*
+ * script_repo_search_displayed_by_number: search a script displayed by number
+ * (first script displayed is 0)
+ */
+
+struct t_repo_script *
+script_repo_search_displayed_by_number (int number)
+{
+ struct t_repo_script *ptr_script;
+ int i;
+
+ if (number < 0)
+ return NULL;
+
+ i = 0;
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (ptr_script->displayed)
+ {
+ if (i == number)
+ return ptr_script;
+ i++;
+ }
+ }
+
+ /* script not found */
+ return NULL;
+}
+
+/*
+ * script_repo_search_by_name: search a script by name
+ * (example: "iset")
+ */
+
+struct t_repo_script *
+script_repo_search_by_name (const char *name)
+{
+ struct t_repo_script *ptr_script;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (strcmp (ptr_script->name, name) == 0)
+ return ptr_script;
+ }
+
+ /* script not found */
+ return NULL;
+}
+
+/*
+ * script_repo_search_by_name_ext: search a script by name/extension
+ * (example: "iset.pl")
+ */
+
+struct t_repo_script *
+script_repo_search_by_name_ext (const char *name_with_extension)
+{
+ struct t_repo_script *ptr_script;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (strcmp (ptr_script->name_with_extension, name_with_extension) == 0)
+ return ptr_script;
+ }
+
+ /* script not found */
+ return NULL;
+}
+
+/*
+ * script_repo_get_status_for_display: get status for display
+ * list is the codes of status to display
+ * (exemple: "*iHrN" for all status)
+ */
+
+const char *
+script_repo_get_status_for_display (struct t_repo_script *script,
+ const char *list,
+ int collapse)
+{
+ static char str_status[128];
+ const char *ptr_list;
+ char str_space[2];
+
+ str_space[0] = (collapse) ? '\0' : ' ';
+ str_space[1] = '\0';
+
+ str_status[0] = '\0';
+
+ for (ptr_list = list; ptr_list[0]; ptr_list++)
+ {
+ switch (ptr_list[0])
+ {
+ case '*':
+ strcat (str_status, weechat_color (weechat_config_string (script_config_color_status_popular)));
+ strcat (str_status, (script && (script->popularity > 0)) ? "*" : str_space);
+ break;
+ case 'i':
+ strcat (str_status, weechat_color (weechat_config_string (script_config_color_status_installed)));
+ strcat (str_status, (script && (script->status & SCRIPT_STATUS_INSTALLED)) ? "i" : str_space);
+ break;
+ case '?':
+ strcat (str_status, weechat_color (weechat_config_string (script_config_color_status_unknown)));
+ strcat (str_status, (script) ? str_space : "?");
+ break;
+ case 'H':
+ strcat (str_status, weechat_color (weechat_config_string (script_config_color_status_held)));
+ strcat (str_status, (script && (script->status & SCRIPT_STATUS_HELD)) ? "H" : str_space);
+ break;
+ case 'r':
+ strcat (str_status, weechat_color (weechat_config_string (script_config_color_status_running)));
+ strcat (str_status, (script && (script->status & SCRIPT_STATUS_RUNNING)) ? "r" : str_space);
+ break;
+ case 'N':
+ strcat (str_status, weechat_color (weechat_config_string (script_config_color_status_obsolete)));
+ strcat (str_status, (script && (script->status & SCRIPT_STATUS_NEW_VERSION)) ? "N" : str_space);
+ break;
+ }
+ }
+
+ return str_status;
+}
+
+/*
+ * script_repo_alloc: allocate a script structure
+ */
+
+struct t_repo_script *
+script_repo_alloc ()
+{
+ struct t_repo_script *new_script;
+
+ new_script = malloc (sizeof (*new_script));
+ if (new_script)
+ {
+ new_script->name = NULL;
+ new_script->name_with_extension = NULL;
+ new_script->language = -1;
+ new_script->author = NULL;
+ new_script->mail = NULL;
+ new_script->version = NULL;
+ new_script->license = NULL;
+ new_script->description = NULL;
+ new_script->tags = NULL;
+ new_script->requirements = NULL;
+ new_script->min_weechat = NULL;
+ new_script->max_weechat = NULL;
+ new_script->md5sum = NULL;
+ new_script->url = NULL;
+ new_script->popularity = 0;
+ new_script->date_added = 0;
+ new_script->date_updated = 0;
+ new_script->status = 0;
+ new_script->version_loaded = NULL;
+ new_script->displayed = 1;
+ new_script->install_order = 0;
+ new_script->prev_script = NULL;
+ new_script->next_script = NULL;
+ }
+
+ return new_script;
+}
+
+/*
+ * script_repo_compare_scripts: compare two scripts using sort key(s)
+ * (from option script.look.sort)
+ */
+
+int
+script_repo_compare_scripts (struct t_repo_script *script1,
+ struct t_repo_script *script2)
+{
+ const char *ptr_sort;
+ int cmp, reverse;
+
+ reverse = 1;
+ ptr_sort = weechat_config_string (script_config_look_sort);
+ while (ptr_sort[0])
+ {
+ cmp = 0;
+ switch (ptr_sort[0])
+ {
+ case '-': /* reverse order */
+ reverse = -1;
+ break;
+ case 'a': /* author */
+ cmp = strcmp (script1->author, script2->author);
+ break;
+ case 'd': /* date added */
+ if (script1->date_added > script2->date_added)
+ cmp = -1;
+ else if (script1->date_added < script2->date_added)
+ cmp = 1;
+ break;
+ case 'e': /* extension */
+ cmp = strcmp (script_extension[script1->language],
+ script_extension[script2->language]);
+ break;
+ case 'i': /* status "installed" */
+ if ((script1->status & SCRIPT_STATUS_INSTALLED)
+ && !(script2->status & SCRIPT_STATUS_INSTALLED))
+ cmp = -1;
+ else if (!(script1->status & SCRIPT_STATUS_INSTALLED)
+ && (script2->status & SCRIPT_STATUS_INSTALLED))
+ cmp = 1;
+ break;
+ case 'l': /* language */
+ cmp = strcmp (script_language[script1->language],
+ script_language[script2->language]);
+ break;
+ case 'n': /* name */
+ cmp = strcmp (script1->name, script2->name);
+ break;
+ case 'o': /* status "new version" (script obsolete) */
+ if ((script1->status & SCRIPT_STATUS_NEW_VERSION)
+ && !(script2->status & SCRIPT_STATUS_NEW_VERSION))
+ cmp = -1;
+ else if (!(script1->status & SCRIPT_STATUS_NEW_VERSION)
+ && (script2->status & SCRIPT_STATUS_NEW_VERSION))
+ cmp = 1;
+ break;
+ case 'p': /* popularity */
+ if (script1->popularity > script2->popularity)
+ cmp = -1;
+ else if (script1->popularity < script2->popularity)
+ cmp = 1;
+ break;
+ case 'r': /* status "running" */
+ if ((script1->status & SCRIPT_STATUS_RUNNING)
+ && !(script2->status & SCRIPT_STATUS_RUNNING))
+ cmp = -1;
+ else if (!(script1->status & SCRIPT_STATUS_RUNNING)
+ && (script2->status & SCRIPT_STATUS_RUNNING))
+ cmp = 1;
+ break;
+ case 'u': /* date updated */
+ if (script1->date_updated > script2->date_updated)
+ cmp = -1;
+ else if (script1->date_updated < script2->date_updated)
+ cmp = 1;
+ break;
+ default:
+ reverse = 1;
+ break;
+ }
+ if (cmp != 0)
+ return cmp * reverse;
+ ptr_sort++;
+ }
+
+ return 0;
+}
+
+/*
+ * script_repo_find_pos: find position for script in list
+ */
+
+struct t_repo_script *
+script_repo_find_pos (struct t_repo_script *script)
+{
+ struct t_repo_script *ptr_script;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (script_repo_compare_scripts (ptr_script, script) > 0)
+ return ptr_script;
+ }
+
+ /* position not found, add to the end */
+ return NULL;
+}
+
+/*
+ * script_repo_set_max_length_field: set max length for a field in hashtable
+ * "script_repo_max_length_field"
+ */
+
+void
+script_repo_set_max_length_field (const char *field, int length)
+{
+ int *value;
+
+ value = weechat_hashtable_get (script_repo_max_length_field, field);
+ if (!value || (length > *value))
+ weechat_hashtable_set (script_repo_max_length_field, field, &length);
+}
+
+/*
+ * script_repo_add: add script to list of scripts
+ */
+
+void
+script_repo_add (struct t_repo_script *script)
+{
+ struct t_repo_script *ptr_script;
+
+ ptr_script = script_repo_find_pos (script);
+ if (ptr_script)
+ {
+ /* insert script before script found */
+ script->prev_script = ptr_script->prev_script;
+ script->next_script = ptr_script;
+ if (ptr_script->prev_script)
+ (ptr_script->prev_script)->next_script = script;
+ else
+ repo_scripts = script;
+ ptr_script->prev_script = script;
+ }
+ else
+ {
+ /* add script to the end */
+ script->prev_script = last_repo_script;
+ script->next_script = NULL;
+ if (repo_scripts)
+ last_repo_script->next_script = script;
+ else
+ repo_scripts = script;
+ last_repo_script = script;
+ }
+
+ /* set max length for fields */
+ if (script->name)
+ script_repo_set_max_length_field ("N", weechat_utf8_strlen_screen (script->name));
+ if (script->name_with_extension)
+ script_repo_set_max_length_field ("n", weechat_utf8_strlen_screen (script->name_with_extension));
+ if (script->language >= 0)
+ {
+ script_repo_set_max_length_field ("l", weechat_utf8_strlen_screen (script_language[script->language]));
+ script_repo_set_max_length_field ("e", weechat_utf8_strlen_screen (script_extension[script->language]));
+ }
+ if (script->author)
+ script_repo_set_max_length_field ("a", weechat_utf8_strlen_screen (script->author));
+ if (script->version)
+ script_repo_set_max_length_field ("v", weechat_utf8_strlen_screen (script->version));
+ if (script->version_loaded)
+ script_repo_set_max_length_field ("V", weechat_utf8_strlen_screen (script->version_loaded));
+ if (script->license)
+ script_repo_set_max_length_field ("L", weechat_utf8_strlen_screen (script->license));
+ if (script->description)
+ script_repo_set_max_length_field ("d", weechat_utf8_strlen_screen (script->description));
+ if (script->tags)
+ script_repo_set_max_length_field ("t", weechat_utf8_strlen_screen (script->tags));
+ if (script->requirements)
+ script_repo_set_max_length_field ("r", weechat_utf8_strlen_screen (script->requirements));
+ if (script->min_weechat)
+ script_repo_set_max_length_field ("w", weechat_utf8_strlen_screen (script->min_weechat));
+ if (script->max_weechat)
+ script_repo_set_max_length_field ("W", weechat_utf8_strlen_screen (script->max_weechat));
+
+ script_repo_count++;
+ if (script->displayed)
+ script_repo_count_displayed++;
+}
+
+/*
+ * script_repo_free: free data in script
+ */
+
+void
+script_repo_free (struct t_repo_script *script)
+{
+ if (script->name)
+ free (script->name);
+ if (script->name_with_extension)
+ free (script->name_with_extension);
+ if (script->author)
+ free (script->author);
+ if (script->mail)
+ free (script->mail);
+ if (script->version)
+ free (script->version);
+ if (script->license)
+ free (script->license);
+ if (script->description)
+ free (script->description);
+ if (script->tags)
+ free (script->tags);
+ if (script->requirements)
+ free (script->requirements);
+ if (script->min_weechat)
+ free (script->min_weechat);
+ if (script->max_weechat)
+ free (script->max_weechat);
+ if (script->md5sum)
+ free (script->md5sum);
+ if (script->url)
+ free (script->url);
+ if (script->version_loaded)
+ free (script->version_loaded);
+
+ free (script);
+ }
+
+/*
+ * script_repo_remove: remove a script from list
+ */
+
+void
+script_repo_remove (struct t_repo_script *script)
+{
+ struct t_repo_script *new_repo_scripts;
+
+ /* remove script from list */
+ if (last_repo_script == script)
+ last_repo_script = script->prev_script;
+ if (script->prev_script)
+ {
+ (script->prev_script)->next_script = script->next_script;
+ new_repo_scripts = repo_scripts;
+ }
+ else
+ new_repo_scripts = script->next_script;
+ if (script->next_script)
+ (script->next_script)->prev_script = script->prev_script;
+
+ /* free data */
+ if (script->displayed)
+ script_repo_count_displayed--;
+ script_repo_free (script);
+
+ repo_scripts = new_repo_scripts;
+
+ script_repo_count--;
+
+ if (script_buffer_selected_line >= script_repo_count_displayed)
+ {
+ script_buffer_selected_line = (script_repo_count_displayed == 0) ?
+ 0 : script_repo_count_displayed - 1;
+ }
+}
+
+/*
+ * script_repo_remove_all: remove all scripts from list
+ */
+
+void
+script_repo_remove_all ()
+{
+ while (repo_scripts)
+ {
+ script_repo_remove (repo_scripts);
+ }
+ if (script_repo_max_length_field)
+ {
+ weechat_hashtable_free (script_repo_max_length_field);
+ script_repo_max_length_field = NULL;
+ }
+}
+
+/*
+ * script_repo_script_is_held: return 1 if script is held, 0 otherwise
+ */
+
+int
+script_repo_script_is_held (struct t_repo_script *script)
+{
+ const char *hold;
+ char *pos;
+ int length;
+
+ hold = weechat_config_string (script_config_scripts_hold);
+ length = strlen (script->name_with_extension);
+ pos = strstr (hold, script->name_with_extension);
+ while (pos)
+ {
+ if (((pos == hold) || (*(pos - 1) == ','))
+ && ((pos[length] == ',') || !pos[length]))
+ {
+ /* script held */
+ return 1;
+ }
+ pos = strstr (pos + 1, script->name_with_extension);
+ }
+
+ /* script not held */
+ return 0;
+}
+
+/*
+ * script_repo_md5sum_file: return MD5 checksum for content of a file
+ * Note: result has to be free() after use
+ */
+
+char *
+script_repo_md5sum_file (const char *filename)
+{
+ struct stat st;
+ FILE *file;
+ char md5sum[512];
+ const char *hexa = "0123456789abcdef";
+ unsigned char *data, *result;
+ gcry_md_hd_t hd;
+ int mdlen, i;
+
+ md5sum[0] = '\0';
+
+ if (stat (filename, &st) == -1)
+ return NULL;
+
+ data = malloc (st.st_size);
+ if (!data)
+ return NULL;
+
+ file = fopen (filename, "r");
+ if ((int)fread (data, 1, st.st_size, file) < st.st_size)
+ {
+ free (data);
+ return NULL;
+ }
+ fclose (file);
+
+ gcry_md_open (&hd, GCRY_MD_MD5, 0);
+ mdlen = gcry_md_get_algo_dlen (GCRY_MD_MD5);
+ gcry_md_write (hd, data, st.st_size);
+ result = gcry_md_read (hd, GCRY_MD_MD5);
+ for (i = 0; i < mdlen; i++)
+ {
+ md5sum[i * 2] = hexa[(result[i] & 0xFF) / 16];
+ md5sum[(i * 2) + 1] = hexa[(result[i] & 0xFF) % 16];
+ }
+ md5sum[((mdlen - 1) * 2) + 2] = '\0';
+ gcry_md_close (hd);
+
+ free (data);
+
+ return strdup (md5sum);
+}
+
+/*
+ * script_repo_update_status: update status of a script, which are:
+ * - script installed?
+ * - script running?
+ * - new version available?
+ */
+
+void
+script_repo_update_status (struct t_repo_script *script)
+{
+ const char *weechat_home, *version;
+ char *filename, *md5sum;
+ struct stat st;
+ int length;
+ struct t_repo_script *ptr_script;
+
+ script->status = 0;
+ md5sum = NULL;
+
+ /* check if script is installed (file found on disk) */
+ weechat_home = weechat_info_get ("weechat_dir", NULL);
+ length = strlen (weechat_home) + strlen (script->name_with_extension) + 64;
+ filename = malloc (length);
+ if (filename)
+ {
+ snprintf (filename, length, "%s/%s/autoload/%s",
+ weechat_home,
+ script_language[script->language],
+ script->name_with_extension);
+ if (stat (filename, &st) == 0)
+ {
+ script->status |= SCRIPT_STATUS_INSTALLED;
+ md5sum = script_repo_md5sum_file (filename);
+ }
+ else
+ {
+ snprintf (filename, length, "%s/%s/%s",
+ weechat_home,
+ script_language[script->language],
+ script->name_with_extension);
+ if (stat (filename, &st) == 0)
+ {
+ script->status |= SCRIPT_STATUS_INSTALLED;
+ md5sum = script_repo_md5sum_file (filename);
+ }
+ }
+ free (filename);
+ }
+
+ /* check if script is held */
+ if (script_repo_script_is_held (script))
+ script->status |= SCRIPT_STATUS_HELD;
+
+ /* check if script is running (loaded) */
+ version = weechat_hashtable_get (script_loaded, script->name_with_extension);
+ if (version)
+ {
+ script->status |= SCRIPT_STATUS_RUNNING;
+ if (script->version_loaded)
+ free (script->version_loaded);
+ script->version_loaded = strdup (version);
+ }
+ else
+ {
+ if (script->version_loaded)
+ {
+ free (script->version_loaded);
+ script->version_loaded = NULL;
+ }
+ }
+
+ /* check if script has new version (script is obsolete) */
+ if (md5sum && script->md5sum && (strcmp (script->md5sum, md5sum) != 0))
+ script->status |= SCRIPT_STATUS_NEW_VERSION;
+
+ /* recompute max length for version loaded (for display) */
+ if (script_repo_max_length_field)
+ {
+ length = 0;
+ weechat_hashtable_set (script_repo_max_length_field, "V", &length);
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ if (ptr_script->version_loaded)
+ script_repo_set_max_length_field ("V", weechat_utf8_strlen_screen (ptr_script->version_loaded));
+ }
+ }
+
+ if (md5sum)
+ free (md5sum);
+}
+
+/*
+ * script_repo_update_status_all: update status of all scripts
+ */
+
+void
+script_repo_update_status_all ()
+{
+ struct t_repo_script *ptr_script;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ script_repo_update_status (ptr_script);
+ }
+}
+
+/*
+ * script_repo_file_exists: return 1 if repository file (plugins.xml.gz) exists
+ * otherwise 0
+ */
+
+int
+script_repo_file_exists ()
+{
+ char *filename;
+ int rc;
+ struct stat st;
+
+ filename = script_config_get_xml_filename();
+ if (!filename)
+ return 0;
+
+ rc = 0;
+ if (stat (filename, &st) == 0)
+ rc = 1;
+
+ free (filename);
+
+ return rc;
+}
+
+/*
+ * script_repo_file_is_uptodate: return 1 if repository file (plugins.xml.gz)
+ * is up-to-date (file exists and is not outdated)
+ * otherwise 0 (file has to be downloaded)
+ */
+
+int
+script_repo_file_is_uptodate ()
+{
+ char *filename;
+ struct stat st;
+ int cache_expire;
+ time_t current_time;
+
+ cache_expire = weechat_config_integer (script_config_scripts_cache_expire);
+
+ /* cache always expires? => NOT up-to-date */
+ if (cache_expire == 0)
+ return 0;
+
+ filename = script_config_get_xml_filename ();
+
+ /* filename not found? => NOT up-to-date */
+ if (!filename)
+ return 0;
+
+ /* file does not exist? => NOT up-to-date */
+ if (stat (filename, &st) == -1)
+ {
+ free (filename);
+ return 0;
+ }
+
+ /* cache never expires? => OK, up-to-date! */
+ if (cache_expire < 0)
+ {
+ free (filename);
+ return 1;
+ }
+
+ current_time = time (NULL);
+
+ /* cache has expired? => NOT up-to-date */
+ if (current_time > st.st_mtime + (cache_expire * 60))
+ {
+ free (filename);
+ return 0;
+ }
+
+ /* OK, up-to-date! */
+ free (filename);
+ return 1;
+}
+
+/*
+ * script_repo_file_read: read scripts in repository file (plugins.xml.gz)
+ * return 1 if ok, 0 if error
+ */
+
+int
+script_repo_file_read (int quiet)
+{
+ char *filename, *ptr_line, line[4096], *pos, *pos2, *pos3;
+ char *name, *value1, *value2, *value3, *value, *error;
+ const char *version;
+ gzFile file;
+ struct t_repo_script *script;
+ int version_number, version_ok, script_ok, length;
+ struct tm tm_script;
+
+ script_get_loaded_scripts ();
+
+ script_repo_remove_all ();
+
+ if (!script_repo_max_length_field)
+ {
+ script_repo_max_length_field = weechat_hashtable_new (16,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_INTEGER,
+ NULL,
+ NULL);
+ }
+ else
+ weechat_hashtable_remove_all (script_repo_max_length_field);
+
+ if (script_repo_filter)
+ {
+ free (script_repo_filter);
+ script_repo_filter = NULL;
+ }
+
+ version = weechat_info_get ("version", NULL);
+ version_number = weechat_util_version_number (version);
+
+ filename = script_config_get_xml_filename ();
+ if (!filename)
+ {
+ weechat_printf (NULL, _("%s%s: error reading list of scripts"),
+ weechat_prefix ("error"),
+ SCRIPT_PLUGIN_NAME);
+ return 0;
+ }
+
+ script = NULL;
+ file = gzopen (filename, "r");
+ free (filename);
+ if (!file)
+ {
+ weechat_printf (NULL, _("%s%s: error reading list of scripts"),
+ weechat_prefix ("error"),
+ SCRIPT_PLUGIN_NAME);
+ return 0;
+ }
+
+ while (!gzeof (file))
+ {
+ ptr_line = gzgets (file, line, sizeof (line) - 1);
+ if (ptr_line)
+ {
+ if (strstr (ptr_line, "<plugin id="))
+ {
+ script = script_repo_alloc ();
+ }
+ else if (strstr (ptr_line, "</plugin>"))
+ {
+ if (script)
+ {
+ script_ok = 0;
+ if (script->name && (script->language >= 0))
+ {
+ version_ok = 1;
+ if (script->min_weechat)
+ {
+ if (weechat_util_version_number (script->min_weechat) > version_number)
+ version_ok = 0;
+ }
+ if (version_ok && script->max_weechat)
+ {
+ if (weechat_util_version_number (script->max_weechat) < version_number)
+ version_ok = 0;
+ }
+ if (version_ok)
+ {
+ length = strlen (script->name) + 1 +
+ strlen (script_extension[script->language]) + 1;
+ script->name_with_extension = malloc (length);
+ if (script->name_with_extension)
+ {
+ snprintf (script->name_with_extension,
+ length,
+ "%s.%s",
+ script->name,
+ script_extension[script->language]);
+ }
+ script_repo_update_status (script);
+ script_repo_add (script);
+ script_ok = 1;
+ }
+ }
+ if (!script_ok)
+ {
+ script_repo_free (script);
+ }
+ script = NULL;
+ }
+ }
+ else if (script)
+ {
+ pos = strchr (ptr_line, '<');
+ if (pos)
+ {
+ pos2 = strchr (pos + 1, '>');
+ if (pos2 && (pos2 > pos + 1))
+ {
+ pos3 = strstr (pos2 + 1, "</");
+ if (pos3 && (pos3 > pos2 + 1))
+ {
+ name = weechat_strndup (pos + 1, pos2 - pos - 1);
+ value1 = weechat_strndup (pos2 + 1, pos3 - pos2 - 1);
+ value2 = weechat_string_replace (value1, "&amp;", "&");
+ value3 = weechat_string_replace (value2, "&gt;", ">");
+ value = weechat_string_replace (value3, "&lt;", "<");
+ if (name && value)
+ {
+ if (strcmp (name, "name") == 0)
+ script->name = strdup (value);
+ else if (strcmp (name, "language") == 0)
+ script->language = script_language_search (value);
+ else if (strcmp (name, "author") == 0)
+ script->author = strdup (value);
+ else if (strcmp (name, "mail") == 0)
+ script->mail = strdup (value);
+ else if (strcmp (name, "version") == 0)
+ script->version = strdup (value);
+ else if (strcmp (name, "license") == 0)
+ script->license = strdup (value);
+ else if (strcmp (name, "desc_en") == 0)
+ script->description = strdup (value);
+ else if (strcmp (name, "tags") == 0)
+ script->tags = strdup (value);
+ else if (strcmp (name, "requirements") == 0)
+ script->requirements = strdup (value);
+ else if (strcmp (name, "min_weechat") == 0)
+ script->min_weechat = strdup (value);
+ else if (strcmp (name, "max_weechat") == 0)
+ script->max_weechat = strdup (value);
+ else if (strcmp (name, "md5sum") == 0)
+ script->md5sum = strdup (value);
+ else if (strcmp (name, "url") == 0)
+ script->url = strdup (value);
+ else if (strcmp (name, "popularity") == 0)
+ {
+ error = NULL;
+ script->popularity = (int)strtol (value,
+ &error,
+ 10);
+ if (!error || error[0])
+ script->popularity = 0;
+ }
+ else if (strcmp (name, "added") == 0)
+ {
+ /*
+ * initialize structure, because strptime
+ * does not do it
+ */
+ memset (&tm_script, 0, sizeof (tm_script));
+ error = strptime (value,
+ "%Y-%m-%d %H:%M:%S",
+ &tm_script);
+ if (error && !error[0])
+ script->date_added = mktime (&tm_script);
+ }
+ else if (strcmp (name, "updated") == 0)
+ {
+ /*
+ * initialize structure, because strptime
+ * does not do it
+ */
+ memset (&tm_script, 0, sizeof (tm_script));
+ error = strptime (value,
+ "%Y-%m-%d %H:%M:%S",
+ &tm_script);
+ if (error && !error[0])
+ script->date_updated = mktime (&tm_script);
+ }
+ }
+ if (name)
+ free (name);
+ if (value1)
+ free (value1);
+ if (value2)
+ free (value2);
+ if (value3)
+ free (value3);
+ if (value)
+ free (value);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ gzclose (file);
+
+ if (repo_scripts && !quiet)
+ {
+ weechat_printf (NULL,
+ _("%s: %d scripts for WeeChat %s"),
+ SCRIPT_PLUGIN_NAME, script_repo_count,
+ weechat_info_get ("version", NULL));
+ }
+
+ if (!repo_scripts)
+ {
+ weechat_printf (NULL,
+ _("%s%s: list of scripts is empty (repository file "
+ "is broken, or download has failed)"),
+ weechat_prefix ("error"),
+ SCRIPT_PLUGIN_NAME);
+ }
+
+ return 1;
+}
+
+/*
+ * script_repo_file_update_process_cb: callback called when list of scripts is
+ * downloaded
+ */
+
+int
+script_repo_file_update_process_cb (void *data, const char *command,
+ int return_code, const char *out,
+ const char *err)
+{
+ int quiet;
+
+ /* make C compiler happy */
+ (void) command;
+
+ quiet = (data == 0) ? 0 : 1;
+
+ if (return_code >= 0)
+ {
+ if ((err && err[0]) || (out && (strncmp (out, "error:", 6) == 0)))
+ {
+ weechat_printf (NULL,
+ _("%s%s: error downloading list of scripts: %s"),
+ weechat_prefix ("error"),
+ SCRIPT_PLUGIN_NAME,
+ (err && err[0]) ? err : out + 6);
+ return WEECHAT_RC_OK;
+ }
+
+ if (script_repo_file_read (quiet) && repo_scripts)
+ {
+ if (!script_action_run ())
+ script_buffer_refresh (1);
+ }
+ else
+ script_buffer_refresh (1);
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_repo_file_update: update repository file, and read it
+ */
+
+void
+script_repo_file_update (int quiet)
+{
+ char *filename, *url;
+ int length;
+ struct t_hashtable *options;
+
+ script_repo_remove_all ();
+
+ filename = script_config_get_xml_filename ();
+ if (!filename)
+ return;
+
+ options = weechat_hashtable_new (8,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_STRING,
+ NULL,
+ NULL);
+ if (options)
+ {
+ length = 4 + strlen (weechat_config_string (script_config_scripts_url)) + 1;
+ url = malloc (length);
+ if (url)
+ {
+ if (!quiet)
+ {
+ weechat_printf (NULL,
+ _("%s: downloading list of scripts..."),
+ SCRIPT_PLUGIN_NAME);
+ }
+
+ snprintf (url, length, "url:%s",
+ weechat_config_string (script_config_scripts_url));
+ weechat_hashtable_set (options, "file_out", filename);
+ weechat_hook_process_hashtable (url, options, 30000,
+ &script_repo_file_update_process_cb,
+ (quiet) ? (void *)1 : (void *)0);
+ free (url);
+ }
+ weechat_hashtable_free (options);
+ }
+
+ free (filename);
+}
+
+/*
+ * script_repo_match_search: return 1 if script is matching search string,
+ * otherwise 0
+ */
+
+int
+script_repo_match_search (struct t_repo_script *script, const char *search)
+{
+ char **words, **tags;
+ int num_words, num_tags, has_tag, match, i, j;
+
+ if (strcmp (search, "*") == 0)
+ return 1;
+
+ words = weechat_string_split (search, " ", 0, 0, &num_words);
+ tags = weechat_string_split ((script->tags) ? script->tags : "", ",", 0, 0,
+ &num_tags);
+ if (words)
+ {
+ for (i = 0; i < num_words; i++)
+ {
+ has_tag = 0;
+ if (tags)
+ {
+ for (j = 0; j < num_tags; j++)
+ {
+ if (weechat_strcasecmp (tags[j], words[i]) == 0)
+ {
+ has_tag = 1;
+ break;
+ }
+ }
+ }
+ if (!has_tag)
+ {
+ match = 0;
+ if (script->name_with_extension
+ && weechat_strcasestr (script->name_with_extension, words[i]))
+ match = 1;
+
+ if (!match && script->description
+ && weechat_strcasestr (script->description, words[i]))
+ match = 1;
+
+ if (!match && script->license
+ && weechat_strcasestr (script->license, words[i]))
+ match = 1;
+
+ if (!match && script->author
+ && weechat_strcasestr (script->author, words[i]))
+ match = 1;
+
+ if (!match)
+ {
+ weechat_string_free_split (words);
+ weechat_string_free_split (tags);
+ return 0;
+ }
+ }
+ }
+ }
+
+ if (words)
+ weechat_string_free_split (words);
+ if (tags)
+ weechat_string_free_split (tags);
+
+ return 1;
+}
+
+/*
+ * script_repo_filter_scripts: filter scripts (search string in
+ * name/description/tags) and mark scripts found as
+ * "displayed" (0 in displayed for non-matching
+ * scripts)
+ */
+
+void
+script_repo_filter_scripts (const char *search)
+{
+ struct t_repo_script *ptr_script;
+
+ if (script_repo_filter)
+ free (script_repo_filter);
+ script_repo_filter = strdup (search);
+
+ script_repo_count_displayed = 0;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ ptr_script->displayed = (script_repo_match_search (ptr_script, search));
+ if (ptr_script->displayed)
+ script_repo_count_displayed++;
+ }
+
+ script_buffer_refresh (1);
+}
+
+/*
+ * script_repo_hdata_script_cb: return hdata for script
+ */
+
+struct t_hdata *
+script_repo_hdata_script_cb (void *data, const char *hdata_name)
+{
+ struct t_hdata *hdata;
+
+ /* make C compiler happy */
+ (void) data;
+
+ hdata = weechat_hdata_new (hdata_name, "prev_script", "next_script");
+ if (hdata)
+ {
+ WEECHAT_HDATA_VAR(struct t_repo_script, name, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, name_with_extension, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, language, INTEGER, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, author, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, mail, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, version, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, license, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, description, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, tags, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, requirements, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, min_weechat, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, max_weechat, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, md5sum, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, url, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, popularity, INTEGER, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, date_added, TIME, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, date_updated, TIME, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, status, INTEGER, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, version_loaded, STRING, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, displayed, INTEGER, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, install_order, INTEGER, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_repo_script, prev_script, POINTER, NULL, hdata_name);
+ WEECHAT_HDATA_VAR(struct t_repo_script, next_script, POINTER, NULL, hdata_name);
+ WEECHAT_HDATA_LIST(repo_scripts);
+ WEECHAT_HDATA_LIST(last_repo_script);
+ }
+ return hdata;
+}
+
+/*
+ * script_repo_add_to_infolist: add a script in an infolist
+ * return 1 if ok, 0 if error
+ */
+
+int
+script_repo_add_to_infolist (struct t_infolist *infolist,
+ struct t_repo_script *script)
+{
+ struct t_infolist_item *ptr_item;
+
+ if (!infolist || !script)
+ return 0;
+
+ ptr_item = weechat_infolist_new_item (infolist);
+ if (!ptr_item)
+ return 0;
+
+ if (!weechat_infolist_new_var_string (ptr_item, "name", script->name))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "name_with_extension", script->name_with_extension))
+ return 0;
+ if (!weechat_infolist_new_var_integer (ptr_item, "language", script->language))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "author", script->author))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "mail", script->mail))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "version", script->version))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "license", script->license))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "description", script->description))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "tags", script->tags))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "requirements", script->requirements))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "min_weechat", script->min_weechat))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "max_weechat", script->max_weechat))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "md5sum", script->md5sum))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "url", script->url))
+ return 0;
+ if (!weechat_infolist_new_var_integer (ptr_item, "popularity", script->popularity))
+ return 0;
+ if (!weechat_infolist_new_var_time (ptr_item, "date_added", script->date_added))
+ return 0;
+ if (!weechat_infolist_new_var_time (ptr_item, "date_updated", script->date_updated))
+ return 0;
+ if (!weechat_infolist_new_var_integer (ptr_item, "status", script->status))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "version_loaded", script->version_loaded))
+ return 0;
+ if (!weechat_infolist_new_var_integer (ptr_item, "displayed", script->displayed))
+ return 0;
+ if (!weechat_infolist_new_var_integer (ptr_item, "install_order", script->install_order))
+ return 0;
+
+ return 1;
+}
+
+/*
+ * script_repo_print_log: print script infos in log (usually for crash dump)
+ */
+
+void
+script_repo_print_log ()
+{
+ struct t_repo_script *ptr_script;
+
+ for (ptr_script = repo_scripts; ptr_script;
+ ptr_script = ptr_script->next_script)
+ {
+ weechat_log_printf ("");
+ weechat_log_printf ("[script (addr:0x%lx)]", ptr_script);
+ weechat_log_printf (" name. . . . . . . . . : '%s'", ptr_script->name);
+ weechat_log_printf (" name_with_extension . : '%s'", ptr_script->name_with_extension);
+ weechat_log_printf (" language. . . . . . . : %d", ptr_script->language);
+ weechat_log_printf (" author. . . . . . . . : '%s'", ptr_script->author);
+ weechat_log_printf (" mail. . . . . . . . . : '%s'", ptr_script->mail);
+ weechat_log_printf (" version . . . . . . . : '%s'", ptr_script->version);
+ weechat_log_printf (" license . . . . . . . : '%s'", ptr_script->license);
+ weechat_log_printf (" description . . . . . : '%s'", ptr_script->description);
+ weechat_log_printf (" tags. . . . . . . . . : '%s'", ptr_script->tags);
+ weechat_log_printf (" requirements. . . . . : '%s'", ptr_script->requirements);
+ weechat_log_printf (" min_weechat . . . . . : '%s'", ptr_script->min_weechat);
+ weechat_log_printf (" max_weechat . . . . . : '%s'", ptr_script->max_weechat);
+ weechat_log_printf (" md5sum. . . . . . . . : '%s'", ptr_script->md5sum);
+ weechat_log_printf (" url . . . . . . . . . : '%s'", ptr_script->url);
+ weechat_log_printf (" popularity. . . . . . : %d", ptr_script->popularity);
+ weechat_log_printf (" date_added. . . . . . : %ld", ptr_script->date_added);
+ weechat_log_printf (" date_updated. . . . . : %ld", ptr_script->date_updated);
+ weechat_log_printf (" status. . . . . . . . : %d (%s%s%s%s )",
+ ptr_script->status,
+ (ptr_script->status & SCRIPT_STATUS_INSTALLED) ? " installed": "",
+ (ptr_script->status & SCRIPT_STATUS_HELD) ? " held": "",
+ (ptr_script->status & SCRIPT_STATUS_RUNNING) ? " running": "",
+ (ptr_script->status & SCRIPT_STATUS_NEW_VERSION) ? " new_version": "");
+ weechat_log_printf (" version_loaded. . . . : '%s'", ptr_script->version_loaded);
+ weechat_log_printf (" displayed . . . . . . : %d", ptr_script->displayed);
+ weechat_log_printf (" install_order . . . . : %d", ptr_script->install_order);
+ weechat_log_printf (" prev_script . . . . . : 0x%lx", ptr_script->prev_script);
+ weechat_log_printf (" next_script . . . . . : 0x%lx", ptr_script->next_script);
+ }
+}
diff --git a/src/plugins/script/script-repo.h b/src/plugins/script/script-repo.h
new file mode 100644
index 000000000..9bd05e6c7
--- /dev/null
+++ b/src/plugins/script/script-repo.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __WEECHAT_SCRIPT_REPO_H
+#define __WEECHAT_SCRIPT_REPO_H 1
+
+/* status for script */
+#define SCRIPT_STATUS_INSTALLED 1
+#define SCRIPT_STATUS_HELD 2
+#define SCRIPT_STATUS_RUNNING 4
+#define SCRIPT_STATUS_NEW_VERSION 8
+
+struct t_repo_script
+{
+ char *name; /* script name */
+ char *name_with_extension; /* script name with extension */
+ int language; /* language index */
+ char *author; /* author */
+ char *mail; /* author's mail */
+ char *version; /* plugin version */
+ char *license; /* license */
+ char *description; /* description */
+ char *tags; /* comma-separated list of tags */
+ char *requirements; /* requirements */
+ char *min_weechat; /* min WeeChat version */
+ char *max_weechat; /* max WeeChat version */
+ char *md5sum; /* md5sum of script content */
+ char *url; /* URL to download script */
+ int popularity; /* >0 for popular scripts only */
+ time_t date_added; /* date added */
+ time_t date_updated; /* date updated */
+ int status; /* installed/running/new version */
+ char *version_loaded; /* version of script loaded */
+ int displayed; /* script displayed? */
+ int install_order; /* order for install script (if >0)*/
+ struct t_repo_script *prev_script; /* link to previous script */
+ struct t_repo_script *next_script; /* link to next script */
+};
+
+extern struct t_repo_script *repo_scripts;
+extern struct t_repo_script *last_repo_script;
+extern int script_repo_count, script_repo_count_displayed;
+struct t_hashtable *script_repo_max_length_field;
+extern char *script_repo_filter;
+
+extern int script_repo_script_valid (struct t_repo_script *script);
+extern struct t_repo_script *script_repo_search_displayed_by_number (int number);
+extern struct t_repo_script *script_repo_search_by_name (const char *name);
+extern struct t_repo_script *script_repo_search_by_name_ext (const char *name_with_extension);
+extern const char *script_repo_get_status_for_display (struct t_repo_script *script,
+ const char *list,
+ int collapse);
+extern void script_repo_remove_all ();
+extern void script_repo_update_status (struct t_repo_script *script);
+extern void script_repo_update_status_all ();
+extern int script_repo_file_exists ();
+extern int script_repo_file_is_uptodate ();
+extern int script_repo_file_read (int quiet);
+extern void script_repo_file_update (int quiet);
+extern void script_repo_filter_scripts (const char *search);
+extern struct t_hdata *script_repo_hdata_script_cb (void *data,
+ const char *hdata_name);
+extern int script_repo_add_to_infolist (struct t_infolist *infolist,
+ struct t_repo_script *script);
+extern void script_repo_print_log ();
+
+#endif /* __WEECHAT_SCRIPT_REPO_H */
diff --git a/src/plugins/script/script.c b/src/plugins/script/script.c
new file mode 100644
index 000000000..a52f9d670
--- /dev/null
+++ b/src/plugins/script/script.c
@@ -0,0 +1,292 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * script.c: scripts manager for WeeChat
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include <libgen.h>
+
+#include "../weechat-plugin.h"
+#include "script.h"
+#include "script-buffer.h"
+#include "script-command.h"
+#include "script-completion.h"
+#include "script-config.h"
+#include "script-info.h"
+#include "script-repo.h"
+
+
+WEECHAT_PLUGIN_NAME(SCRIPT_PLUGIN_NAME);
+WEECHAT_PLUGIN_DESCRIPTION(N_("Scripts manager"));
+WEECHAT_PLUGIN_AUTHOR("Sebastien Helleu <flashcode@flashtux.org>");
+WEECHAT_PLUGIN_VERSION(WEECHAT_VERSION);
+WEECHAT_PLUGIN_LICENSE(WEECHAT_LICENSE);
+
+struct t_weechat_plugin *weechat_script_plugin = NULL;
+
+char *script_language[] = { "guile", "lua", "perl", "python", "ruby", "tcl", NULL };
+char *script_extension[] = { "scm", "lua", "pl", "py", "rb", "tcl", NULL };
+
+struct t_hashtable *script_loaded = NULL;
+struct t_hook *script_timer_refresh = NULL;
+
+
+/*
+ * script_language_search: search language and return index
+ * return -1 if not found
+ */
+
+int
+script_language_search (const char *language)
+{
+ int i;
+
+ for (i = 0; script_language[i]; i++)
+ {
+ if (strcmp (script_language[i], language) == 0)
+ return i;
+ }
+
+ /* language not found */
+ return -1;
+}
+
+/*
+ * script_language_search_by_extension: search language by extension and return
+ * index
+ * return -1 if not found
+ */
+
+int
+script_language_search_by_extension (const char *extension)
+{
+ int i;
+
+ for (i = 0; script_extension[i]; i++)
+ {
+ if (strcmp (script_extension[i], extension) == 0)
+ return i;
+ }
+
+ /* extension not found */
+ return -1;
+}
+
+/*
+ * script_get_loaded_scripts: get loaded scripts (in hashtable)
+ */
+
+void
+script_get_loaded_scripts ()
+{
+ int i;
+ char hdata_name[128], *filename, *ptr_base_name;
+ const char *ptr_filename;
+ struct t_hdata *hdata;
+ void *ptr_script;
+
+ if (!script_loaded)
+ {
+ script_loaded = weechat_hashtable_new (16,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_STRING,
+ NULL,
+ NULL);
+ }
+ else
+ weechat_hashtable_remove_all (script_loaded);
+
+ for (i = 0; script_language[i]; i++)
+ {
+ snprintf (hdata_name, sizeof (hdata_name),
+ "%s_script", script_language[i]);
+ hdata = weechat_hdata_get (hdata_name);
+ ptr_script = weechat_hdata_get_list (hdata, "scripts");
+ while (ptr_script)
+ {
+ ptr_filename = weechat_hdata_string (hdata, ptr_script, "filename");
+ if (ptr_filename)
+ {
+ filename = strdup (ptr_filename);
+ if (filename)
+ {
+ ptr_base_name = basename (filename);
+ weechat_hashtable_set (script_loaded,
+ ptr_base_name,
+ weechat_hdata_string (hdata, ptr_script,
+ "version"));
+ free (filename);
+ }
+ }
+ ptr_script = weechat_hdata_move (hdata, ptr_script, 1);
+ }
+ }
+}
+
+/*
+ * script_debug_dump_cb: callback for "debug_dump" signal
+ */
+
+int
+script_debug_dump_cb (void *data, const char *signal, const char *type_data,
+ void *signal_data)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) signal;
+ (void) type_data;
+
+ if (!signal_data
+ || (weechat_strcasecmp ((char *)signal_data, SCRIPT_PLUGIN_NAME) == 0))
+ {
+ weechat_log_printf ("");
+ weechat_log_printf ("***** \"%s\" plugin dump *****",
+ weechat_plugin->name);
+
+ script_repo_print_log ();
+
+ weechat_log_printf ("");
+ weechat_log_printf ("***** End of \"%s\" plugin dump *****",
+ weechat_plugin->name);
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_timer_refresh_cb: callback for timer used to refresh list of scripts
+ */
+
+int
+script_timer_refresh_cb (void *data, int remaining_calls)
+{
+ /* make C compiler happy */
+ (void) data;
+
+ script_get_loaded_scripts ();
+ script_repo_update_status_all ();
+ script_buffer_refresh (0);
+
+ if (remaining_calls == 0)
+ script_timer_refresh = NULL;
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * script_signal_script_cb: callback for signals "xxx_script_yyy"
+ * (example: "python_script_loaded")
+ */
+
+int
+script_signal_script_cb (void *data, const char *signal, const char *type_data,
+ void *signal_data)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) signal;
+ (void) type_data;
+ (void) signal_data;
+
+ if (weechat_script_plugin->debug >= 2)
+ weechat_printf (NULL, "signal: %s, data: %s", signal, (char *)signal_data);
+
+ if (!script_timer_refresh)
+ {
+ script_timer_refresh = weechat_hook_timer (50, 0, 1,
+ &script_timer_refresh_cb, NULL);
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * weechat_plugin_init: initialize script plugin
+ */
+
+int
+weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
+{
+ /* make C compiler happy */
+ (void) argc;
+ (void) argv;
+
+ weechat_plugin = plugin;
+
+ script_buffer_set_callbacks ();
+
+ if (!script_config_init ())
+ return WEECHAT_RC_ERROR;
+
+ if (script_config_read () < 0)
+ return WEECHAT_RC_ERROR;
+
+ weechat_mkdir_home (SCRIPT_PLUGIN_NAME, 0755);
+
+ script_command_init ();
+ script_completion_init ();
+ script_info_init ();
+
+ weechat_hook_signal ("debug_dump", &script_debug_dump_cb, NULL);
+ weechat_hook_signal ("window_scrolled", &script_buffer_window_scrolled_cb, NULL);
+ weechat_hook_signal ("*_script_*", &script_signal_script_cb, NULL);
+
+ if (script_repo_file_exists ())
+ {
+ if (!script_repo_file_is_uptodate ())
+ script_repo_file_update (0);
+ else
+ script_repo_file_read (0);
+ }
+
+ if (script_buffer)
+ script_buffer_refresh (1);
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * weechat_plugin_end: end script plugin
+ */
+
+int
+weechat_plugin_end (struct t_weechat_plugin *plugin)
+{
+ /* make C compiler happy */
+ (void) plugin;
+
+ script_config_write ();
+
+ script_repo_remove_all ();
+
+ if (script_repo_filter)
+ free (script_repo_filter);
+
+ if (script_loaded)
+ weechat_hashtable_free (script_loaded);
+
+ script_config_free ();
+
+ return WEECHAT_RC_OK;
+}
diff --git a/src/plugins/script/script.h b/src/plugins/script/script.h
new file mode 100644
index 000000000..e922c3011
--- /dev/null
+++ b/src/plugins/script/script.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2003-2012 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat 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.
+ *
+ * WeeChat 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 WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __WEECHAT_SCRIPT_H
+#define __WEECHAT_SCRIPT_H 1
+
+#define weechat_plugin weechat_script_plugin
+#define SCRIPT_PLUGIN_NAME "script"
+
+extern struct t_weechat_plugin *weechat_script_plugin;
+
+extern char *script_language[];
+extern char *script_extension[];
+extern struct t_hashtable *script_loaded;
+
+extern int script_language_search (const char *language);
+extern int script_language_search_by_extension (const char *extension);
+extern void script_actions_add (const char *action);
+extern void script_get_loaded_scripts ();
+
+#endif /* __WEECHAT_SCRIPT_H */