mirror of
https://github.com/weechat/weechat.git
synced 2026-07-04 16:53:14 +02:00
Compare commits
147 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4ba67bdd0c | |||
| 632d451f62 | |||
| 216b68b682 | |||
| 3e2349481c | |||
| 37e4e1f011 | |||
| 412ffa632e | |||
| e0a50e4d9a | |||
| 00613ece06 | |||
| 8c1c01e58e | |||
| 59158c48d3 | |||
| a1bc5ce60f | |||
| 10ab4b0a20 | |||
| c774d9eb00 | |||
| 22f255afbb | |||
| 78accc74a3 | |||
| fe1e7bdce6 | |||
| 9208800f22 | |||
| b712ce9ac4 | |||
| 015a9d0a22 | |||
| 875d1e5fee | |||
| ac52a1d607 | |||
| d1d41da7ad | |||
| 3ba99d6d71 | |||
| 8ffbfe4b2c | |||
| 7ce144e875 | |||
| 59a0d27668 | |||
| f1dbe04c20 | |||
| c7d9ebd5c4 | |||
| e03df08e0a | |||
| 670c05554c | |||
| 7aabd15b4f | |||
| 7d5878e4d6 | |||
| 0ea530127b | |||
| f4c01bc785 | |||
| 4061f34127 | |||
| cad95b8f32 | |||
| 71ac31fcdd | |||
| 7d29001f9d | |||
| 3e4db5f7c1 | |||
| 5a915f6974 | |||
| 6729d8d6f2 | |||
| 045ceb961f | |||
| ef039c99da | |||
| 48f526b55a | |||
| 3dcea50073 | |||
| 855997623d | |||
| 2aeb867fb8 | |||
| d6a85fd553 | |||
| c20ce83d20 | |||
| b5a7d8e99e | |||
| 101e623b75 | |||
| eadfd18117 | |||
| 844a16a3c5 | |||
| b786cdafe6 | |||
| b99273387b | |||
| 6961bcb05a | |||
| 0eae5234a1 | |||
| 3fb24d37f8 | |||
| b3b516e023 | |||
| 07dc0c85df | |||
| 9d96e3ad33 | |||
| 812ed965e9 | |||
| b84f75eba6 | |||
| 7772bcfd33 | |||
| 5473b39986 | |||
| ac297214e0 | |||
| 463d4638c1 | |||
| 17a52d0020 | |||
| 4dd93fd6d3 | |||
| ffd4b7c254 | |||
| 1386c9218d | |||
| ac3a3d365f | |||
| 2273e47d81 | |||
| b789f39702 | |||
| 189d06624e | |||
| 0ff3acf6e4 | |||
| e9939cf574 | |||
| 81aff59e4e | |||
| ff2e38a006 | |||
| 655150875b | |||
| dfa9ed31d4 | |||
| 1e81591803 | |||
| a9b3e2efae | |||
| 2ee57a4af5 | |||
| a3878a522c | |||
| 06c4cf4144 | |||
| 0f07b69688 | |||
| def08461d4 | |||
| 8dcb59fd0b | |||
| 9b91c91577 | |||
| 481e6f8e7f | |||
| e4ad664010 | |||
| 5a82d5a246 | |||
| 8c29d36461 | |||
| 14751f721d | |||
| 5d70f20c27 | |||
| 71d5c65e28 | |||
| b49ed70af4 | |||
| 9753571988 | |||
| c12b23382e | |||
| 232e5a27f0 | |||
| ebf5b78fce | |||
| 3bedad8622 | |||
| 047d941f46 | |||
| cf4a22b156 | |||
| 40bfb43e0f | |||
| edcc676ecf | |||
| 6f1683172f | |||
| 80a76f65f6 | |||
| 9f035d8f91 | |||
| 33ff438086 | |||
| 1759b1f004 | |||
| 29dd888e6f | |||
| 63416bb801 | |||
| a33efdd755 | |||
| 28f7902667 | |||
| 0493cb89eb | |||
| cb95bfc846 | |||
| f325b5a71f | |||
| 6450867535 | |||
| bd4d543d50 | |||
| 50b371da7e | |||
| 5479a3d10a | |||
| 7c51a79460 | |||
| 09b73be53a | |||
| 3eb2b1dc0f | |||
| 11acdddda3 | |||
| ba5349d9cb | |||
| ce72bdb9f0 | |||
| cb334b6de3 | |||
| 9905ee774b | |||
| 56ebcb53eb | |||
| 85cd863819 | |||
| 46205116c2 | |||
| 311ac060ce | |||
| bb021e567a | |||
| 00fbd7ad56 | |||
| 77e3fb3c83 | |||
| 1f801ff079 | |||
| 0d2afafbd0 | |||
| 74ee068457 | |||
| 8f623f6747 | |||
| ef1c7734bf | |||
| f4ccd51f74 | |||
| 2ad953097f | |||
| f680066f16 | |||
| 857a1b9139 |
@@ -118,8 +118,8 @@ country code serves to distinguish the dialects.
|
|||||||
language and `CC' denoting the country, is the one use on systems based
|
language and `CC' denoting the country, is the one use on systems based
|
||||||
on GNU libc. On other systems, some variations of this scheme are
|
on GNU libc. On other systems, some variations of this scheme are
|
||||||
used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
|
used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
|
||||||
locales supported by your system for your country by running the command
|
locales supported by your system for your language by running the
|
||||||
`locale -a | grep '^LL''.
|
command `locale -a | grep '^LL''.
|
||||||
|
|
||||||
Not all programs have translations for all languages. By default, an
|
Not all programs have translations for all languages. By default, an
|
||||||
English message is shown in place of a nonexistent translation. If you
|
English message is shown in place of a nonexistent translation. If you
|
||||||
@@ -179,7 +179,7 @@ programming skill, here.
|
|||||||
======================
|
======================
|
||||||
|
|
||||||
Languages are not equally supported in all packages. The following
|
Languages are not equally supported in all packages. The following
|
||||||
matrix shows the current state of internationalization, as of June
|
matrix shows the current state of internationalization, as of July
|
||||||
2006. The matrix shows, in regard of each package, for which languages
|
2006. The matrix shows, in regard of each package, for which languages
|
||||||
PO files have been submitted to translation coordination, with a
|
PO files have been submitted to translation coordination, with a
|
||||||
translation percentage of at least 50%.
|
translation percentage of at least 50%.
|
||||||
@@ -199,7 +199,7 @@ translation percentage of at least 50%.
|
|||||||
bibshelf | [] |
|
bibshelf | [] |
|
||||||
binutils | [] |
|
binutils | [] |
|
||||||
bison | [] [] |
|
bison | [] [] |
|
||||||
bison-runtime | |
|
bison-runtime | [] |
|
||||||
bluez-pin | [] [] [] [] [] |
|
bluez-pin | [] [] [] [] [] |
|
||||||
cflow | [] |
|
cflow | [] |
|
||||||
clisp | [] [] |
|
clisp | [] [] |
|
||||||
@@ -225,8 +225,8 @@ translation percentage of at least 50%.
|
|||||||
gbiff | [] |
|
gbiff | [] |
|
||||||
gcal | [] |
|
gcal | [] |
|
||||||
gcc | [] |
|
gcc | [] |
|
||||||
gettext-examples | [] [] [] [] |
|
gettext-examples | [] [] [] [] [] |
|
||||||
gettext-runtime | [] [] [] [] |
|
gettext-runtime | [] [] [] [] [] |
|
||||||
gettext-tools | [] [] |
|
gettext-tools | [] [] |
|
||||||
gimp-print | [] [] [] [] |
|
gimp-print | [] [] [] [] |
|
||||||
gip | [] |
|
gip | [] |
|
||||||
@@ -303,7 +303,7 @@ translation percentage of at least 50%.
|
|||||||
libgphoto2 | [] [] |
|
libgphoto2 | [] [] |
|
||||||
libgphoto2_port | [] [] |
|
libgphoto2_port | [] [] |
|
||||||
libgsasl | |
|
libgsasl | |
|
||||||
libiconv | |
|
libiconv | [] [] |
|
||||||
libidn | [] [] |
|
libidn | [] [] |
|
||||||
lifelines | [] () |
|
lifelines | [] () |
|
||||||
lilypond | [] |
|
lilypond | [] |
|
||||||
@@ -342,7 +342,7 @@ translation percentage of at least 50%.
|
|||||||
sp | [] |
|
sp | [] |
|
||||||
stardict | [] |
|
stardict | [] |
|
||||||
system-tools-ba... | [] [] [] [] [] [] [] [] [] |
|
system-tools-ba... | [] [] [] [] [] [] [] [] [] |
|
||||||
tar | |
|
tar | [] |
|
||||||
texinfo | [] [] [] |
|
texinfo | [] [] [] |
|
||||||
textutils | [] [] [] |
|
textutils | [] [] [] |
|
||||||
tin | () () |
|
tin | () () |
|
||||||
@@ -360,7 +360,7 @@ translation percentage of at least 50%.
|
|||||||
xpad | [] [] |
|
xpad | [] [] |
|
||||||
+----------------------------------------------------+
|
+----------------------------------------------------+
|
||||||
af am ar az be bg bs ca cs cy da de el en en_GB eo
|
af am ar az be bg bs ca cs cy da de el en en_GB eo
|
||||||
11 0 1 2 8 20 1 42 43 2 62 97 18 1 16 13
|
11 0 1 2 8 21 1 42 43 2 62 99 18 1 16 16
|
||||||
|
|
||||||
es et eu fa fi fr ga gl gu he hi hr hu id is it
|
es et eu fa fi fr ga gl gu he hi hr hu id is it
|
||||||
+--------------------------------------------------+
|
+--------------------------------------------------+
|
||||||
@@ -478,10 +478,10 @@ translation percentage of at least 50%.
|
|||||||
libextractor | [] |
|
libextractor | [] |
|
||||||
libgpewidget | [] [] [] [] [] |
|
libgpewidget | [] [] [] [] [] |
|
||||||
libgpg-error | |
|
libgpg-error | |
|
||||||
libgphoto2 | [] [] |
|
libgphoto2 | [] [] [] |
|
||||||
libgphoto2_port | [] [] |
|
libgphoto2_port | [] [] |
|
||||||
libgsasl | [] [] |
|
libgsasl | [] [] |
|
||||||
libiconv | |
|
libiconv | [] |
|
||||||
libidn | [] [] |
|
libidn | [] [] |
|
||||||
lifelines | () |
|
lifelines | () |
|
||||||
lilypond | [] |
|
lilypond | [] |
|
||||||
@@ -496,7 +496,7 @@ translation percentage of at least 50%.
|
|||||||
nano | [] () [] [] [] [] |
|
nano | [] () [] [] [] [] |
|
||||||
nano_1_0 | [] [] [] [] [] |
|
nano_1_0 | [] [] [] [] [] |
|
||||||
opcodes | [] [] [] [] |
|
opcodes | [] [] [] [] |
|
||||||
parted | [] [] [] |
|
parted | [] [] [] [] |
|
||||||
pilot-qof | |
|
pilot-qof | |
|
||||||
psmisc | [] [] [] |
|
psmisc | [] [] [] |
|
||||||
pwdutils | |
|
pwdutils | |
|
||||||
@@ -520,11 +520,11 @@ translation percentage of at least 50%.
|
|||||||
sp | [] |
|
sp | [] |
|
||||||
stardict | [] |
|
stardict | [] |
|
||||||
system-tools-ba... | [] [] [] [] [] [] [] [] |
|
system-tools-ba... | [] [] [] [] [] [] [] [] |
|
||||||
tar | [] [] [] [] [] |
|
tar | [] [] [] [] [] [] |
|
||||||
texinfo | [] [] |
|
texinfo | [] [] |
|
||||||
textutils | [] [] [] [] [] |
|
textutils | [] [] [] [] [] |
|
||||||
tin | [] () |
|
tin | [] () |
|
||||||
tp-robot | [] [] [] |
|
tp-robot | [] [] [] [] |
|
||||||
tuxpaint | [] [] |
|
tuxpaint | [] [] |
|
||||||
unicode-han-tra... | |
|
unicode-han-tra... | |
|
||||||
unicode-transla... | [] [] |
|
unicode-transla... | [] [] |
|
||||||
@@ -538,7 +538,7 @@ translation percentage of at least 50%.
|
|||||||
xpad | [] [] [] |
|
xpad | [] [] [] |
|
||||||
+--------------------------------------------------+
|
+--------------------------------------------------+
|
||||||
es et eu fa fi fr ga gl gu he hi hr hu id is it
|
es et eu fa fi fr ga gl gu he hi hr hu id is it
|
||||||
89 21 16 2 41 118 59 14 1 8 1 6 60 30 0 52
|
89 21 16 2 41 119 61 14 1 8 1 6 61 30 0 53
|
||||||
|
|
||||||
ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
|
ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
|
||||||
+--------------------------------------------------+
|
+--------------------------------------------------+
|
||||||
@@ -640,14 +640,14 @@ translation percentage of at least 50%.
|
|||||||
iso_3166_2 | [] |
|
iso_3166_2 | [] |
|
||||||
iso_3166_3 | [] |
|
iso_3166_3 | [] |
|
||||||
iso_4217 | [] [] [] |
|
iso_4217 | [] [] [] |
|
||||||
iso_639 | [] [] [] |
|
iso_639 | [] [] |
|
||||||
jpilot | () () () |
|
jpilot | () () () |
|
||||||
jtag | |
|
jtag | |
|
||||||
jwhois | [] |
|
jwhois | [] |
|
||||||
kbd | [] |
|
kbd | [] |
|
||||||
keytouch | [] |
|
keytouch | [] |
|
||||||
keytouch-editor | |
|
keytouch-editor | |
|
||||||
keytouch-keyboa... | [] |
|
keytouch-keyboa... | |
|
||||||
latrine | [] |
|
latrine | [] |
|
||||||
ld | |
|
ld | |
|
||||||
leafpad | [] [] |
|
leafpad | [] [] |
|
||||||
@@ -716,7 +716,7 @@ translation percentage of at least 50%.
|
|||||||
xpad | [] [] [] |
|
xpad | [] [] [] |
|
||||||
+--------------------------------------------------+
|
+--------------------------------------------------+
|
||||||
ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
|
ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
|
||||||
40 24 2 1 1 3 1 2 3 21 0 15 1 102 6 3
|
40 24 2 1 1 3 1 2 3 21 0 15 1 101 5 3
|
||||||
|
|
||||||
nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
|
nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
|
||||||
+------------------------------------------------------+
|
+------------------------------------------------------+
|
||||||
@@ -758,7 +758,7 @@ translation percentage of at least 50%.
|
|||||||
gawk | [] [] [] [] |
|
gawk | [] [] [] [] |
|
||||||
gbiff | [] |
|
gbiff | [] |
|
||||||
gcal | [] |
|
gcal | [] |
|
||||||
gcc | |
|
gcc | [] |
|
||||||
gettext-examples | [] [] [] [] [] [] [] [] |
|
gettext-examples | [] [] [] [] [] [] [] [] |
|
||||||
gettext-runtime | [] [] [] [] [] [] [] [] |
|
gettext-runtime | [] [] [] [] [] [] [] [] |
|
||||||
gettext-tools | [] [] [] [] [] [] [] |
|
gettext-tools | [] [] [] [] [] [] [] |
|
||||||
@@ -835,7 +835,7 @@ translation percentage of at least 50%.
|
|||||||
libgpewidget | [] [] [] [] [] [] [] |
|
libgpewidget | [] [] [] [] [] [] [] |
|
||||||
libgpg-error | [] [] |
|
libgpg-error | [] [] |
|
||||||
libgphoto2 | [] |
|
libgphoto2 | [] |
|
||||||
libgphoto2_port | [] [] |
|
libgphoto2_port | [] [] [] |
|
||||||
libgsasl | [] [] [] [] |
|
libgsasl | [] [] [] [] |
|
||||||
libiconv | |
|
libiconv | |
|
||||||
libidn | [] [] () |
|
libidn | [] [] () |
|
||||||
@@ -894,7 +894,7 @@ translation percentage of at least 50%.
|
|||||||
xpad | [] [] [] |
|
xpad | [] [] [] |
|
||||||
+------------------------------------------------------+
|
+------------------------------------------------------+
|
||||||
nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
|
nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
|
||||||
0 2 3 58 31 53 5 76 72 5 42 48 12 51 128 2
|
0 2 3 58 31 53 5 76 72 5 42 48 12 51 130 2
|
||||||
|
|
||||||
tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
|
tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
|
||||||
+---------------------------------------------------+
|
+---------------------------------------------------+
|
||||||
@@ -911,7 +911,7 @@ translation percentage of at least 50%.
|
|||||||
bibshelf | [] | 7
|
bibshelf | [] | 7
|
||||||
binutils | [] [] [] | 9
|
binutils | [] [] [] | 9
|
||||||
bison | [] [] [] | 19
|
bison | [] [] [] | 19
|
||||||
bison-runtime | [] [] [] | 15
|
bison-runtime | [] [] [] | 16
|
||||||
bluez-pin | [] [] [] [] [] [] | 28
|
bluez-pin | [] [] [] [] [] [] | 28
|
||||||
cflow | [] [] | 4
|
cflow | [] [] | 4
|
||||||
clisp | | 6
|
clisp | | 6
|
||||||
@@ -936,9 +936,9 @@ translation percentage of at least 50%.
|
|||||||
gawk | [] [] | 15
|
gawk | [] [] | 15
|
||||||
gbiff | [] | 5
|
gbiff | [] | 5
|
||||||
gcal | [] | 5
|
gcal | [] | 5
|
||||||
gcc | [] [] [] | 5
|
gcc | [] [] [] | 6
|
||||||
gettext-examples | [] [] [] [] [] | 24
|
gettext-examples | [] [] [] [] [] [] | 26
|
||||||
gettext-runtime | [] [] [] [] [] | 26
|
gettext-runtime | [] [] [] [] [] [] | 28
|
||||||
gettext-tools | [] [] [] [] [] | 19
|
gettext-tools | [] [] [] [] [] | 19
|
||||||
gimp-print | [] [] | 12
|
gimp-print | [] [] | 12
|
||||||
gip | [] [] | 12
|
gip | [] [] | 12
|
||||||
@@ -996,26 +996,26 @@ translation percentage of at least 50%.
|
|||||||
iso_3166_2 | | 2
|
iso_3166_2 | | 2
|
||||||
iso_3166_3 | [] [] | 9
|
iso_3166_3 | [] [] | 9
|
||||||
iso_4217 | [] [] | 14
|
iso_4217 | [] [] | 14
|
||||||
iso_639 | [] [] | 16
|
iso_639 | [] | 14
|
||||||
jpilot | [] [] [] [] | 7
|
jpilot | [] [] [] [] | 7
|
||||||
jtag | [] | 3
|
jtag | [] | 3
|
||||||
jwhois | [] [] [] | 13
|
jwhois | [] [] [] | 13
|
||||||
kbd | [] [] | 12
|
kbd | [] [] | 12
|
||||||
keytouch | [] | 4
|
keytouch | [] | 4
|
||||||
keytouch-editor | | 2
|
keytouch-editor | | 2
|
||||||
keytouch-keyboa... | [] | 4
|
keytouch-keyboa... | | 2
|
||||||
latrine | [] [] | 8
|
latrine | [] [] | 8
|
||||||
ld | [] [] [] | 7
|
ld | [] [] [] [] | 8
|
||||||
leafpad | [] [] [] [] | 23
|
leafpad | [] [] [] [] | 23
|
||||||
libc | [] [] [] | 23
|
libc | [] [] [] | 23
|
||||||
libexif | [] | 4
|
libexif | [] | 4
|
||||||
libextractor | [] | 5
|
libextractor | [] | 5
|
||||||
libgpewidget | [] [] [] | 19
|
libgpewidget | [] [] [] | 19
|
||||||
libgpg-error | [] | 4
|
libgpg-error | [] | 4
|
||||||
libgphoto2 | [] | 7
|
libgphoto2 | [] | 8
|
||||||
libgphoto2_port | [] [] [] | 10
|
libgphoto2_port | [] [] [] | 11
|
||||||
libgsasl | [] | 8
|
libgsasl | [] | 8
|
||||||
libiconv | | 0
|
libiconv | [] | 4
|
||||||
libidn | [] [] | 10
|
libidn | [] [] | 10
|
||||||
lifelines | | 4
|
lifelines | | 4
|
||||||
lilypond | | 2
|
lilypond | | 2
|
||||||
@@ -1030,7 +1030,7 @@ translation percentage of at least 50%.
|
|||||||
nano | [] [] | 15
|
nano | [] [] | 15
|
||||||
nano_1_0 | [] [] [] | 18
|
nano_1_0 | [] [] [] | 18
|
||||||
opcodes | [] [] | 10
|
opcodes | [] [] | 10
|
||||||
parted | [] [] [] | 9
|
parted | [] [] [] | 10
|
||||||
pilot-qof | [] | 3
|
pilot-qof | [] | 3
|
||||||
psmisc | [] | 10
|
psmisc | [] | 10
|
||||||
pwdutils | [] | 3
|
pwdutils | [] | 3
|
||||||
@@ -1038,7 +1038,7 @@ translation percentage of at least 50%.
|
|||||||
qof | [] | 2
|
qof | [] | 2
|
||||||
radius | [] | 6
|
radius | [] | 6
|
||||||
recode | [] [] [] | 25
|
recode | [] [] [] | 25
|
||||||
rpm | [] [] [] | 13
|
rpm | [] [] [] [] | 14
|
||||||
screem | [] | 2
|
screem | [] | 2
|
||||||
scrollkeeper | [] [] [] [] | 26
|
scrollkeeper | [] [] [] [] | 26
|
||||||
sed | [] [] [] | 22
|
sed | [] [] [] | 22
|
||||||
@@ -1054,11 +1054,11 @@ translation percentage of at least 50%.
|
|||||||
sp | [] | 3
|
sp | [] | 3
|
||||||
stardict | [] [] [] [] | 11
|
stardict | [] [] [] [] | 11
|
||||||
system-tools-ba... | [] [] [] [] [] [] [] | 37
|
system-tools-ba... | [] [] [] [] [] [] [] | 37
|
||||||
tar | [] [] [] [] | 17
|
tar | [] [] [] [] | 19
|
||||||
texinfo | [] [] [] | 15
|
texinfo | [] [] [] | 15
|
||||||
textutils | [] [] [] | 17
|
textutils | [] [] [] | 17
|
||||||
tin | | 1
|
tin | | 1
|
||||||
tp-robot | [] [] [] | 9
|
tp-robot | [] [] [] | 10
|
||||||
tuxpaint | [] [] [] | 16
|
tuxpaint | [] [] [] | 16
|
||||||
unicode-han-tra... | | 0
|
unicode-han-tra... | | 0
|
||||||
unicode-transla... | | 2
|
unicode-transla... | | 2
|
||||||
@@ -1072,7 +1072,7 @@ translation percentage of at least 50%.
|
|||||||
xpad | [] [] [] | 14
|
xpad | [] [] [] | 14
|
||||||
+---------------------------------------------------+
|
+---------------------------------------------------+
|
||||||
77 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
|
77 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
|
||||||
172 domains 0 1 1 78 39 0 135 14 1 50 1 52 0 2040
|
172 domains 0 1 1 78 39 0 135 13 1 50 3 54 0 2054
|
||||||
|
|
||||||
Some counters in the preceding matrix are higher than the number of
|
Some counters in the preceding matrix are higher than the number of
|
||||||
visible blocks let us expect. This is because a few extra PO files are
|
visible blocks let us expect. This is because a few extra PO files are
|
||||||
@@ -1085,7 +1085,7 @@ distributed as such by its maintainer. There might be an observable
|
|||||||
lag between the mere existence a PO file and its wide availability in a
|
lag between the mere existence a PO file and its wide availability in a
|
||||||
distribution.
|
distribution.
|
||||||
|
|
||||||
If June 2006 seems to be old, you may fetch a more recent copy of
|
If July 2006 seems to be old, you may fetch a more recent copy of
|
||||||
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
||||||
matrix with full percentage details can be found at
|
matrix with full percentage details can be found at
|
||||||
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
||||||
|
|||||||
@@ -9,17 +9,11 @@ Developers:
|
|||||||
FlashCode <flashcode@flashtux.org>
|
FlashCode <flashcode@flashtux.org>
|
||||||
Web : http://weechat.flashtux.org
|
Web : http://weechat.flashtux.org
|
||||||
IRC : nick is "FlashCode" @ irc.freenode.net
|
IRC : nick is "FlashCode" @ irc.freenode.net
|
||||||
Jabber: flashcode@jabber.org
|
|
||||||
ICQ : 160677660
|
|
||||||
AIM : FlashCode AIM
|
|
||||||
Yahoo : FlashCode_Y
|
|
||||||
|
|
||||||
* Scripts plugins
|
* Scripts plugins
|
||||||
|
|
||||||
Kolter <kolter@openics.org>
|
kolter <kolter@openics.org>
|
||||||
Web : http://kolter.free.fr
|
|
||||||
IRC : nick is "kolter" @ irc.freenode.net
|
IRC : nick is "kolter" @ irc.freenode.net
|
||||||
Jabber: kolter@im.openics.org
|
|
||||||
|
|
||||||
|
|
||||||
Debian packager:
|
Debian packager:
|
||||||
@@ -47,7 +41,7 @@ Pavel Shevchuk, IRC: "Stalwart"
|
|||||||
=====
|
=====
|
||||||
|
|
||||||
Whole team is connected to IRC:
|
Whole team is connected to IRC:
|
||||||
server: irc.freenode.net, channel: #weechat
|
server: irc.freenode.net, channels: #weechat and #weechat-fr (french)
|
||||||
|
|
||||||
|
|
||||||
See README file for licence detail.
|
See README file for licence detail.
|
||||||
|
|||||||
@@ -1,7 +1,81 @@
|
|||||||
WeeChat - Wee Enhanced Environment for Chat
|
WeeChat - Wee Enhanced Environment for Chat
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
ChangeLog - 2006-08-19
|
ChangeLog - 2007-01-06
|
||||||
|
|
||||||
|
|
||||||
|
Version 0.2.2 (2007-01-06):
|
||||||
|
* fixed bug with status bar (missing refresh) when closing a buffer
|
||||||
|
* fixed bug with use of first buffer for a channel if not connected
|
||||||
|
to server (now allowed only for a server buffer)
|
||||||
|
* fixed refresh bug with private buffer title
|
||||||
|
* fixed bug with nick completion in command args (now uses option
|
||||||
|
look_nick_completion_ignore)
|
||||||
|
* fixed display bug with color for first line on screen (bug #17719)
|
||||||
|
* added anti-flood option (irc_anti_flood) (task #5442)
|
||||||
|
* fixed bug with "set_config" function in plugins API (bug #18448)
|
||||||
|
* plugins: "add_message_handler" now accepts "*" for all IRC messages
|
||||||
|
* added keys (F9/F10) to scroll topic (task #6030)
|
||||||
|
* added auto completion with channels and filenames (task #5423)
|
||||||
|
* fixed memleak in keyboard input
|
||||||
|
* fixed refresh bug when changing config options if window is splited
|
||||||
|
* added space between chat and nicklist when position is "right" (bug #17852)
|
||||||
|
* added option "look_nicklist_separator" (task #5437)
|
||||||
|
* fixed bug with DCC SEND when filename begins with '~'
|
||||||
|
* added "irc_send_unknown_commands" option to send unknown commands to
|
||||||
|
IRC server (OFF by default) (task #5947)
|
||||||
|
* /charset command and charset conversions now made by "charset" plugin
|
||||||
|
* fixed display bug in status bar, wrong length when using UTF-8
|
||||||
|
* fixed bug with ignore: now any IRC command is allowed
|
||||||
|
* fixed crash with Ctrl-T (transpose) and one char on line (bug #18153)
|
||||||
|
* added filename completion (task #5425)
|
||||||
|
* added "modifier" in plugins API
|
||||||
|
* improved /plugin command
|
||||||
|
* fixed bug on ignore with "mode" IRC command (bug #18058)
|
||||||
|
* fixed crash when loading ruby script if file does not exist, with
|
||||||
|
Ruby >= 1.9 only (bug #18064)
|
||||||
|
* added date in plugin function get_buffer_data()
|
||||||
|
* fixed some portability bugs (patch #5271)
|
||||||
|
* fixed iconv detection for BSD (patch #5456)
|
||||||
|
* fixed typo in configure.in (bash specific test) (patch #5450)
|
||||||
|
* mode changes with /op, /deop, /voice, /devoice, /halfop, /dehalfop are
|
||||||
|
now sent in one mode command to server (task #5968)
|
||||||
|
* added more values for config boolean values: y/true/t/1 and n/false/f/0
|
||||||
|
* fixed bug with /alias and arguments (like $1), now text after
|
||||||
|
argument(s) is used (bug #17944)
|
||||||
|
* fixed minor display bug with special chars on some arch like PPC
|
||||||
|
|
||||||
|
Version 0.2.1 (2006-10-01):
|
||||||
|
* fixed crash for DCC receiver when resuming a file (bug #17885)
|
||||||
|
* fixed DCC error for sender when receiver cancels DCC (bug #17838)
|
||||||
|
* fixed random crash with /upgrade command (error when loading buffers)
|
||||||
|
* fixed buffer search by server/channel: now if only channel is specified,
|
||||||
|
a channel of another server can be found
|
||||||
|
* fixed highlight for DCC, invite and notice: when a window is displaying
|
||||||
|
buffer, there's no highlight
|
||||||
|
* command "/away -all" now allowed when not connected to current server
|
||||||
|
* new signals handled: SIGTERM and SIGHUP (received when terminal is closed):
|
||||||
|
clean WeeChat quit (send quit to irc servers then quit WeeChat)
|
||||||
|
* added some new default key bindings for existing keys (for some OS)
|
||||||
|
* command /key now ok with one arg (key name): display key if found
|
||||||
|
* fixed bug with CTCP VERSION sent on channels (bug #17547)
|
||||||
|
* added current channel completion for /ctcp command
|
||||||
|
* fixed bugs in get_buffer_data() which breaks the retrieval of buffer
|
||||||
|
content (perl, lua)
|
||||||
|
* fixed nicklist display bug when top/bottom (not enough lines) (bug #17537)
|
||||||
|
* fixed bug with auto-rejoin of keyed chans (bug #17534)
|
||||||
|
* added default nick completion when line starts with '//' (bug #17535)
|
||||||
|
* values yes/no accepted (as on/off) for config boolean values (task #5454)
|
||||||
|
* added server default notify level (set by /buffer notify on server buffer)
|
||||||
|
(task #5634)
|
||||||
|
* fixed crashs with /buffer and /charset commands when not connected to any
|
||||||
|
server (bug #17525)
|
||||||
|
* added special vars $nick/$channel/$server for server_command, alias and
|
||||||
|
plugin command handlers
|
||||||
|
* added arguments $1,$2,..,$9 and $* for alias (task #5831)
|
||||||
|
* added hotlist in session file when using /upgrade command (task #5449)
|
||||||
|
* fixed nick refresh problem with unrealircd specific modes: chan owner (~)
|
||||||
|
and chan admin (&) (bug #17340)
|
||||||
|
|
||||||
Version 0.2.0 (2006-08-19):
|
Version 0.2.0 (2006-08-19):
|
||||||
* added 'C'lear option on IRC raw buffer
|
* added 'C'lear option on IRC raw buffer
|
||||||
@@ -41,6 +115,7 @@ Version 0.2.0 (2006-08-19):
|
|||||||
* added polish, russian and czech quickstart guide
|
* added polish, russian and czech quickstart guide
|
||||||
* fixed display bug with special char (bug #16732)
|
* fixed display bug with special char (bug #16732)
|
||||||
* added color encoding for some commands like /me
|
* added color encoding for some commands like /me
|
||||||
|
* added aspell plugin
|
||||||
* renamed plugins names (removed "lib" prefix in name)
|
* renamed plugins names (removed "lib" prefix in name)
|
||||||
* fixed crash when closing DCC/raw buffer if 2 are open (bug #16808)
|
* fixed crash when closing DCC/raw buffer if 2 are open (bug #16808)
|
||||||
* fixed crashes with DCC chat remove/purge on DCC view (bug #16775)
|
* fixed crashes with DCC chat remove/purge on DCC view (bug #16775)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
WeeChat FAQ, 2006-08-19
|
WeeChat FAQ, 2007-01-06
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
Intended audience:
|
Intended audience:
|
||||||
@@ -75,15 +75,25 @@ A: For help you can type /help. For help about a command, type /help command.
|
|||||||
|
|
||||||
2.3
|
2.3
|
||||||
================================================================================
|
================================================================================
|
||||||
|
Q: I heard about "buffers" and "windows", what's the difference?
|
||||||
|
|
||||||
|
A: A window is used when you split screen vertically or horizontally.
|
||||||
|
A buffer is a "view" for a window. Each window displays a buffer, and
|
||||||
|
many windows may display same buffer.
|
||||||
|
Examples of buffers: server messages, channel, DCC list, ..
|
||||||
|
|
||||||
|
|
||||||
|
2.4
|
||||||
|
================================================================================
|
||||||
Q: I don't see some chars with accents, what can I do?
|
Q: I don't see some chars with accents, what can I do?
|
||||||
|
|
||||||
A: You have to setup charset used for decoding (ISO and UTF), encoding, and
|
A: You have to setup charset used for decoding (ISO and UTF), encoding, and
|
||||||
internal WeeChat charset.
|
internal WeeChat charset.
|
||||||
Internal charset should be empty value, except if WeeChat failed to
|
Internal charset should be empty value, except if WeeChat failed to
|
||||||
detect your locale (WeeChat looks for "UTF-8" in your locale name).
|
detect your locale.
|
||||||
|
|
||||||
|
|
||||||
2.4
|
2.5
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: How can I customize key bindings?
|
Q: How can I customize key bindings?
|
||||||
|
|
||||||
@@ -92,7 +102,7 @@ A: Key bindings are customizable with /key command.
|
|||||||
in input zone.
|
in input zone.
|
||||||
|
|
||||||
|
|
||||||
2.5
|
2.6
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: How can I load Perl scripts?
|
Q: How can I load Perl scripts?
|
||||||
Are Perl scripts compatible with other IRC clients ?
|
Are Perl scripts compatible with other IRC clients ?
|
||||||
@@ -104,7 +114,7 @@ A: You can use /perl command to load scripts (default path is
|
|||||||
Perl scripts are not compatible with other IRC clients.
|
Perl scripts are not compatible with other IRC clients.
|
||||||
|
|
||||||
|
|
||||||
2.6
|
2.7
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: How can I load Python scripts?
|
Q: How can I load Python scripts?
|
||||||
Are Python scripts compatible with other IRC clients ?
|
Are Python scripts compatible with other IRC clients ?
|
||||||
@@ -116,7 +126,7 @@ A: You can use /python command to load scripts (default path is
|
|||||||
Python scripts are not compatible with other IRC clients.
|
Python scripts are not compatible with other IRC clients.
|
||||||
|
|
||||||
|
|
||||||
2.7
|
2.8
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: How can I load Ruby scripts?
|
Q: How can I load Ruby scripts?
|
||||||
Are Ruby scripts compatible with other IRC clients ?
|
Are Ruby scripts compatible with other IRC clients ?
|
||||||
@@ -128,7 +138,7 @@ A: You can use /ruby command to load scripts (default path is
|
|||||||
Ruby scripts are not compatible with other IRC clients.
|
Ruby scripts are not compatible with other IRC clients.
|
||||||
|
|
||||||
|
|
||||||
2.8
|
2.9
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: How can I load Lua scripts?
|
Q: How can I load Lua scripts?
|
||||||
Are Lua scripts compatible with other IRC clients ?
|
Are Lua scripts compatible with other IRC clients ?
|
||||||
@@ -140,7 +150,7 @@ A: You can use /lua command to load scripts (default path is
|
|||||||
Lua scripts are not compatible with other IRC clients.
|
Lua scripts are not compatible with other IRC clients.
|
||||||
|
|
||||||
|
|
||||||
2.9
|
2.10
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: When I'm using weechat under screen, I have weird chars, when I switch
|
Q: When I'm using weechat under screen, I have weird chars, when I switch
|
||||||
window for example, how to fix that?
|
window for example, how to fix that?
|
||||||
@@ -150,6 +160,19 @@ A: This may be caused by bad value of TERM variable (look at echo $TERM).
|
|||||||
is ok (like many other values).
|
is ok (like many other values).
|
||||||
|
|
||||||
|
|
||||||
|
2.11
|
||||||
|
================================================================================
|
||||||
|
Q: I want to change language used by WeeChat for messages, but without
|
||||||
|
exiting WeeChat, is it possible?
|
||||||
|
|
||||||
|
A: Yes, you have to use python script shell.py (available on WeeChat
|
||||||
|
website) and issue these commands when script is loaded:
|
||||||
|
/shell setenv LANG=en_US.UTF-8
|
||||||
|
/upgrade
|
||||||
|
(to have english messages with UTF-8 encoding for terminal, for ISO
|
||||||
|
users, you can issue: /shell setenv LANG=en_US)
|
||||||
|
|
||||||
|
|
||||||
3.1
|
3.1
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: How should I report bugs?
|
Q: How should I report bugs?
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
WeeChat FAQ, 2006-08-19
|
WeeChat FAQ, 2007-01-06
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
Public concerné :
|
Public concerné :
|
||||||
@@ -79,16 +79,28 @@ R: Pour obtenir de l'aide tapez /help. Pour de l'aide sur une commande,
|
|||||||
|
|
||||||
2.3
|
2.3
|
||||||
================================================================================
|
================================================================================
|
||||||
|
Q: J'ai entendu parler de "buffers" et "windows", quelle est la
|
||||||
|
différence ?
|
||||||
|
|
||||||
|
R: Une fenêtre ("window") est utilisée quand vous partagez l'écran
|
||||||
|
verticalement ou horizontalement.
|
||||||
|
Un tampon ("buffer") est une "vue" pour une fenĂŞtre. Chaque fenĂŞtre
|
||||||
|
affiche un tampon, et plusieurs fenĂŞtres peuvent afficher le mĂŞme
|
||||||
|
tampon.
|
||||||
|
Exemples de tampons: messages serveur, canal, liste des DCC, etc...
|
||||||
|
|
||||||
|
|
||||||
|
2.4
|
||||||
|
================================================================================
|
||||||
Q: Je ne vois pas bien certains accents dans WeeChat, que faire ?
|
Q: Je ne vois pas bien certains accents dans WeeChat, que faire ?
|
||||||
|
|
||||||
R: Il faut configurer le charset utilisé pour le décodage (ISO et UTF),
|
R: Il faut configurer le charset utilisé pour le décodage (ISO et UTF),
|
||||||
l'encodage ainsi que le charset interne Ă WeeChat.
|
l'encodage ainsi que le charset interne Ă WeeChat.
|
||||||
Le charset interne Ă WeeChat doit ĂŞtre une valeur vide, sauf si WeeChat
|
Le charset interne Ă WeeChat doit ĂŞtre une valeur vide, sauf si WeeChat
|
||||||
n'arrive pas à déterminer votre locale (WeeChat recherche "UTF-8" dans
|
n'arrive pas à déterminer votre locale.
|
||||||
le nom de la locale).
|
|
||||||
|
|
||||||
|
|
||||||
2.4
|
2.5
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: Comment puis-je configurer les raccourcis clavier ?
|
Q: Comment puis-je configurer les raccourcis clavier ?
|
||||||
|
|
||||||
@@ -97,7 +109,7 @@ R: Les raccourcis clavier sont modifiables avec la commande /key.
|
|||||||
d'une touche et de l'inclure dans la zone de saisie.
|
d'une touche et de l'inclure dans la zone de saisie.
|
||||||
|
|
||||||
|
|
||||||
2.5
|
2.6
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: Comment puis-je charger des scripts Perl ?
|
Q: Comment puis-je charger des scripts Perl ?
|
||||||
Les scripts Perl sont-ils compatibles avec d'autres clients IRC ?
|
Les scripts Perl sont-ils compatibles avec d'autres clients IRC ?
|
||||||
@@ -109,7 +121,7 @@ R: La commande /perl permet de charger les scripts Perl (le chemin par d
|
|||||||
Les scripts Perl ne sont pas compatibles avec d'autres clients IRC.
|
Les scripts Perl ne sont pas compatibles avec d'autres clients IRC.
|
||||||
|
|
||||||
|
|
||||||
2.6
|
2.7
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: Comment puis-je charger les scripts Python ?
|
Q: Comment puis-je charger les scripts Python ?
|
||||||
Les scripts Python sont-ils compatibles avec d'autres clients IRC ?
|
Les scripts Python sont-ils compatibles avec d'autres clients IRC ?
|
||||||
@@ -121,7 +133,7 @@ R: La commande /python permet de charger les scripts Python (le chemin par
|
|||||||
Les scripts Python ne sont pas compatibles avec d'autres clients IRC.
|
Les scripts Python ne sont pas compatibles avec d'autres clients IRC.
|
||||||
|
|
||||||
|
|
||||||
2.7
|
2.8
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: Comment puis-je charger des scripts Ruby ?
|
Q: Comment puis-je charger des scripts Ruby ?
|
||||||
Les scripts Ruby sont-ils compatibles avec d'autres clients IRC ?
|
Les scripts Ruby sont-ils compatibles avec d'autres clients IRC ?
|
||||||
@@ -133,7 +145,7 @@ R: La commande /ruby permet de charger les scripts Ruby (le chemin par
|
|||||||
Les scripts Ruby ne sont pas compatibles avec d'autres clients IRC.
|
Les scripts Ruby ne sont pas compatibles avec d'autres clients IRC.
|
||||||
|
|
||||||
|
|
||||||
2.8
|
2.9
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: Comment puis-je charger des scripts Lua ?
|
Q: Comment puis-je charger des scripts Lua ?
|
||||||
Les scripts Lua sont-ils compatibles avec d'autres clients IRC ?
|
Les scripts Lua sont-ils compatibles avec d'autres clients IRC ?
|
||||||
@@ -145,7 +157,7 @@ R: La commande /lua permet de charger les scripts Lua (le chemin par
|
|||||||
Les scripts Lua ne sont pas compatibles avec d'autres clients IRC.
|
Les scripts Lua ne sont pas compatibles avec d'autres clients IRC.
|
||||||
|
|
||||||
|
|
||||||
2.9
|
2.10
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: Quand j'utilise weechat sous screen, j'ai des caractères bizarres
|
Q: Quand j'utilise weechat sous screen, j'ai des caractères bizarres
|
||||||
notamment en changeant de fenêtre, comment corriger ça ?
|
notamment en changeant de fenêtre, comment corriger ça ?
|
||||||
@@ -155,6 +167,20 @@ R: Cela peut
|
|||||||
problèmes, utilisez "xterm" qui est ok (comme plein d'autres valeurs).
|
problèmes, utilisez "xterm" qui est ok (comme plein d'autres valeurs).
|
||||||
|
|
||||||
|
|
||||||
|
2.11
|
||||||
|
================================================================================
|
||||||
|
Q: Je souhaite changer la langue des messages affichés par WeeChat, mais
|
||||||
|
sans quitter WeeChat, est-ce possible ?
|
||||||
|
|
||||||
|
R: Oui, il faut utiliser le script python shell.py (disponible sur le site
|
||||||
|
de WeeChat) et taper ces commandes une fois le script chargé :
|
||||||
|
/shell setenv LANG=en_US.UTF-8
|
||||||
|
/upgrade
|
||||||
|
(pour avoir des messages anglais avec encodage UTF-8 pour le terminal,
|
||||||
|
pour les utilisateurs en ISO, vous pouvez taper:
|
||||||
|
/shell setenv LANG=en_US)
|
||||||
|
|
||||||
|
|
||||||
3.1
|
3.1
|
||||||
================================================================================
|
================================================================================
|
||||||
Q: Comment dois-je reporter les bugs ?
|
Q: Comment dois-je reporter les bugs ?
|
||||||
|
|||||||
+3
-2
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -21,9 +21,10 @@ EXTRA_DIST = config.rpath BUGS FAQ FAQ.fr \
|
|||||||
debian/changelog debian/control \
|
debian/changelog debian/control \
|
||||||
debian/copyright debian/compat \
|
debian/copyright debian/compat \
|
||||||
debian/rules debian/weechat-common.docs \
|
debian/rules debian/weechat-common.docs \
|
||||||
|
debian/lintian-override \
|
||||||
debian/weechat-common.install debian/weechat-curses.dirs \
|
debian/weechat-common.install debian/weechat-curses.dirs \
|
||||||
debian/weechat-curses.install debian/weechat-plugins.install \
|
debian/weechat-curses.install debian/weechat-plugins.install \
|
||||||
debian/weechat-curses.menu debian/NEWS \
|
debian/weechat-curses.menu debian/NEWS debian/weechat.xpm \
|
||||||
weechat.spec weechat_icon_32.png
|
weechat.spec weechat_icon_32.png
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|||||||
@@ -1,8 +1,41 @@
|
|||||||
WeeChat - Wee Enhanced Environment for Chat
|
WeeChat - Wee Enhanced Environment for Chat
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
|
* FlashCode, 2007-01-06
|
||||||
|
|
||||||
|
WeeChat 0.2.2 released.
|
||||||
|
|
||||||
|
Important release notes:
|
||||||
|
|
||||||
|
- new charset plugin:
|
||||||
|
- for users of any previous version, all your charset settings
|
||||||
|
in weechat.rc will be LOST! You should save your weechat.rc
|
||||||
|
to keep your values and set them again with new "charset" plugin.
|
||||||
|
- for ISO users: history of channels may be without accents
|
||||||
|
(after /upgrade), this is not recoverable, but this is not a bug.
|
||||||
|
All new messages should be ok.
|
||||||
|
- be careful, now default encode is UTF-8 for all channels (before
|
||||||
|
it was terminal charset). If you still want to send messages as
|
||||||
|
ISO-8859-1, you should send either global encode or server specific
|
||||||
|
encode to ISO-8859-1.
|
||||||
|
For global encode: /setp charset.global.encode = "ISO-8859-1"
|
||||||
|
For server encode: (on server buffer) /charset encode ISO-8859-1
|
||||||
|
- new keys for topic scroll:
|
||||||
|
- new keys for scrolling topic: F9/F10
|
||||||
|
- key F10 was used for "infobar_clear" in previous WeeChat versions,
|
||||||
|
you have to manually rebind this key (except for new WeeChat users):
|
||||||
|
/key <press alt-k then F10> scroll_topic_right
|
||||||
|
which gives something like this:
|
||||||
|
/key meta2-21~ scroll_topic_right
|
||||||
|
|
||||||
|
* FlashCode, 2006-10-01
|
||||||
|
|
||||||
|
WeeChat 0.2.1 released.
|
||||||
|
|
||||||
* FlashCode, 2006-08-19
|
* FlashCode, 2006-08-19
|
||||||
|
|
||||||
|
WeeChat 0.2.0 released.
|
||||||
|
|
||||||
Important release notes:
|
Important release notes:
|
||||||
|
|
||||||
- if you upgraded with /upgrade in WeeChat, you should /disconnect and
|
- if you upgraded with /upgrade in WeeChat, you should /disconnect and
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ Features
|
|||||||
Copyright
|
Copyright
|
||||||
---------
|
---------
|
||||||
|
|
||||||
WeeChat (c) Copyright 2003-2006 by FlashCode <flashcode@flashtux.org>
|
WeeChat (c) Copyright 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
(see AUTHORS file if you want to contact authors)
|
(see AUTHORS file if you want to contact authors)
|
||||||
|
|
||||||
WeeChat is distributed under GPL licence (see COPYING file for complete license):
|
WeeChat is distributed under GPL licence (see COPYING file for complete license):
|
||||||
|
|||||||
+61
-18
@@ -1,20 +1,63 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# gettextize updates Makefile.am, configure.in
|
###
|
||||||
cp configure.in configure.in.old
|
### common stuff
|
||||||
cp Makefile.am Makefile.am.old
|
###
|
||||||
if test "$1" = "--auto" ; then
|
OK="\\033[70G[\\033[1;32mOK\\033[1;00m]"
|
||||||
grep -v 'read dummy < /dev/tty' $(which gettextize) | /bin/sh -s -- --copy --force --intl --no-changelog
|
FAIL="\\033[70G[\\033[1;31mFAILED\\033[1;00m]"
|
||||||
else
|
|
||||||
gettextize --copy --force --intl --no-changelog
|
AUTOGEN_LOG=autogen.log
|
||||||
fi
|
|
||||||
mv Makefile.am.old Makefile.am
|
err ()
|
||||||
mv configure.in.old configure.in
|
{
|
||||||
libtoolize --automake --force --copy
|
echo "-------"
|
||||||
aclocal
|
echo "Error :"
|
||||||
# autoheader creates config.h.in needed by autoconf
|
echo "---8<-----------------------------------"
|
||||||
autoheader
|
cat $AUTOGEN_LOG
|
||||||
# autoconf creates configure
|
echo "----------------------------------->8---"
|
||||||
autoconf
|
exit 1
|
||||||
# automake creates Makefile.in
|
}
|
||||||
automake --add-missing --copy --gnu
|
|
||||||
|
run ()
|
||||||
|
{
|
||||||
|
echo -n "Running \"$@\""
|
||||||
|
eval $@ >$AUTOGEN_LOG 2>&1
|
||||||
|
if [ $? = 0 ] ; then
|
||||||
|
echo -e $OK
|
||||||
|
else
|
||||||
|
echo -e $FAIL
|
||||||
|
err
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
### cleanning part
|
||||||
|
###
|
||||||
|
# remove autotools stuff
|
||||||
|
run "rm -rf config"
|
||||||
|
run "rm -f config.h.in"
|
||||||
|
run "rm -f aclocal.m4 configure config.log config.status"
|
||||||
|
run "rm -rf autom4te*.cache"
|
||||||
|
# remove libtool stuff
|
||||||
|
run "rm -f libtool"
|
||||||
|
# remove gettext stuff
|
||||||
|
run "rm -f ABOUT-NLS"
|
||||||
|
run "rm -rf intl"
|
||||||
|
|
||||||
|
###
|
||||||
|
### configuration part
|
||||||
|
###
|
||||||
|
# create the config directory
|
||||||
|
run "mkdir -p config/m4"
|
||||||
|
run "mkdir intl"
|
||||||
|
|
||||||
|
# execute autotools cmds
|
||||||
|
run "autopoint -f"
|
||||||
|
run "libtoolize --automake --force --copy"
|
||||||
|
run "aclocal --force -I config/m4"
|
||||||
|
run "autoheader"
|
||||||
|
run "autoconf"
|
||||||
|
run "automake --add-missing --copy --gnu"
|
||||||
|
|
||||||
|
# ending
|
||||||
|
rm -f $AUTOGEN_LOG
|
||||||
|
|||||||
+97
-25
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -19,15 +19,17 @@
|
|||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
AC_PREREQ(2.56)
|
AC_PREREQ(2.56)
|
||||||
AC_INIT(WeeChat, 0.2.0, flashcode@flashtux.org)
|
AC_INIT(WeeChat, 0.2.2, flashcode@flashtux.org)
|
||||||
AC_CONFIG_SRCDIR([src/common/weechat.c])
|
AC_CONFIG_SRCDIR([src/common/weechat.c])
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
AM_INIT_AUTOMAKE([weechat], [0.2.0])
|
AM_INIT_AUTOMAKE([weechat], [0.2.2])
|
||||||
|
|
||||||
# Checks for programs
|
# Checks for programs
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_MAKE_SET
|
AC_PROG_MAKE_SET
|
||||||
|
AC_GNU_SOURCE
|
||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
AC_CHECK_PROG(DBLATEX_FOUND, "dblatex", "yes")
|
||||||
|
|
||||||
# Add some flags for some OS
|
# Add some flags for some OS
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
@@ -48,7 +50,8 @@ esac
|
|||||||
|
|
||||||
# Gettext
|
# Gettext
|
||||||
ALL_LINGUAS="fr es cs hu de ru"
|
ALL_LINGUAS="fr es cs hu de ru"
|
||||||
AM_GNU_GETTEXT
|
AM_GNU_GETTEXT([use-libtool])
|
||||||
|
AM_GNU_GETTEXT_VERSION([0.15])
|
||||||
|
|
||||||
# Checks for libraries
|
# Checks for libraries
|
||||||
AC_CHECK_LIB(ncurses, initscr, LIBNCURSES_FOUND=1, LIBNCURSES_FOUND=0)
|
AC_CHECK_LIB(ncurses, initscr, LIBNCURSES_FOUND=1, LIBNCURSES_FOUND=0)
|
||||||
@@ -84,7 +87,7 @@ AC_MSG_RESULT($ac_cv_type_socklen_t)
|
|||||||
# Checks for library functions.
|
# Checks for library functions.
|
||||||
AC_FUNC_SELECT_ARGTYPES
|
AC_FUNC_SELECT_ARGTYPES
|
||||||
AC_TYPE_SIGNAL
|
AC_TYPE_SIGNAL
|
||||||
AC_CHECK_FUNCS([gethostbyname gethostname getsockname gettimeofday inet_ntoa memset mkdir select setlocale socket strcasecmp strchr strdup strncasecmp strpbrk strrchr strstr uname regexec])
|
AC_CHECK_FUNCS([gethostbyname gethostname getsockname gettimeofday inet_ntoa memset mkdir select setlocale socket strcasecmp strchr strdup strndup strncasecmp strpbrk strrchr strstr uname regexec])
|
||||||
|
|
||||||
# Variables in config.h
|
# Variables in config.h
|
||||||
|
|
||||||
@@ -97,6 +100,7 @@ AH_VERBATIM([PLUGIN_PYTHON], [#undef PLUGIN_PYTHON])
|
|||||||
AH_VERBATIM([PLUGIN_RUBY], [#undef PLUGIN_RUBY])
|
AH_VERBATIM([PLUGIN_RUBY], [#undef PLUGIN_RUBY])
|
||||||
AH_VERBATIM([PLUGIN_LUA], [#undef PLUGIN_LUA])
|
AH_VERBATIM([PLUGIN_LUA], [#undef PLUGIN_LUA])
|
||||||
AH_VERBATIM([PLUGIN_ASPELL], [#undef PLUGIN_ASPELL])
|
AH_VERBATIM([PLUGIN_ASPELL], [#undef PLUGIN_ASPELL])
|
||||||
|
AH_VERBATIM([PLUGIN_CHARSET], [#undef PLUGIN_CHARSET])
|
||||||
AH_VERBATIM([HAVE_GNUTLS], [#undef HAVE_GNUTLS])
|
AH_VERBATIM([HAVE_GNUTLS], [#undef HAVE_GNUTLS])
|
||||||
AH_VERBATIM([HAVE_FLOCK], [#undef HAVE_FLOCK])
|
AH_VERBATIM([HAVE_FLOCK], [#undef HAVE_FLOCK])
|
||||||
AH_VERBATIM([DEBUG], [#undef DEBUG])
|
AH_VERBATIM([DEBUG], [#undef DEBUG])
|
||||||
@@ -107,6 +111,7 @@ AC_ARG_ENABLE(ncurses, [ --disable-ncurses Turn off ncurses interf
|
|||||||
AC_ARG_ENABLE(wxwidgets, [ --enable-wxwidgets Turn on WxWidgets interface (default=no wxwidgets)],enable_wxwidgets=$enableval,enable_wxwidgets=no)
|
AC_ARG_ENABLE(wxwidgets, [ --enable-wxwidgets Turn on WxWidgets interface (default=no wxwidgets)],enable_wxwidgets=$enableval,enable_wxwidgets=no)
|
||||||
AC_ARG_ENABLE(gtk, [ --enable-gtk Turn on Gtk interface (default=no Gtk)],enable_gtk=$enableval,enable_gtk=no)
|
AC_ARG_ENABLE(gtk, [ --enable-gtk Turn on Gtk interface (default=no Gtk)],enable_gtk=$enableval,enable_gtk=no)
|
||||||
AC_ARG_ENABLE(qt, [ --enable-qt Turn on Qt interface (default=no Qt)],enable_qt=$enableval,enable_qt=no)
|
AC_ARG_ENABLE(qt, [ --enable-qt Turn on Qt interface (default=no Qt)],enable_qt=$enableval,enable_qt=no)
|
||||||
|
AC_ARG_ENABLE(gnutls, [ --disable-gnutls Turn off gnutls support (default=compiled if found)],enable_gnutls=$enableval,enable_gnutls=yes)
|
||||||
AC_ARG_ENABLE(plugins, [ --disable-plugins Turn off plugins support (default=plugins enabled)],enable_plugins=$enableval,enable_plugins=yes)
|
AC_ARG_ENABLE(plugins, [ --disable-plugins Turn off plugins support (default=plugins enabled)],enable_plugins=$enableval,enable_plugins=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(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(python, [ --disable-python Turn off Python script plugin (default=compiled if found)],enable_python=$enableval,enable_python=yes)
|
||||||
@@ -116,7 +121,7 @@ AC_ARG_WITH(lua-inc, [ --with-lua-inc=DIR, Lua include files are i
|
|||||||
AC_ARG_WITH(lua-lib, [ --with-lua-lib=DIR, Lua library files are in DIR (default=autodetect)],lua_lib=$withval,lua_lib='')
|
AC_ARG_WITH(lua-lib, [ --with-lua-lib=DIR, Lua library files are in DIR (default=autodetect)],lua_lib=$withval,lua_lib='')
|
||||||
AC_ARG_WITH(lua-suffix, [ --with-lua-suffix=ARG Lua is suffixed with ARG (default=autodetect)],lua_suffix=$withval,lua_suffix='')
|
AC_ARG_WITH(lua-suffix, [ --with-lua-suffix=ARG Lua is suffixed with ARG (default=autodetect)],lua_suffix=$withval,lua_suffix='')
|
||||||
AC_ARG_ENABLE(aspell, [ --disable-aspell Turn off Aspell plugin (default=compiled if found)],enable_aspell=$enableval,enable_aspell=yes)
|
AC_ARG_ENABLE(aspell, [ --disable-aspell Turn off Aspell plugin (default=compiled if found)],enable_aspell=$enableval,enable_aspell=yes)
|
||||||
AC_ARG_ENABLE(gnutls, [ --disable-gnutls Turn off gnutls support (default=compiled if found)],enable_gnutls=$enableval,enable_gnutls=yes)
|
AC_ARG_ENABLE(charset, [ --disable-charset Turn off Charset plugin (default=compiled if found)],enable_charset=$enableval,enable_charset=yes)
|
||||||
AC_ARG_WITH(doc_xsl_prefix, [ --with-doc-xsl-prefix=DIR Docbook html/chunk.xsl is in DIR (default=autodetect)],doc_xsl_prefix=$withval,doc_xsl_prefix='')
|
AC_ARG_WITH(doc_xsl_prefix, [ --with-doc-xsl-prefix=DIR Docbook html/chunk.xsl is in DIR (default=autodetect)],doc_xsl_prefix=$withval,doc_xsl_prefix='')
|
||||||
AC_ARG_WITH(debug, [ --with-debug Debugging: 0=no debug, 1=debug compilation, 2=debug compilation + verbose msgs (default=1)],debug=$withval,debug=1)
|
AC_ARG_WITH(debug, [ --with-debug Debugging: 0=no debug, 1=debug compilation, 2=debug compilation + verbose msgs (default=1)],debug=$withval,debug=1)
|
||||||
|
|
||||||
@@ -193,12 +198,17 @@ fi
|
|||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
iconv_found="no"
|
iconv_found="no"
|
||||||
|
ICONV_LFLAGS=""
|
||||||
|
|
||||||
AC_CHECK_HEADER(iconv.h,ac_found_iconv_header="yes",ac_found_iconv_header="no")
|
AC_CHECK_HEADER(iconv.h,ac_found_iconv_header="yes",ac_found_iconv_header="no")
|
||||||
if test "x$ac_found_iconv_header" = "xyes" ; then
|
if test "x$ac_found_iconv_header" = "xyes" ; then
|
||||||
AC_CHECK_LIB(iconv,iconv_open,ac_found_iconv_lib="yes",ac_found_iconv_lib="no")
|
AC_CHECK_LIB(iconv,iconv_open,ac_found_iconv_lib="yes",ac_found_iconv_lib="no")
|
||||||
|
if test "x$ac_found_iconv_lib" = "xno" ; then
|
||||||
|
AC_CHECK_LIB(iconv,libiconv_open,ac_found_iconv_lib="yes",ac_found_iconv_lib="no")
|
||||||
|
fi
|
||||||
if test "x$ac_found_iconv_lib" = "xyes" ; then
|
if test "x$ac_found_iconv_lib" = "xyes" ; then
|
||||||
LIBS="$LIBS -liconv"
|
ICONV_LFLAGS="-liconv"
|
||||||
|
LIBS="$LIBS $ICONV_LFLAGS"
|
||||||
fi
|
fi
|
||||||
AC_MSG_CHECKING(for iconv usability in programs)
|
AC_MSG_CHECKING(for iconv usability in programs)
|
||||||
AC_TRY_RUN([
|
AC_TRY_RUN([
|
||||||
@@ -237,9 +247,11 @@ if test "x$enable_plugins" != "xyes" ; then
|
|||||||
enable_ruby="no"
|
enable_ruby="no"
|
||||||
enable_lua="no"
|
enable_lua="no"
|
||||||
enable_aspell="no"
|
enable_aspell="no"
|
||||||
|
enable_charset="no"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ---------------------------------- perl --------------------------------------
|
# ---------------------------------- perl --------------------------------------
|
||||||
|
PERL_VERSION=
|
||||||
|
|
||||||
if test "x$enable_perl" = "xyes" ; then
|
if test "x$enable_perl" = "xyes" ; then
|
||||||
enable_plugins="yes"
|
enable_plugins="yes"
|
||||||
@@ -253,6 +265,7 @@ if test "x$enable_perl" = "xyes" ; then
|
|||||||
enable_perl="no"
|
enable_perl="no"
|
||||||
not_found="$not_found perl"
|
not_found="$not_found perl"
|
||||||
else
|
else
|
||||||
|
PERL_VERSION=`perl -V:version | sed "s/version='\(.*\)';/\1/"`
|
||||||
AC_MSG_CHECKING(for Perl headers files)
|
AC_MSG_CHECKING(for Perl headers files)
|
||||||
|
|
||||||
PERL_HEADER_TEST=`PT=perltest.c ; echo "#include <EXTERN.h>" > $PT; echo "#include <perl.h>" >> $PT; echo "#include <XSUB.h>" >> $PT ; echo "int main() { return 0; }" >> $PT ; $CC -Wall $PT -o $PT.out $($PERL -MExtUtils::Embed -e ccopts) 1>/dev/null 2>&1; echo $?; rm -f $PT $PT.out 1>/dev/null 2>&1`
|
PERL_HEADER_TEST=`PT=perltest.c ; echo "#include <EXTERN.h>" > $PT; echo "#include <perl.h>" >> $PT; echo "#include <XSUB.h>" >> $PT ; echo "int main() { return 0; }" >> $PT ; $CC -Wall $PT -o $PT.out $($PERL -MExtUtils::Embed -e ccopts) 1>/dev/null 2>&1; echo $?; rm -f $PT $PT.out 1>/dev/null 2>&1`
|
||||||
@@ -262,7 +275,7 @@ if test "x$enable_perl" = "xyes" ; then
|
|||||||
AC_MSG_RESULT(found)
|
AC_MSG_RESULT(found)
|
||||||
AC_MSG_CHECKING(for Perl library)
|
AC_MSG_CHECKING(for Perl library)
|
||||||
PERL_LIB_TEST=`PT=perltest.c ; echo "int main() { return 0; }" > $PT ; $CC -Wall $PT -o $PT.out $($PERL -MExtUtils::Embed -e ldopts) 1>/dev/null 2>&1; echo $?; rm -f $PT $PT.out 1>/dev/null 2>&1`
|
PERL_LIB_TEST=`PT=perltest.c ; echo "int main() { return 0; }" > $PT ; $CC -Wall $PT -o $PT.out $($PERL -MExtUtils::Embed -e ldopts) 1>/dev/null 2>&1; echo $?; rm -f $PT $PT.out 1>/dev/null 2>&1`
|
||||||
if test "x$PERL_LIB_TEST" = "x0" ; then
|
if test "x$PERL_LIB_TEST" = "x0" ; then
|
||||||
PERL_LFLAGS=`$PERL -MExtUtils::Embed -e ldopts`
|
PERL_LFLAGS=`$PERL -MExtUtils::Embed -e ldopts`
|
||||||
AC_MSG_RESULT(found)
|
AC_MSG_RESULT(found)
|
||||||
else
|
else
|
||||||
@@ -291,11 +304,12 @@ if test "x$enable_perl" = "xyes" ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# --------------------------------- python -------------------------------------
|
# --------------------------------- python -------------------------------------
|
||||||
|
PYTHON_VERSION=
|
||||||
|
|
||||||
if test "x$enable_python" = "xyes" ; then
|
if test "x$enable_python" = "xyes" ; then
|
||||||
enable_plugins="yes"
|
enable_plugins="yes"
|
||||||
|
|
||||||
AC_PATH_PROGS(PYTHON, python python2.4 python2.3 python2.2)
|
AC_PATH_PROGS(PYTHON, python python2.5 python2.4 python2.3 python2.2)
|
||||||
if test -z $PYTHON ; then
|
if test -z $PYTHON ; then
|
||||||
AC_MSG_WARN([
|
AC_MSG_WARN([
|
||||||
*** Python must be installed on your system but python interpreter couldn't be found in path.
|
*** Python must be installed on your system but python interpreter couldn't be found in path.
|
||||||
@@ -350,6 +364,7 @@ if test "x$enable_python" = "xyes" ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---------------------------------- ruby --------------------------------------
|
# ---------------------------------- ruby --------------------------------------
|
||||||
|
RUBY_VERSION=
|
||||||
|
|
||||||
if test "x$enable_ruby" = "xyes" ; then
|
if test "x$enable_ruby" = "xyes" ; then
|
||||||
enable_plugins="yes"
|
enable_plugins="yes"
|
||||||
@@ -363,6 +378,7 @@ if test "x$enable_ruby" = "xyes" ; then
|
|||||||
enable_ruby="no"
|
enable_ruby="no"
|
||||||
not_found="$not_found ruby"
|
not_found="$not_found ruby"
|
||||||
else
|
else
|
||||||
|
RUBY_VERSION=`$RUBY -rrbconfig -e "puts Config::CONFIG[['ruby_version']]"`
|
||||||
RUBY_INCLUDE=`$RUBY -rrbconfig -e "puts Config::CONFIG[['archdir']]"`
|
RUBY_INCLUDE=`$RUBY -rrbconfig -e "puts Config::CONFIG[['archdir']]"`
|
||||||
AC_MSG_CHECKING(for Ruby header files)
|
AC_MSG_CHECKING(for Ruby header files)
|
||||||
if test -r "$RUBY_INCLUDE/ruby.h"; then
|
if test -r "$RUBY_INCLUDE/ruby.h"; then
|
||||||
@@ -387,6 +403,7 @@ if test "x$enable_ruby" = "xyes" ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---------------------------------- lua --------------------------------------
|
# ---------------------------------- lua --------------------------------------
|
||||||
|
LUA_VERSION=
|
||||||
|
|
||||||
if test "x$enable_lua" = "xyes" ; then
|
if test "x$enable_lua" = "xyes" ; then
|
||||||
enable_plugins="yes"
|
enable_plugins="yes"
|
||||||
@@ -412,13 +429,18 @@ if test "x$enable_lua" = "xyes" ; then
|
|||||||
if test "x$PKGCONFIG" != "x"; then
|
if test "x$PKGCONFIG" != "x"; then
|
||||||
AC_MSG_CHECKING(for Lua headers and librairies with pkg-config)
|
AC_MSG_CHECKING(for Lua headers and librairies with pkg-config)
|
||||||
echo
|
echo
|
||||||
for l in "$lua_suffix" "" "50" "5.0" "51" "5.1" ; do
|
for l in "$lua_suffix" "" "51" "5.1" "50" "5.0" ; do
|
||||||
pkgconfig_lua_found=`$PKGCONFIG --exists lua$l 2>/dev/null && $PKGCONFIG --exists lualib$l 2>/dev/null`
|
pkgconfig_lua_found=`$PKGCONFIG --exists lua$l 2>/dev/null`
|
||||||
if test "x$?" = "x0" ; then
|
if test "x$?" = "x0" ; then
|
||||||
|
LUA_VERSION=`$PKGCONFIG --modversion lua$l`
|
||||||
LUA_CFLAGS="$LUA_CFLAGS "`$PKGCONFIG --cflags lua$l`
|
LUA_CFLAGS="$LUA_CFLAGS "`$PKGCONFIG --cflags lua$l`
|
||||||
LUA_CFLAGS="$LUA_CFLAGS "`$PKGCONFIG --cflags lualib$l`
|
|
||||||
LUA_LFLAGS="$LUA_LFLAGS "`$PKGCONFIG --libs lua$l`
|
LUA_LFLAGS="$LUA_LFLAGS "`$PKGCONFIG --libs lua$l`
|
||||||
LUA_LFLAGS="$LUA_LFLAGS "`$PKGCONFIG --libs lualib$l`
|
|
||||||
|
pkgconfig_lualib_found=`$PKGCONFIG --exists lualib$l 2>/dev/null`
|
||||||
|
if test "x$?" = "x0"; then
|
||||||
|
LUA_CFLAGS="$LUA_CFLAGS "`$PKGCONFIG --cflags lualib$l`
|
||||||
|
LUA_LFLAGS="$LUA_LFLAGS "`$PKGCONFIG --libs lualib$l`
|
||||||
|
fi
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -427,12 +449,13 @@ if test "x$enable_lua" = "xyes" ; then
|
|||||||
|
|
||||||
if test "x$LUA_CFLAGS" = "x" -o "x$LUA_LFLAGS" = "x" ; then
|
if test "x$LUA_CFLAGS" = "x" -o "x$LUA_LFLAGS" = "x" ; then
|
||||||
LUACONFIG=""
|
LUACONFIG=""
|
||||||
AC_CHECK_PROGS(LUACONFIG, lua-config lua-config50 lua-config5.0 lua-config51 lua-config5.1)
|
AC_CHECK_PROGS(LUACONFIG, lua-config lua-config51 lua-config5.1 lua-config50 lua-config5.0)
|
||||||
if test "x$LUACONFIG" != "x" ; then
|
if test "x$LUACONFIG" != "x" ; then
|
||||||
AC_MSG_CHECKING(for Lua headers and librairies with lua-config)
|
AC_MSG_CHECKING(for Lua headers and librairies with lua-config)
|
||||||
echo
|
echo
|
||||||
LUA_CFLAGS=`$LUACONFIG --include`
|
LUA_CFLAGS=`$LUACONFIG --include`
|
||||||
LUA_LFLAGS=`$LUACONFIG --libs`
|
LUA_LFLAGS=`$LUACONFIG --libs`
|
||||||
|
LUA_VERSION="5.0.x"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -444,9 +467,11 @@ if test "x$enable_lua" = "xyes" ; then
|
|||||||
if test "x$ac_found_lua_header" = "xyes" -a "x$ac_found_liblua_header" = "xyes"; then
|
if test "x$ac_found_lua_header" = "xyes" -a "x$ac_found_liblua_header" = "xyes"; then
|
||||||
LUA_CFLAGS="$CFLAGS"
|
LUA_CFLAGS="$CFLAGS"
|
||||||
fi
|
fi
|
||||||
for l in "$lua_suffix" "" "50" "5.0" "51" "5.1" ; do
|
for l in "$lua_suffix" "" "51" "5.1" "50" "5.0" ; do
|
||||||
AC_CHECK_LIB(lua$l,lua_call,ac_found_lua_lib="yes",ac_found_lua_lib="no")
|
AC_CHECK_LIB(lua$l,lua_call,ac_found_lua_lib="yes",ac_found_lua_lib="no")
|
||||||
if test "x$ac_found_lua_lib" = "xyes" ; then
|
if test "x$ac_found_lua_lib" = "xyes" ; then
|
||||||
|
LUA_VERSION=">=5.1.0"
|
||||||
|
|
||||||
LUA_LFLAGS="$LDFLAGS -llua$l -lm"
|
LUA_LFLAGS="$LDFLAGS -llua$l -lm"
|
||||||
|
|
||||||
ac2_save_LDFLAGS="$LDFLAGS"
|
ac2_save_LDFLAGS="$LDFLAGS"
|
||||||
@@ -458,6 +483,8 @@ if test "x$enable_lua" = "xyes" ; then
|
|||||||
|
|
||||||
AC_CHECK_LIB(lualib$l,luaL_openlib,ac_found_liblua_lib="yes",ac_found_liblua_lib="no")
|
AC_CHECK_LIB(lualib$l,luaL_openlib,ac_found_liblua_lib="yes",ac_found_liblua_lib="no")
|
||||||
if test "x$ac_found_liblua_lib" = "xyes" ; then
|
if test "x$ac_found_liblua_lib" = "xyes" ; then
|
||||||
|
LUA_VERSION="5.0.x"
|
||||||
|
|
||||||
LUA_LFLAGS="$LUA_LFLAGS -llualib$l"
|
LUA_LFLAGS="$LUA_LFLAGS -llualib$l"
|
||||||
|
|
||||||
if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then
|
if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then
|
||||||
@@ -470,7 +497,7 @@ if test "x$enable_lua" = "xyes" ; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING(for Lua compiling and linking)
|
AC_MSG_CHECKING(for Lua compiling and linking)
|
||||||
LUA_TEST=`LT=luatest.c ; echo "#include <lua.h>" > $LT; echo "#include <lualib.h>" >> $LT; echo "int main() { luaopen_base((lua_State *)lua_open()); return 0; }" >> $LT ; $CC -Wall $LT -o $LT.out $LUA_CFLAGS $LUA_LFLAGS $CFLAGS $LDFLAGS 1>/dev/null 2>&1 ; echo $?; rm -f $LT $LT.out 1>/dev/null 2>&1`
|
LUA_TEST=`LT=luatest.c ; echo "#include <lua.h>" > $LT; echo "#include <lualib.h>" >> $LT; echo "int main() { luaopen_base((lua_State *)lua_open()); return 0; }" >> $LT ; $CC -Wall $LT -o $LT.out $LUA_CFLAGS $LUA_LFLAGS $CFLAGS $LDFLAGS 1>/dev/null 2>&1 ; echo $?; rm -f $LT $LT.out 1>/dev/null 2>&1`
|
||||||
if test "x$LUA_TEST" != "x0" ; then
|
if test "x$LUA_TEST" != "x0" ; then
|
||||||
@@ -528,6 +555,19 @@ if test "x$enable_aspell" = "xyes" ; then
|
|||||||
AC_DEFINE(PLUGIN_ASPELL)
|
AC_DEFINE(PLUGIN_ASPELL)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# charset
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if test "x$enable_charset" = "xyes" ; then
|
||||||
|
CHARSET_CFLAGS=""
|
||||||
|
CHARSET_LFLAGS=""
|
||||||
|
CHARSET_LFLAGS="$CHARSET_LFLAGS $ICONV_LFLAGS"
|
||||||
|
AC_SUBST(CHARSET_CFLAGS)
|
||||||
|
AC_SUBST(CHARSET_LFLAGS)
|
||||||
|
AC_DEFINE(PLUGIN_CHARSET)
|
||||||
|
fi
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# dynamic loader
|
# dynamic loader
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
@@ -551,6 +591,7 @@ if test "x$enable_plugins" = "xyes" ; then
|
|||||||
enable_ruby="no"
|
enable_ruby="no"
|
||||||
enable_lua="no"
|
enable_lua="no"
|
||||||
enable_aspell="no"
|
enable_aspell="no"
|
||||||
|
enable_charset="no"
|
||||||
not_found="$not_found plugins"
|
not_found="$not_found plugins"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -617,6 +658,12 @@ fi
|
|||||||
# documentation
|
# documentation
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
msg_doc=""
|
||||||
|
|
||||||
|
if test "x$DBLATEX_FOUND" = "xyes"; then
|
||||||
|
msg_doc="pdf $msg_doc"
|
||||||
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING(for html/chunk.xsl)
|
AC_MSG_CHECKING(for html/chunk.xsl)
|
||||||
DOC_XSL_PREFIX=""
|
DOC_XSL_PREFIX=""
|
||||||
|
|
||||||
@@ -633,9 +680,8 @@ for p in $doc_xsl_prefix_path; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if test "x$DOC_XSL_PREFIX" == "x"; then
|
if test "x$DOC_XSL_PREFIX" = "x"; then
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
enable_doc="no"
|
|
||||||
AC_MSG_WARN([
|
AC_MSG_WARN([
|
||||||
*** Docbook XSL files not found
|
*** Docbook XSL files not found
|
||||||
*** WeeChat will be built without documentation.
|
*** WeeChat will be built without documentation.
|
||||||
@@ -643,7 +689,7 @@ if test "x$DOC_XSL_PREFIX" == "x"; then
|
|||||||
else
|
else
|
||||||
AC_MSG_RESULT($DOC_XSL_PREFIX)
|
AC_MSG_RESULT($DOC_XSL_PREFIX)
|
||||||
AC_SUBST(DOC_XSL_PREFIX)
|
AC_SUBST(DOC_XSL_PREFIX)
|
||||||
enable_doc="yes"
|
msg_doc="html $msg_doc"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
@@ -736,8 +782,10 @@ AM_CONDITIONAL(PLUGIN_PYTHON, test "$enable_python" = "yes")
|
|||||||
AM_CONDITIONAL(PLUGIN_RUBY, test "$enable_ruby" = "yes")
|
AM_CONDITIONAL(PLUGIN_RUBY, test "$enable_ruby" = "yes")
|
||||||
AM_CONDITIONAL(PLUGIN_LUA, test "$enable_lua" = "yes")
|
AM_CONDITIONAL(PLUGIN_LUA, test "$enable_lua" = "yes")
|
||||||
AM_CONDITIONAL(PLUGIN_ASPELL, test "$enable_aspell" = "yes")
|
AM_CONDITIONAL(PLUGIN_ASPELL, test "$enable_aspell" = "yes")
|
||||||
|
AM_CONDITIONAL(PLUGIN_CHARSET, test "$enable_charset" = "yes")
|
||||||
AM_CONDITIONAL(HAVE_GNUTLS, test "$enable_gnutls" = "yes")
|
AM_CONDITIONAL(HAVE_GNUTLS, test "$enable_gnutls" = "yes")
|
||||||
AM_CONDITIONAL(HAVE_FLOCK, test "$enable_flock" = "yes")
|
AM_CONDITIONAL(HAVE_FLOCK, test "$enable_flock" = "yes")
|
||||||
|
AM_CONDITIONAL(DBLATEX_FOUND, test "$DBLATEX_FOUND" = "yes")
|
||||||
|
|
||||||
AC_OUTPUT([Makefile
|
AC_OUTPUT([Makefile
|
||||||
doc/Makefile
|
doc/Makefile
|
||||||
@@ -756,7 +804,8 @@ AC_OUTPUT([Makefile
|
|||||||
src/plugins/scripts/python/Makefile
|
src/plugins/scripts/python/Makefile
|
||||||
src/plugins/scripts/ruby/Makefile
|
src/plugins/scripts/ruby/Makefile
|
||||||
src/plugins/scripts/lua/Makefile
|
src/plugins/scripts/lua/Makefile
|
||||||
src/plugins/aspell/Makefile
|
src/plugins/aspell/Makefile
|
||||||
|
src/plugins/charset/Makefile
|
||||||
src/gui/Makefile
|
src/gui/Makefile
|
||||||
src/gui/curses/Makefile
|
src/gui/curses/Makefile
|
||||||
src/gui/wxwidgets/Makefile
|
src/gui/wxwidgets/Makefile
|
||||||
@@ -804,19 +853,42 @@ if test "x$debug" = "x2" ; then
|
|||||||
msg_debug_verbose="yes"
|
msg_debug_verbose="yes"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# plugin status
|
||||||
|
PERL_STATUS=
|
||||||
|
if test "x$enable_perl" = "xyes"; then
|
||||||
|
PERL_STATUS="($PERL_VERSION)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
PYTHON_STATUS=
|
||||||
|
if test "x$enable_python" = "xyes"; then
|
||||||
|
PYTHON_STATUS="($PYTHON_VERSION)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
RUBY_STATUS=
|
||||||
|
if test "x$enable_ruby" = "xyes"; then
|
||||||
|
RUBY_STATUS="($RUBY_VERSION)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
LUA_STATUS=
|
||||||
|
if test "x$enable_lua" = "xyes"; then
|
||||||
|
LUA_STATUS="($LUA_VERSION)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Interfaces........................ :$listgui"
|
echo "Interfaces........................ :$listgui"
|
||||||
echo "Build with GNUtls support......... : $enable_gnutls"
|
echo "Build with GNUtls support......... : $enable_gnutls"
|
||||||
echo "Build with flock support.......... : $enable_flock"
|
echo "Build with flock support.......... : $enable_flock"
|
||||||
echo "Build with Plugin support......... : $enable_plugins"
|
echo "Build with Plugin support......... : $enable_plugins"
|
||||||
echo " Perl plugin......... : $enable_perl"
|
echo " Perl plugin......... : $enable_perl $PERL_STATUS"
|
||||||
echo " Python plugin....... : $enable_python"
|
echo " Python plugin....... : $enable_python $PYTHON_STATUS"
|
||||||
echo " Ruby plugin......... : $enable_ruby"
|
echo " Ruby plugin......... : $enable_ruby $RUBY_STATUS"
|
||||||
echo " Lua plugin.......... : $enable_lua"
|
echo " Lua plugin.......... : $enable_lua $LUA_STATUS"
|
||||||
echo " Aspell plugin....... : $enable_aspell"
|
echo " Aspell plugin....... : $enable_aspell"
|
||||||
|
echo " Charset plugin...... : $enable_charset"
|
||||||
echo "Compile with debug info........... : $msg_debug_compiler"
|
echo "Compile with debug info........... : $msg_debug_compiler"
|
||||||
echo " Backtrace........... : $enable_backtrace"
|
echo " Backtrace........... : $enable_backtrace"
|
||||||
echo "Build doc..........................: $enable_doc"
|
echo "Build doc..........................: $msg_doc"
|
||||||
echo "Print debugging messages.......... : $msg_debug_verbose"
|
echo "Print debugging messages.......... : $msg_debug_verbose"
|
||||||
echo ""
|
echo ""
|
||||||
eval echo "WeeChat will be installed in $bindir."
|
eval echo "WeeChat will be installed in $bindir."
|
||||||
|
|||||||
Vendored
+21
@@ -1,3 +1,24 @@
|
|||||||
|
weechat (0.2.1-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* Overrive lintian menu-icon-missing warning
|
||||||
|
since the icon is in the weechat-common package.
|
||||||
|
|
||||||
|
-- Julien Louis <ptitlouis@sysif.net> Mon, 2 Oct 2006 15:30:06 +0200
|
||||||
|
|
||||||
|
weechat (0.2.0-2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Add libaspell-dev to Build-Depends. This enables the aspell plugin built.
|
||||||
|
|
||||||
|
-- Julien Louis <ptitlouis@sysif.net> Mon, 25 Sep 2006 23:56:16 +0200
|
||||||
|
|
||||||
|
weechat (0.2.0-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
* Rebuild against new default python version (Closes: #380985).
|
||||||
|
|
||||||
|
-- Julien Louis <ptitlouis@sysif.net> Sat, 19 Aug 2006 17:10:59 +0200
|
||||||
|
|
||||||
weechat (0.1.9-3) unstable; urgency=low
|
weechat (0.1.9-3) unstable; urgency=low
|
||||||
|
|
||||||
* Remove gnutls Build-Depends introduced in the previous upload
|
* Remove gnutls Build-Depends introduced in the previous upload
|
||||||
|
|||||||
Vendored
+1
-1
@@ -4,7 +4,7 @@ Priority: optional
|
|||||||
Maintainer: Sebastien Helleu <flashcode@flashtux.org>
|
Maintainer: Sebastien Helleu <flashcode@flashtux.org>
|
||||||
Uploaders: Julien Louis <ptitlouis@sysif.net>
|
Uploaders: Julien Louis <ptitlouis@sysif.net>
|
||||||
Build-Depends-Indep: xsltproc, docbook-xsl, docbook-xml
|
Build-Depends-Indep: xsltproc, docbook-xsl, docbook-xml
|
||||||
Build-Depends: cdbs, debhelper (>= 5), libncursesw5-dev, ruby, ruby1.8-dev, libperl-dev, python-dev, liblualib50-dev, libgnutls-dev, libtool, dpkg-dev (>= 1.13.19)
|
Build-Depends: cdbs, debhelper (>= 5), libncursesw5-dev, ruby, ruby1.8-dev, libperl-dev, python-dev, libaspell-dev, liblualib50-dev, libgnutls-dev, libtool, dpkg-dev (>= 1.13.19)
|
||||||
Standards-Version: 3.7.2
|
Standards-Version: 3.7.2
|
||||||
|
|
||||||
Package: weechat
|
Package: weechat
|
||||||
|
|||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
weechat-curses: menu-icon-missing /usr/share/pixmaps/weechat.xpm
|
||||||
Vendored
+3
@@ -32,3 +32,6 @@ include /usr/share/cdbs/1/rules/debhelper.mk
|
|||||||
|
|
||||||
install/weechat-common::
|
install/weechat-common::
|
||||||
install -D -o root -g root -m 644 debian/weechat.xpm $(CURDIR)/debian/weechat-common/usr/share/pixmaps/weechat.xpm
|
install -D -o root -g root -m 644 debian/weechat.xpm $(CURDIR)/debian/weechat-common/usr/share/pixmaps/weechat.xpm
|
||||||
|
|
||||||
|
install/weechat-curses::
|
||||||
|
install -D -o root -g root -m 644 debian/lintian-override $(CURDIR)/debian/weechat-curses/usr/share/lintian/overrides/weechat-curses
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -19,7 +19,7 @@ SUBDIRS = . en fr de ru pl cs
|
|||||||
|
|
||||||
man_MANS = weechat-curses.1
|
man_MANS = weechat-curses.1
|
||||||
|
|
||||||
EXTRA_DIST = $(man_MANS) weechat-doc.css weechat-html-one.xsl.in weechat-html.xsl.in
|
EXTRA_DIST = $(man_MANS) weechat-doc.css weechat-html-one.xsl.in weechat-html.xsl.in weechat-pdf.xsl dblatex.conf
|
||||||
|
|
||||||
all-local: weechat-html.xsl weechat-html-one.xsl
|
all-local: weechat-html.xsl weechat-html-one.xsl
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
#
|
#
|
||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
XslParam: weechat-pdf.xsl
|
||||||
+19
-3
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -22,9 +22,13 @@ QUICKSTART = weechat_quickstart.$(LANGCODE).txt
|
|||||||
|
|
||||||
EXTRA_DIST = $(BOOK).xml $(BOOK_INCLUDE) $(QUICKSTART)
|
EXTRA_DIST = $(BOOK).xml $(BOOK_INCLUDE) $(QUICKSTART)
|
||||||
|
|
||||||
|
if DBLATEX_FOUND
|
||||||
|
PDF = pdf-stamp
|
||||||
|
endif
|
||||||
|
|
||||||
docdir = $(datadir)/doc/$(PACKAGE)
|
docdir = $(datadir)/doc/$(PACKAGE)
|
||||||
|
|
||||||
all-local: html-stamp
|
all-local: html-stamp $(PDF)
|
||||||
|
|
||||||
# HTML output with chunks (many pages)
|
# HTML output with chunks (many pages)
|
||||||
|
|
||||||
@@ -48,16 +52,28 @@ html1-stamp: $(BOOK).xml $(BOOK_INCLUDE) ../weechat-html-one.xsl ../weechat-doc.
|
|||||||
cp ../weechat-doc.css html1/
|
cp ../weechat-doc.css html1/
|
||||||
touch html1-stamp
|
touch html1-stamp
|
||||||
|
|
||||||
|
# PDF output
|
||||||
|
|
||||||
|
pdf: pdf-stamp
|
||||||
|
|
||||||
|
pdf-stamp: $(BOOK).xml $(BOOK_INCLUDE)
|
||||||
|
echo "<pubdate>`date '+%F %T'`</pubdate>" >date.xml
|
||||||
|
dblatex -c ../dblatex.conf $(BOOK).xml || true
|
||||||
|
touch pdf-stamp
|
||||||
|
|
||||||
# install docs
|
# install docs
|
||||||
|
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
$(mkinstalldirs) $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
$(mkinstalldirs) $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||||
$(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
$(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||||
$(INSTALL_DATA) $(QUICKSTART) $(DESTDIR)$(docdir)/
|
$(INSTALL_DATA) $(QUICKSTART) $(DESTDIR)$(docdir)/
|
||||||
|
if DBLATEX_FOUND
|
||||||
|
$(INSTALL_DATA) $(BOOK).pdf $(DESTDIR)$(docdir)/
|
||||||
|
endif
|
||||||
|
|
||||||
# clean
|
# clean
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
-rm -f $(BOOK).html $(BOOK).pdf $(BOOK).txt date.xml
|
-rm -f $(BOOK).html $(BOOK).pdf $(BOOK).txt date.xml
|
||||||
-rm -rf html/ html1/
|
-rm -rf html/ html1/
|
||||||
-rm -f html-stamp html1-stamp
|
-rm -f html-stamp html1-stamp pdf-stamp
|
||||||
|
|||||||
+31
-52
@@ -40,34 +40,6 @@
|
|||||||
<entry>'the geekest IRC client!'</entry>
|
<entry>'the geekest IRC client!'</entry>
|
||||||
<entry>WeeChat-Slogan (wenn leer, wird keiner benutzt)</entry>
|
<entry>WeeChat-Slogan (wenn leer, wird keiner benutzt)</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_decode_iso</option></entry>
|
|
||||||
<entry>Zeichenfolge</entry>
|
|
||||||
<entry>eine beliebige Zeichenfolge</entry>
|
|
||||||
<entry>'ISO-8859-1'</entry>
|
|
||||||
<entry>ISO-Zeichensatz zum Dekodieren von Nachrichten vom Server (wird nur benutzt, wenn UTF-8 als Locale eingestellt ist; wenn nichts angegeben wird und die Locale UTF-8 ist, findet keine Konvertierung statt)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_decode_utf</option></entry>
|
|
||||||
<entry>Zeichenfolge</entry>
|
|
||||||
<entry>eine beliebige Zeichenfolge</entry>
|
|
||||||
<entry>'UTF-8'</entry>
|
|
||||||
<entry>UTF-Zeichensatz zum Dekodieren von Nachrichten vom Server (wird nur benutzt, wenn die Locale nicht UTF-8 ist; wenn nichts angegeben wird und die Locale nicht UTF-8 ist, findet keine Konvertierung statt)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_encode</option></entry>
|
|
||||||
<entry>Zeichenfolge</entry>
|
|
||||||
<entry>eine beliebige Zeichenfolge</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Zeichensatz zum Enkodieren von Nachrichten zum Server, wie zum Beispiel: UTF-8, ISO-8859-1 (wenn nichts angegeben wird, findet keine Konversion statt)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_internal</option></entry>
|
|
||||||
<entry>Zeichenfolge</entry>
|
|
||||||
<entry>eine beliebige Zeichenfolge</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Erzwingt internen WeeChat-Zeichensatz (sollte normalerweise leer sein, dadurch wird der erkannte Zeichensatz benutzt)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
<row>
|
||||||
<entry><option>look_one_server_buffer</option></entry>
|
<entry><option>look_one_server_buffer</option></entry>
|
||||||
<entry>Boolean</entry>
|
<entry>Boolean</entry>
|
||||||
@@ -138,6 +110,13 @@
|
|||||||
<entry>0</entry>
|
<entry>0</entry>
|
||||||
<entry>Maximale Größe der Nicklist (Breite oder Höhe, je nach look_nicklist_position (0: kein Maximum); Wenn min == max > 0, ist die Größe fest.</entry>
|
<entry>Maximale Größe der Nicklist (Breite oder Höhe, je nach look_nicklist_position (0: kein Maximum); Wenn min == max > 0, ist die Größe fest.</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>look_nicklist_separator</option></entry>
|
||||||
|
<entry>Boolean</entry>
|
||||||
|
<entry>zwischen 0 und 100</entry>
|
||||||
|
<entry>'on'</entry>
|
||||||
|
<entry>Trennzeichen zwischen Chatfenster und Nickliste</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>look_no_nickname</option></entry>
|
<entry><option>look_no_nickname</option></entry>
|
||||||
<entry>Zeichenfolge</entry>
|
<entry>Zeichenfolge</entry>
|
||||||
@@ -320,6 +299,13 @@
|
|||||||
<entry>'default'</entry>
|
<entry>'default'</entry>
|
||||||
<entry>Textfarbe der Titelleiste</entry>
|
<entry>Textfarbe der Titelleiste</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>col_title_more</option></entry>
|
||||||
|
<entry>Farbe</entry>
|
||||||
|
<entry>Curses- oder Gtk-Farben</entry>
|
||||||
|
<entry>'lightmagenta'</entry>
|
||||||
|
<entry>Color for '+' when scrolling topic</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>col_title_bg</option></entry>
|
<entry><option>col_title_bg</option></entry>
|
||||||
<entry>Farbe</entry>
|
<entry>Farbe</entry>
|
||||||
@@ -915,10 +901,17 @@
|
|||||||
<entry>5</entry>
|
<entry>5</entry>
|
||||||
<entry>Maximal-Lag bis zum Trennen der Verbindung (in Minuten - 0: nie trennen)</entry>
|
<entry>Maximal-Lag bis zum Trennen der Verbindung (in Minuten - 0: nie trennen)</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>irc_anti_flood</option></entry>
|
||||||
|
<entry>Ganzzahl</entry>
|
||||||
|
<entry>zwischen 0 und 5</entry>
|
||||||
|
<entry>2</entry>
|
||||||
|
<entry>Anti-flood: # seconds between two user messages (0 = no anti-flood)</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>irc_fifo_pipe</option></entry>
|
<entry><option>irc_fifo_pipe</option></entry>
|
||||||
<entry>Boolean</entry>
|
<entry>Boolean</entry>
|
||||||
<entry>zwischen 0 und 2147483647</entry>
|
<entry>zwischen 0 und 5</entry>
|
||||||
<entry>'off'</entry>
|
<entry>'off'</entry>
|
||||||
<entry>Einen FIFO zur Fernsteuerung des Clients von anderen Prozessen öffnen</entry>
|
<entry>Einen FIFO zur Fernsteuerung des Clients von anderen Prozessen öffnen</entry>
|
||||||
</row>
|
</row>
|
||||||
@@ -943,6 +936,13 @@
|
|||||||
<entry>'on'</entry>
|
<entry>'on'</entry>
|
||||||
<entry>Erlaube Benutzern, spezielle Codes zu versenden (%B=fett, %Cxx,yy=Farbe, %U=unterstrichen, %R=reverse/umgekehrt)</entry>
|
<entry>Erlaube Benutzern, spezielle Codes zu versenden (%B=fett, %Cxx,yy=Farbe, %U=unterstrichen, %R=reverse/umgekehrt)</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>irc_send_unknown_commands</option></entry>
|
||||||
|
<entry>Boolean</entry>
|
||||||
|
<entry>eine beliebige Zeichenfolge</entry>
|
||||||
|
<entry>'off'</entry>
|
||||||
|
<entry>Sende unbekannte Befehle an den IRC-Server</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>dcc_auto_accept_files</option></entry>
|
<entry><option>dcc_auto_accept_files</option></entry>
|
||||||
<entry>Boolean</entry>
|
<entry>Boolean</entry>
|
||||||
@@ -1207,7 +1207,7 @@
|
|||||||
<entry>Zeichenfolge</entry>
|
<entry>Zeichenfolge</entry>
|
||||||
<entry>eine beliebige Zeichenfolge</entry>
|
<entry>eine beliebige Zeichenfolge</entry>
|
||||||
<entry>''</entry>
|
<entry>''</entry>
|
||||||
<entry>Befehle, die nach der Verbindung zum Server ausgefĂĽhrt werden sollen (mehrere Befehle mĂĽssen mit einem Semikolon getrennt werden, um ein Semikolon zu schreiben, muss man '\;' verwenden)</entry>
|
<entry>Befehle, die nach der Verbindung zum Server ausgefĂĽhrt werden sollen (mehrere Befehle mĂĽssen mit einem Semikolon getrennt werden, um ein Semikolon zu schreiben, muss man '\;' verwenden, die spezielllen Variablen $nick, $channel und $server werden dabei durch den jeweiligen Wert ersetzt)</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>server_command_delay</option></entry>
|
<entry><option>server_command_delay</option></entry>
|
||||||
@@ -1235,26 +1235,5 @@
|
|||||||
<entry>Zeichenfolge</entry>
|
<entry>Zeichenfolge</entry>
|
||||||
<entry>eine beliebige Zeichenfolge</entry>
|
<entry>eine beliebige Zeichenfolge</entry>
|
||||||
<entry>''</entry>
|
<entry>''</entry>
|
||||||
<entry>Durch Kommata getrennte Liste der Notify-Levels fĂĽr die Channels auf diesem Server (Format: #channel:1,...)</entry>
|
<entry>Durch Kommata getrennte Liste der Notify-Levels fĂĽr die Channels auf diesem Server (Format: #channel:1,...), der Channelname '*' ist fĂĽr den Default-Server-Notify-Level</entry>
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>server_charset_decode_iso</option></entry>
|
|
||||||
<entry>Zeichenfolge</entry>
|
|
||||||
<entry>eine beliebige Zeichenfolge</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Durch Kommata getrennte Liste der Zeichensätze für den Server und die Channels, um ISO-Nachrichten zu dekodieren (Format: Server:Zeichensatz,#Channel:Zeichensatz)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>server_charset_decode_utf</option></entry>
|
|
||||||
<entry>Zeichenfolge</entry>
|
|
||||||
<entry>eine beliebige Zeichenfolge</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Durch Kommata getrennte Liste der Zeichensätze für Server und Channels, um UTF zu dekodieren (Format: Server:Zeichensatz,#Channel:Zeichensatz,..)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>server_charset_encode</option></entry>
|
|
||||||
<entry>Zeichenfolge</entry>
|
|
||||||
<entry>eine beliebige Zeichenfolge</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Durch Kommata getrennte Liste der Zeichensätze, um Nachrichten vom Server und aus Channels zu dekodieren (Format: Server:Zeichensatz,#Channel:Zeichensatz,..)</entry>
|
|
||||||
</row>
|
</row>
|
||||||
|
|||||||
@@ -42,12 +42,12 @@ Nicknames oder Hosts sperren/verbannen
|
|||||||
Nickname: zu sperrender User oder Host
|
Nickname: zu sperrender User oder Host
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>ctcp Nickname Typ [Argumente]</command>
|
<command>ctcp Empfänger Typ [Argumente]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
CTCP-Nachricht verschicken
|
CTCP-Nachricht verschicken
|
||||||
|
|
||||||
Nickname: User, an den die CTCP-Nachricht geschickt werden soll
|
Empfänger: User, an den die CTCP-Nachricht geschickt werden soll
|
||||||
Typ: Typ der CTCP-Nachricht (z.B. "version", "ping", ...)
|
Typ: Typ der CTCP-Nachricht (z.B. "version", "ping", ..)
|
||||||
Argumente: Argumente fĂĽr CTCP
|
Argumente: Argumente fĂĽr CTCP
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|||||||
@@ -117,6 +117,14 @@
|
|||||||
<entry><literal>scroll_bottom</literal></entry>
|
<entry><literal>scroll_bottom</literal></entry>
|
||||||
<entry>nach ganz unten scrollen</entry>
|
<entry>nach ganz unten scrollen</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><literal>scroll_topic_left</literal></entry>
|
||||||
|
<entry>scroll left topic</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><literal>scroll_topic_right</literal></entry>
|
||||||
|
<entry>scroll right topic</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>nick_beginning</literal></entry>
|
<entry><literal>nick_beginning</literal></entry>
|
||||||
<entry>zum Anfang der Nicklist gehen</entry>
|
<entry>zum Anfang der Nicklist gehen</entry>
|
||||||
|
|||||||
+861
-221
File diff suppressed because it is too large
Load Diff
+14
-15
@@ -13,6 +13,9 @@ Aliasname: Name des Alias
|
|||||||
Befehl: Befehlsname (WeeChat- oder IRC-Befehl ohne führenden '/', mehrere Befehle können durch Semikola getrennt werden)
|
Befehl: Befehlsname (WeeChat- oder IRC-Befehl ohne führenden '/', mehrere Befehle können durch Semikola getrennt werden)
|
||||||
Argumente: Argumente fĂĽr den Befehl
|
Argumente: Argumente fĂĽr den Befehl
|
||||||
|
|
||||||
|
</programlisting>
|
||||||
|
<command>wird durch alle Argumente ersetzt.</command>
|
||||||
|
<programlisting>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>buffer [Aktion [Argumente] | Nummer | [[Server] [Channel]]]</command>
|
<command>buffer [Aktion [Argumente] | Nummer | [[Server] [Channel]]]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
@@ -23,6 +26,7 @@ Puffer verwalten
|
|||||||
close: Puffer schlieĂźen (eine Part-Message kann optional angegeben werden)
|
close: Puffer schlieĂźen (eine Part-Message kann optional angegeben werden)
|
||||||
list: alle offenen Puffer auflisten (Standardaktion)
|
list: alle offenen Puffer auflisten (Standardaktion)
|
||||||
notify: Notify-Level für Puffer festlegen (0=nie, 1=bei hervorgehobenen Nachrichten, 2=1+persönliche Nachricht, 3=2+join/part)
|
notify: Notify-Level für Puffer festlegen (0=nie, 1=bei hervorgehobenen Nachrichten, 2=1+persönliche Nachricht, 3=2+join/part)
|
||||||
|
(wenn der Befehl in einem Server Puffer ausgefĂĽhrt wird, setzt er den Default-Notify-Level fĂĽr den ganzen Server)
|
||||||
Server
|
Server
|
||||||
Channel: gehe zum Puffer mit Servernamen oder Channelnamen
|
Channel: gehe zum Puffer mit Servernamen oder Channelnamen
|
||||||
Nummer: gehe zu Puffer mit dieser Nummer
|
Nummer: gehe zu Puffer mit dieser Nummer
|
||||||
@@ -35,16 +39,6 @@ starte eingebauten WeeChat/IRC-Befehl (ohne Plugin-Handler oder Aliase)
|
|||||||
Befehl: auszufĂĽhrender Befehl (falls nicht vorhanden wird automatisch ein '/' vorangestellt)
|
Befehl: auszufĂĽhrender Befehl (falls nicht vorhanden wird automatisch ein '/' vorangestellt)
|
||||||
|
|
||||||
|
|
||||||
</programlisting>
|
|
||||||
<command>charset [(decode_iso | decode_utf | encode) Zeichensatz]</command>
|
|
||||||
<programlisting>
|
|
||||||
ändere Zeichensatz für den Server oder Channel
|
|
||||||
|
|
||||||
decode_iso: Zeichensatz um ISO zu decoden
|
|
||||||
decode_utf: Zeichensatz um UTF zu decoden
|
|
||||||
encode: der zum encoden benutzte Zeichensatz
|
|
||||||
Zeichensatz: Zeichensatz, der benutzt werden soll (zum Beispiel: ISO-8859-15, UTF-8,..)
|
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>clear [-all]</command>
|
<command>clear [-all]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
@@ -114,23 +108,28 @@ Bei jedem Argument steht '*' f
|
|||||||
Ohne Argumente listet /ignore alle definierten /ignore-Regeln auf.
|
Ohne Argumente listet /ignore alle definierten /ignore-Regeln auf.
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>key [Taste Funktion/Befehl] [unbind Taste] [functions] [reset -yes]</command>
|
<command>key [Taste [Funktion/Befehl]] [unbind Taste] [functions] [reset -yes]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
belegen/freigeben von Tasten
|
belegen/freigeben von Tasten
|
||||||
|
|
||||||
Taste: diese Taste mit einer internen Funktion oder einem Befehl, beginnend mit "/", belegen
|
Taste: diese Taste mit einer internen Funktion oder einem Befehl, beginnend mit "/", belegen
|
||||||
unbind: Tastenbelegung aufheben
|
unbind: Tastenbelegung aufheben
|
||||||
functions: interne Funktionen fĂĽr Tastenbelegungen auflisten
|
functions: interne Funktionen fĂĽr Tastenbelegungen auflisten
|
||||||
reset: Standardbelegung wiederherstellen und entferne alle eigenen Belegungen (Vorsicht!)
|
reset: Standardbelegung wiederherstellen und entferne ALLE eigenen Belegungen (Vorsicht!)
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>plugin [load Dateiname] | [autoload] | [reload] | [unload]</command>
|
<command>plugin [list [Name]] | [listfull [Name]] | [load Dateiname] | [autoload] | [reload [Name]] | [unload [Name]]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
auflisten/laden/entladen von Plugins
|
auflisten/laden/entladen von Plugins
|
||||||
|
|
||||||
Dateiname: zu ladendes Plugin
|
list: geladene Plugins auflisten
|
||||||
|
listfull: geladene Plugins mit Details fĂĽr jedes Plugin auflisten
|
||||||
|
load: lade ein Plugin
|
||||||
|
autoload: lade automatisch alle Plugins im System- oder Benutzerverzeichnis
|
||||||
|
reload: lade ein Plugin erneut (wenn kein Name vorgegeben ist, werden alle Plugins entladen und autolade die Plugins)
|
||||||
|
unload: entlade eines oder alle Plugins
|
||||||
|
|
||||||
Ohne Argumente werden alle geladenen Plugins aufgelistet.
|
Ohne Argument, listet /plugin alle geladenen Plugins auf.
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>server [Servername] | [Servername Hostname Port [-auto | -noauto] [-ipv6] [-ssl] [-pwd Passwort] [-nicks Nick1 Nick2 Nick3] [-username Benutzername] [-realname Name] [-command Befehl] [-autojoin Channel[,Channel]] ] | [del Servername]</command>
|
<command>server [Servername] | [Servername Hostname Port [-auto | -noauto] [-ipv6] [-ssl] [-pwd Passwort] [-nicks Nick1 Nick2 Nick3] [-username Benutzername] [-realname Name] [-command Befehl] [-autojoin Channel[,Channel]] ] | [del Servername]</command>
|
||||||
|
|||||||
+19
-3
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -22,9 +22,13 @@ QUICKSTART = weechat_quickstart.$(LANGCODE).txt
|
|||||||
|
|
||||||
EXTRA_DIST = $(BOOK).xml $(BOOK_INCLUDE) $(QUICKSTART)
|
EXTRA_DIST = $(BOOK).xml $(BOOK_INCLUDE) $(QUICKSTART)
|
||||||
|
|
||||||
|
if DBLATEX_FOUND
|
||||||
|
PDF = pdf-stamp
|
||||||
|
endif
|
||||||
|
|
||||||
docdir = $(datadir)/doc/$(PACKAGE)
|
docdir = $(datadir)/doc/$(PACKAGE)
|
||||||
|
|
||||||
all-local: html-stamp
|
all-local: html-stamp $(PDF)
|
||||||
|
|
||||||
# HTML output with chunks (many pages)
|
# HTML output with chunks (many pages)
|
||||||
|
|
||||||
@@ -48,16 +52,28 @@ html1-stamp: $(BOOK).xml $(BOOK_INCLUDE) ../weechat-html-one.xsl ../weechat-doc.
|
|||||||
cp ../weechat-doc.css html1/
|
cp ../weechat-doc.css html1/
|
||||||
touch html1-stamp
|
touch html1-stamp
|
||||||
|
|
||||||
|
# PDF output
|
||||||
|
|
||||||
|
pdf: pdf-stamp
|
||||||
|
|
||||||
|
pdf-stamp: $(BOOK).xml $(BOOK_INCLUDE)
|
||||||
|
echo "<pubdate>`date '+%F %T'`</pubdate>" >date.xml
|
||||||
|
dblatex -c ../dblatex.conf $(BOOK).xml || true
|
||||||
|
touch pdf-stamp
|
||||||
|
|
||||||
# install docs
|
# install docs
|
||||||
|
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
$(mkinstalldirs) $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
$(mkinstalldirs) $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||||
$(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
$(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||||
$(INSTALL_DATA) $(QUICKSTART) $(DESTDIR)$(docdir)/
|
$(INSTALL_DATA) $(QUICKSTART) $(DESTDIR)$(docdir)/
|
||||||
|
if DBLATEX_FOUND
|
||||||
|
$(INSTALL_DATA) $(BOOK).pdf $(DESTDIR)$(docdir)/
|
||||||
|
endif
|
||||||
|
|
||||||
# clean
|
# clean
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
-rm -f $(BOOK).html $(BOOK).pdf $(BOOK).txt date.xml
|
-rm -f $(BOOK).html $(BOOK).pdf $(BOOK).txt date.xml
|
||||||
-rm -rf html/ html1/
|
-rm -rf html/ html1/
|
||||||
-rm -f html-stamp html1-stamp
|
-rm -f html-stamp html1-stamp pdf-stamp
|
||||||
|
|||||||
+30
-51
@@ -40,34 +40,6 @@
|
|||||||
<entry>'the geekest IRC client!'</entry>
|
<entry>'the geekest IRC client!'</entry>
|
||||||
<entry>WeeChat slogan (if empty, slogan is not used)</entry>
|
<entry>WeeChat slogan (if empty, slogan is not used)</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_decode_iso</option></entry>
|
|
||||||
<entry>string</entry>
|
|
||||||
<entry>any string</entry>
|
|
||||||
<entry>'ISO-8859-1'</entry>
|
|
||||||
<entry>ISO charset for decoding messages from server (used only if locale is UTF-8) (if empty, messages are not converted if locale is UTF-8)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_decode_utf</option></entry>
|
|
||||||
<entry>string</entry>
|
|
||||||
<entry>any string</entry>
|
|
||||||
<entry>'UTF-8'</entry>
|
|
||||||
<entry>UTF charset for decoding messages from server (used only if locale is not UTF-8) (if empty, messages are not converted if locale is not UTF-8)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_encode</option></entry>
|
|
||||||
<entry>string</entry>
|
|
||||||
<entry>any string</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Charset for encoding messages sent to server, examples: UTF-8, ISO-8859-1 (if empty, messages are not converted)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_internal</option></entry>
|
|
||||||
<entry>string</entry>
|
|
||||||
<entry>any string</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Forces internal WeeChat charset (should be empty in most cases, that means detected charset is used)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
<row>
|
||||||
<entry><option>look_one_server_buffer</option></entry>
|
<entry><option>look_one_server_buffer</option></entry>
|
||||||
<entry>boolean</entry>
|
<entry>boolean</entry>
|
||||||
@@ -138,6 +110,13 @@
|
|||||||
<entry>0</entry>
|
<entry>0</entry>
|
||||||
<entry>Max size for nicklist (width or height, depending on look_nicklist_position (0 = no max size; if min == max and > 0, then size is fixed))</entry>
|
<entry>Max size for nicklist (width or height, depending on look_nicklist_position (0 = no max size; if min == max and > 0, then size is fixed))</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>look_nicklist_separator</option></entry>
|
||||||
|
<entry>boolean</entry>
|
||||||
|
<entry>'on' or 'off'</entry>
|
||||||
|
<entry>'on'</entry>
|
||||||
|
<entry>Separator between chat and nicklist</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>look_no_nickname</option></entry>
|
<entry><option>look_no_nickname</option></entry>
|
||||||
<entry>string</entry>
|
<entry>string</entry>
|
||||||
@@ -320,6 +299,13 @@
|
|||||||
<entry>'default'</entry>
|
<entry>'default'</entry>
|
||||||
<entry>Color for title bar</entry>
|
<entry>Color for title bar</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>col_title_more</option></entry>
|
||||||
|
<entry>color</entry>
|
||||||
|
<entry>Curses or Gtk color</entry>
|
||||||
|
<entry>'lightmagenta'</entry>
|
||||||
|
<entry>Color for '+' when scrolling topic</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>col_title_bg</option></entry>
|
<entry><option>col_title_bg</option></entry>
|
||||||
<entry>color</entry>
|
<entry>color</entry>
|
||||||
@@ -915,6 +901,13 @@
|
|||||||
<entry>5</entry>
|
<entry>5</entry>
|
||||||
<entry>Disconnect after important lag (in minutes, 0 = never disconnect)</entry>
|
<entry>Disconnect after important lag (in minutes, 0 = never disconnect)</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>irc_anti_flood</option></entry>
|
||||||
|
<entry>integer</entry>
|
||||||
|
<entry>between 0 and 5</entry>
|
||||||
|
<entry>2</entry>
|
||||||
|
<entry>Anti-flood: # seconds between two user messages (0 = no anti-flood)</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>irc_fifo_pipe</option></entry>
|
<entry><option>irc_fifo_pipe</option></entry>
|
||||||
<entry>boolean</entry>
|
<entry>boolean</entry>
|
||||||
@@ -943,6 +936,13 @@
|
|||||||
<entry>'on'</entry>
|
<entry>'on'</entry>
|
||||||
<entry>Allow user to send colors with special codes (%B=bold, %Cxx,yy=color, %U=underline, %R=reverse)</entry>
|
<entry>Allow user to send colors with special codes (%B=bold, %Cxx,yy=color, %U=underline, %R=reverse)</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>irc_send_unknown_commands</option></entry>
|
||||||
|
<entry>boolean</entry>
|
||||||
|
<entry>'on' or 'off'</entry>
|
||||||
|
<entry>'off'</entry>
|
||||||
|
<entry>Send unknown commands to IRC server</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>dcc_auto_accept_files</option></entry>
|
<entry><option>dcc_auto_accept_files</option></entry>
|
||||||
<entry>boolean</entry>
|
<entry>boolean</entry>
|
||||||
@@ -1207,7 +1207,7 @@
|
|||||||
<entry>string</entry>
|
<entry>string</entry>
|
||||||
<entry>any string</entry>
|
<entry>any string</entry>
|
||||||
<entry>''</entry>
|
<entry>''</entry>
|
||||||
<entry>Command(s) to run when connected to server (many commands should be separated by ';', use '\;' for a semicolon)</entry>
|
<entry>Command(s) to run when connected to server (many commands should be separated by ';', use '\;' for a semicolon, special variables $nick, $channel and $server are replaced by their value)</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>server_command_delay</option></entry>
|
<entry><option>server_command_delay</option></entry>
|
||||||
@@ -1235,26 +1235,5 @@
|
|||||||
<entry>string</entry>
|
<entry>string</entry>
|
||||||
<entry>any string</entry>
|
<entry>any string</entry>
|
||||||
<entry>''</entry>
|
<entry>''</entry>
|
||||||
<entry>Comma separated list of notify levels for channels of this server (format: #channel:1,..)</entry>
|
<entry>Comma separated list of notify levels for channels of this server (format: #channel:1,..), a channel name '*' is reserved for server default notify level</entry>
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>server_charset_decode_iso</option></entry>
|
|
||||||
<entry>string</entry>
|
|
||||||
<entry>any string</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Comma separated list of charsets for server and channels, to decode ISO (format: server:charset,#channel:charset,..)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>server_charset_decode_utf</option></entry>
|
|
||||||
<entry>string</entry>
|
|
||||||
<entry>any string</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Comma separated list of charsets for server and channels, to decode UTF (format: server:charset,#channel:charset,..)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>server_charset_encode</option></entry>
|
|
||||||
<entry>string</entry>
|
|
||||||
<entry>any string</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Comma separated list of charsets for server and channels, to encode messages (format: server:charset,#channel:charset,..)</entry>
|
|
||||||
</row>
|
</row>
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ bans nicks or hosts
|
|||||||
nickname: user or host to ban
|
nickname: user or host to ban
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>ctcp nickname type [arguments]</command>
|
<command>ctcp receiver type [arguments]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
send a CTCP message (Client-To-Client Protocol)
|
send a CTCP message (Client-To-Client Protocol)
|
||||||
|
|
||||||
nickname: user to send CTCP to
|
receiver: nick or channel to send CTCP to
|
||||||
type: CTCP type (examples: "version", "ping", ..)
|
type: CTCP type (examples: "version", "ping", ..)
|
||||||
arguments: arguments for CTCP
|
arguments: arguments for CTCP
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,14 @@
|
|||||||
<entry><literal>scroll_bottom</literal></entry>
|
<entry><literal>scroll_bottom</literal></entry>
|
||||||
<entry>scroll to bottom of buffer</entry>
|
<entry>scroll to bottom of buffer</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><literal>scroll_topic_left</literal></entry>
|
||||||
|
<entry>scroll left topic</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><literal>scroll_topic_right</literal></entry>
|
||||||
|
<entry>scroll right topic</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>nick_beginning</literal></entry>
|
<entry><literal>nick_beginning</literal></entry>
|
||||||
<entry>display beginning of nicklist</entry>
|
<entry>display beginning of nicklist</entry>
|
||||||
|
|||||||
+698
-57
File diff suppressed because it is too large
Load Diff
+15
-16
@@ -13,6 +13,9 @@ alias_name: name of alias
|
|||||||
command: command name (WeeChat or IRC command, many commands can be separated by semicolons)
|
command: command name (WeeChat or IRC command, many commands can be separated by semicolons)
|
||||||
arguments: arguments for command
|
arguments: arguments for command
|
||||||
|
|
||||||
|
</programlisting>
|
||||||
|
<command>is replaced by all arguments.</command>
|
||||||
|
<programlisting>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>buffer [action [args] | number | [[server] [channel]]]</command>
|
<command>buffer [action [args] | number | [[server] [channel]]]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
@@ -23,7 +26,8 @@ manage buffers
|
|||||||
close: close buffer (optional arg is part message, for a channel)
|
close: close buffer (optional arg is part message, for a channel)
|
||||||
list: list open buffers (no parameter implies this list)
|
list: list open buffers (no parameter implies this list)
|
||||||
notify: set notify level for buffer (0=never, 1=highlight, 2=1+msg, 3=2+join/part)
|
notify: set notify level for buffer (0=never, 1=highlight, 2=1+msg, 3=2+join/part)
|
||||||
server
|
(when executed on server buffer, this sets default notify level for whole server)
|
||||||
|
server,
|
||||||
channel: jump to buffer by server and/or channel name
|
channel: jump to buffer by server and/or channel name
|
||||||
number: jump to buffer by number
|
number: jump to buffer by number
|
||||||
|
|
||||||
@@ -35,16 +39,6 @@ launch WeeChat/IRC builtin command (do not look at plugins handlers or aliases)
|
|||||||
command: command to execute (a '/' is automatically added if not found at beginning of command)
|
command: command to execute (a '/' is automatically added if not found at beginning of command)
|
||||||
|
|
||||||
|
|
||||||
</programlisting>
|
|
||||||
<command>charset [(decode_iso | decode_utf | encode) charset]</command>
|
|
||||||
<programlisting>
|
|
||||||
change charset for server or channel
|
|
||||||
|
|
||||||
decode_iso: charset used for decoding ISO
|
|
||||||
decode_utf: charset used for decoding UTF
|
|
||||||
encode: charset used for encoding messages
|
|
||||||
charset: charset to use (for example: ISO-8859-15, UTF-8,..)
|
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>clear [-all]</command>
|
<command>clear [-all]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
@@ -113,23 +107,28 @@ For each argument, '*' means all.
|
|||||||
Without argument, /ignore command lists all defined ignore.
|
Without argument, /ignore command lists all defined ignore.
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>key [key function/command] [unbind key] [functions] [reset -yes]</command>
|
<command>key [key [function/command]] [unbind key] [functions] [reset -yes]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
bind/unbind keys
|
bind/unbind keys
|
||||||
|
|
||||||
key: bind this key to an internal function or a command (beginning by "/")
|
key: display or bind this key to an internal function or a command (beginning by "/")
|
||||||
unbind: unbind a key
|
unbind: unbind a key
|
||||||
functions: list internal functions for key bindings
|
functions: list internal functions for key bindings
|
||||||
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
|
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>plugin [load filename] | [autoload] | [reload] | [unload]</command>
|
<command>plugin [list [name]] | [listfull [name]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
list/load/unload plugins
|
list/load/unload plugins
|
||||||
|
|
||||||
filename: WeeChat plugin (file) to load
|
list: list loaded plugins
|
||||||
|
listfull: list loaded plugins with detailed info for each plugin
|
||||||
|
load: load a plugin
|
||||||
|
autoload: autoload plugins in system or user directory
|
||||||
|
reload: reload one plugin (if no name given, unload all plugins, then autoload plugins)
|
||||||
|
unload: unload one or all plugins
|
||||||
|
|
||||||
Without argument, /plugin command lists all loaded plugins.
|
Without argument, /plugin command lists loaded plugins.
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>server [servername] | [servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 nick2 nick3] [-username username] [-realname realname] [-command command] [-autojoin channel[,channel]] ] | [del servername]</command>
|
<command>server [servername] | [servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 nick2 nick3] [-username username] [-realname realname] [-command command] [-autojoin channel[,channel]] ] | [del servername]</command>
|
||||||
|
|||||||
+19
-3
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -22,9 +22,13 @@ QUICKSTART = weechat_quickstart.$(LANGCODE).txt
|
|||||||
|
|
||||||
EXTRA_DIST = $(BOOK).xml $(BOOK_INCLUDE) $(QUICKSTART)
|
EXTRA_DIST = $(BOOK).xml $(BOOK_INCLUDE) $(QUICKSTART)
|
||||||
|
|
||||||
|
if DBLATEX_FOUND
|
||||||
|
PDF = pdf-stamp
|
||||||
|
endif
|
||||||
|
|
||||||
docdir = $(datadir)/doc/$(PACKAGE)
|
docdir = $(datadir)/doc/$(PACKAGE)
|
||||||
|
|
||||||
all-local: html-stamp
|
all-local: html-stamp $(PDF)
|
||||||
|
|
||||||
# HTML output with chunks (many pages)
|
# HTML output with chunks (many pages)
|
||||||
|
|
||||||
@@ -48,16 +52,28 @@ html1-stamp: $(BOOK).xml $(BOOK_INCLUDE) ../weechat-html-one.xsl ../weechat-doc.
|
|||||||
cp ../weechat-doc.css html1/
|
cp ../weechat-doc.css html1/
|
||||||
touch html1-stamp
|
touch html1-stamp
|
||||||
|
|
||||||
|
# PDF output
|
||||||
|
|
||||||
|
pdf: pdf-stamp
|
||||||
|
|
||||||
|
pdf-stamp: $(BOOK).xml $(BOOK_INCLUDE)
|
||||||
|
echo "<pubdate>`date '+%F %T'`</pubdate>" >date.xml
|
||||||
|
dblatex -c ../dblatex.conf $(BOOK).xml || true
|
||||||
|
touch pdf-stamp
|
||||||
|
|
||||||
# install docs
|
# install docs
|
||||||
|
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
$(mkinstalldirs) $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
$(mkinstalldirs) $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||||
$(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
$(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||||
$(INSTALL_DATA) $(QUICKSTART) $(DESTDIR)$(docdir)/
|
$(INSTALL_DATA) $(QUICKSTART) $(DESTDIR)$(docdir)/
|
||||||
|
if DBLATEX_FOUND
|
||||||
|
$(INSTALL_DATA) $(BOOK).pdf $(DESTDIR)$(docdir)/
|
||||||
|
endif
|
||||||
|
|
||||||
# clean
|
# clean
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
-rm -f $(BOOK).html $(BOOK).pdf $(BOOK).txt date.xml
|
-rm -f $(BOOK).html $(BOOK).pdf $(BOOK).txt date.xml
|
||||||
-rm -rf html/ html1/
|
-rm -rf html/ html1/
|
||||||
-rm -f html-stamp html1-stamp
|
-rm -f html-stamp html1-stamp pdf-stamp
|
||||||
|
|||||||
+30
-51
@@ -40,34 +40,6 @@
|
|||||||
<entry>'the geekest IRC client!'</entry>
|
<entry>'the geekest IRC client!'</entry>
|
||||||
<entry>Slogan WeeChat (si vide, le slogan ne sera pas utilisé)</entry>
|
<entry>Slogan WeeChat (si vide, le slogan ne sera pas utilisé)</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_decode_iso</option></entry>
|
|
||||||
<entry>chaîne</entry>
|
|
||||||
<entry>toute chaîne</entry>
|
|
||||||
<entry>'ISO-8859-1'</entry>
|
|
||||||
<entry>Jeu de caractères ISO pour décoder les messages du serveur (utilisé seulement si la locale est UTF-8) (si non renseigné, les messages ne sont pas convertis si la locale est UTF-8)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_decode_utf</option></entry>
|
|
||||||
<entry>chaîne</entry>
|
|
||||||
<entry>toute chaîne</entry>
|
|
||||||
<entry>'UTF-8'</entry>
|
|
||||||
<entry>Jeu de caractères UTF pour décoder les messages du serveur (utilisé seulement si la locale n'est pas UTF-8) (si non renseigné, les messages ne sont pas convertis si la locale n'est pas UTF-8)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_encode</option></entry>
|
|
||||||
<entry>chaîne</entry>
|
|
||||||
<entry>toute chaîne</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Jeu de caractères pour encoder les messages envoyés au serveur, exemples: UTF-8, ISO-8859-1 (si non renseigné, les messages ne sont pas convertis)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>look_charset_internal</option></entry>
|
|
||||||
<entry>chaîne</entry>
|
|
||||||
<entry>toute chaîne</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Force le jeu de caractères interne à WeeChat (doit être vide dans la plupart des cas, ce qui signifie que le jeu de caractères détecté est utilisé)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
<row>
|
||||||
<entry><option>look_one_server_buffer</option></entry>
|
<entry><option>look_one_server_buffer</option></entry>
|
||||||
<entry>booléen</entry>
|
<entry>booléen</entry>
|
||||||
@@ -138,6 +110,13 @@
|
|||||||
<entry>0</entry>
|
<entry>0</entry>
|
||||||
<entry>Taille maximum pour la fenĂŞtre d'utilisateurs (largeur ou hauteur, selon look_nicklist_position (0 = pas de taille maximum; si min == max et > 0, alors la taille est fixe))</entry>
|
<entry>Taille maximum pour la fenĂŞtre d'utilisateurs (largeur ou hauteur, selon look_nicklist_position (0 = pas de taille maximum; si min == max et > 0, alors la taille est fixe))</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>look_nicklist_separator</option></entry>
|
||||||
|
<entry>booléen</entry>
|
||||||
|
<entry>'on' ou 'off'</entry>
|
||||||
|
<entry>'on'</entry>
|
||||||
|
<entry>Séparateur entre la discussion et la liste de pseudos</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>look_no_nickname</option></entry>
|
<entry><option>look_no_nickname</option></entry>
|
||||||
<entry>chaîne</entry>
|
<entry>chaîne</entry>
|
||||||
@@ -320,6 +299,13 @@
|
|||||||
<entry>'default'</entry>
|
<entry>'default'</entry>
|
||||||
<entry>Couleur pour la barre de titre</entry>
|
<entry>Couleur pour la barre de titre</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>col_title_more</option></entry>
|
||||||
|
<entry>couleur</entry>
|
||||||
|
<entry>couleur Curses ou Gtk</entry>
|
||||||
|
<entry>'lightmagenta'</entry>
|
||||||
|
<entry>Couleur pour les '+' lors du scroll sur le titre</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>col_title_bg</option></entry>
|
<entry><option>col_title_bg</option></entry>
|
||||||
<entry>couleur</entry>
|
<entry>couleur</entry>
|
||||||
@@ -915,6 +901,13 @@
|
|||||||
<entry>5</entry>
|
<entry>5</entry>
|
||||||
<entry>Déconnexion après un lag important (en minutes, 0 = ne jamais se déconnecter)</entry>
|
<entry>Déconnexion après un lag important (en minutes, 0 = ne jamais se déconnecter)</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>irc_anti_flood</option></entry>
|
||||||
|
<entry>entier</entry>
|
||||||
|
<entry>entre 0 et 5</entry>
|
||||||
|
<entry>2</entry>
|
||||||
|
<entry>Anti-flood: nombre de secondes entre deux messages utilisateur (0 = pas d'anti-flood)</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>irc_fifo_pipe</option></entry>
|
<entry><option>irc_fifo_pipe</option></entry>
|
||||||
<entry>booléen</entry>
|
<entry>booléen</entry>
|
||||||
@@ -943,6 +936,13 @@
|
|||||||
<entry>'on'</entry>
|
<entry>'on'</entry>
|
||||||
<entry>Autorise l'utilisateur à envoyer des couleurs avec des codes spéciaux (%B=gras, %Cxx,yy=couleur, %U=souligné, %R=inversé)</entry>
|
<entry>Autorise l'utilisateur à envoyer des couleurs avec des codes spéciaux (%B=gras, %Cxx,yy=couleur, %U=souligné, %R=inversé)</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><option>irc_send_unknown_commands</option></entry>
|
||||||
|
<entry>booléen</entry>
|
||||||
|
<entry>'on' ou 'off'</entry>
|
||||||
|
<entry>'off'</entry>
|
||||||
|
<entry>Envoie les commandes inconnues au serveur IRC</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>dcc_auto_accept_files</option></entry>
|
<entry><option>dcc_auto_accept_files</option></entry>
|
||||||
<entry>booléen</entry>
|
<entry>booléen</entry>
|
||||||
@@ -1207,7 +1207,7 @@
|
|||||||
<entry>chaîne</entry>
|
<entry>chaîne</entry>
|
||||||
<entry>toute chaîne</entry>
|
<entry>toute chaîne</entry>
|
||||||
<entry>''</entry>
|
<entry>''</entry>
|
||||||
<entry>Commande(s) à exécuter lorsque connecté au serveur (plusieurs commandes doivent être séparées par ';', utilisez '\;' pour un point-virgule)</entry>
|
<entry>Commande(s) à exécuter lorsque connecté au serveur (plusieurs commandes doivent être séparées par ';', utilisez '\;' pour un point-virgule, les variables spéciales $nick, $channel et $server sont remplacées par leur valeur)</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><option>server_command_delay</option></entry>
|
<entry><option>server_command_delay</option></entry>
|
||||||
@@ -1235,26 +1235,5 @@
|
|||||||
<entry>chaîne</entry>
|
<entry>chaîne</entry>
|
||||||
<entry>toute chaîne</entry>
|
<entry>toute chaîne</entry>
|
||||||
<entry>''</entry>
|
<entry>''</entry>
|
||||||
<entry>Liste des niveaux de notifications (séparés par des virgules) pour les canaux de ce serveur (format: #canal:1,..)</entry>
|
<entry>Liste des niveaux de notifications (séparés par des virgules) pour les canaux de ce serveur (format: #canal:1,..), un nom de canal '*' est réservé pour la notification par défaut du serveur</entry>
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>server_charset_decode_iso</option></entry>
|
|
||||||
<entry>chaîne</entry>
|
|
||||||
<entry>toute chaîne</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Liste des jeux de caractères (séparés par des virgules) pour le serveur et les canaux, pour décoder l'ISO (format: server:charset,#canal:charset,..)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>server_charset_decode_utf</option></entry>
|
|
||||||
<entry>chaîne</entry>
|
|
||||||
<entry>toute chaîne</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Liste des jeux de caractères (séparés par des virgules) pour le serveur et les canaux, pour décoder l'UTF (format: server:charset,#canal:charset,..)</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><option>server_charset_encode</option></entry>
|
|
||||||
<entry>chaîne</entry>
|
|
||||||
<entry>toute chaîne</entry>
|
|
||||||
<entry>''</entry>
|
|
||||||
<entry>Liste des jeux de caractères (séparés par des virgules) pour le serveur et les canaux, pour encoder les messages (format: server:charset,#canal:charset,..)</entry>
|
|
||||||
</row>
|
</row>
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ bannit des pseudos ou masques
|
|||||||
pseudo: pseudo ou masque pour le bannissement
|
pseudo: pseudo ou masque pour le bannissement
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>ctcp pseudo type [arguments]</command>
|
<command>ctcp cible type [arguments]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
envoyer un message CTCP (Client-To-Client Protocol)
|
envoyer un message CTCP (Client-To-Client Protocol)
|
||||||
|
|
||||||
pseudo: utilisateur Ă qui envoyer le CTCP
|
cible: utilisateur Ă qui envoyer le CTCP
|
||||||
type: type de CTCP (exemples: "version", "ping", etc...)
|
type: type de CTCP (exemples: "version", "ping", etc...)
|
||||||
arguments: arguments pour le CTCP
|
arguments: arguments pour le CTCP
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,14 @@
|
|||||||
<entry><literal>scroll_bottom</literal></entry>
|
<entry><literal>scroll_bottom</literal></entry>
|
||||||
<entry>faire défiler jusqu'à la fin du tampon</entry>
|
<entry>faire défiler jusqu'à la fin du tampon</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><literal>scroll_topic_left</literal></entry>
|
||||||
|
<entry>faire défiler le titre vers la gauche</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><literal>scroll_topic_right</literal></entry>
|
||||||
|
<entry>faire défiler le titre vers la droite</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>nick_beginning</literal></entry>
|
<entry><literal>nick_beginning</literal></entry>
|
||||||
<entry>afficher le début de la liste des pseudos</entry>
|
<entry>afficher le début de la liste des pseudos</entry>
|
||||||
|
|||||||
+709
-51
File diff suppressed because it is too large
Load Diff
+16
-17
@@ -13,6 +13,9 @@ cr
|
|||||||
commande: nom de la commande (commande WeeChat ou IRC, plusieurs commandes peuvent être séparées par des point-virgules)
|
commande: nom de la commande (commande WeeChat ou IRC, plusieurs commandes peuvent être séparées par des point-virgules)
|
||||||
paramètres: paramètres pour la commande
|
paramètres: paramètres pour la commande
|
||||||
|
|
||||||
|
</programlisting>
|
||||||
|
<command>est remplacé par tous les paramètres.</command>
|
||||||
|
<programlisting>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>buffer [action [args] | nombre | [[serveur] [canal]]]</command>
|
<command>buffer [action [args] | nombre | [[serveur] [canal]]]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
@@ -23,7 +26,8 @@ gestion des tampons
|
|||||||
close: ferme le tampon (le paramètre optionnel est le message de fin, pour un canal)
|
close: ferme le tampon (le paramètre optionnel est le message de fin, pour un canal)
|
||||||
list: liste les tampons ouverts (pas de paramètre affiche cette liste)
|
list: liste les tampons ouverts (pas de paramètre affiche cette liste)
|
||||||
notify: fixe le niveau de notification (0=jamais, 1=highlight, 2=1+msg, 3=2+join/part)
|
notify: fixe le niveau de notification (0=jamais, 1=highlight, 2=1+msg, 3=2+join/part)
|
||||||
serveur
|
(quand exécuté sur un tampon serveur, cela fixe le niveau de notification par défaut pour le serveur entier)
|
||||||
|
serveur,
|
||||||
canal: saute au tampon par serveur et/ou nom de canal
|
canal: saute au tampon par serveur et/ou nom de canal
|
||||||
nombre: saute au tampon qui a ce numéro
|
nombre: saute au tampon qui a ce numéro
|
||||||
|
|
||||||
@@ -35,16 +39,6 @@ lance une commande WeeChat/IRC interne (sans regarder les gestionnaires de comma
|
|||||||
commande: commande à exécuter (un '/' est automatiquement ajouté s'il n'est pas trouvé au début de la commande)
|
commande: commande à exécuter (un '/' est automatiquement ajouté s'il n'est pas trouvé au début de la commande)
|
||||||
|
|
||||||
|
|
||||||
</programlisting>
|
|
||||||
<command>charset [(decode_iso | decode_utf | encode) charset]</command>
|
|
||||||
<programlisting>
|
|
||||||
changer le jeu de caractères pour le serveur ou le canal
|
|
||||||
|
|
||||||
decode_iso: jeu de caractères utilisé pour décoder l'ISO
|
|
||||||
decode_utf: jeu de caractères utilisé pour décoder l'UTF
|
|
||||||
encode: jeu de caractères utilisé pour encoder les messages
|
|
||||||
charset: jeu de caractères à utiliser (par exemple: ISO-8859-15, UTF-8,..)
|
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>clear [-all]</command>
|
<command>clear [-all]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
@@ -113,23 +107,28 @@ Pour chaque param
|
|||||||
Sans paramètres, la commande /ignore liste les ignore définis.
|
Sans paramètres, la commande /ignore liste les ignore définis.
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>key [touche fonction/commande] [unbind touche] [functions] [reset -yes]</command>
|
<command>key [touche [fonction/commande]] [unbind touche] [functions] [reset -yes]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
associer/libérer des touches
|
associer/libérer des touches
|
||||||
|
|
||||||
touche: associer cette touche à une fonction interne ou une commande (commençant par "/")
|
touche: voir ou associer cette touche à une fonction interne ou une commande (commençant par "/")
|
||||||
unbind: supprimer l'association Ă une touche
|
unbind: supprimer l'association Ă une touche
|
||||||
functions: lister la liste des fonctions internes pour les associations de touches
|
functions: lister la liste des fonctions internes pour les associations de touches
|
||||||
reset: restaure les touches aux valeurs par défaut et supprime TOUTES les touches personnelles (utiliser avec précaution !)
|
reset: restaure les touches aux valeurs par défaut et supprime TOUTES les touches personnelles (utiliser avec précaution !)
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>plugin [load fichier] | [autoload] | [reload] | [unload]</command>
|
<command>plugin [list [nom]] | [listfull [nom]] | [load fichier] | [autoload] | [reload [nom]] | [unload [nom]]</command>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
liste/charge/décharge des extensions
|
liste/charge/décharge des extensions
|
||||||
|
|
||||||
fichier: extension WeeChat (fichier) Ă charger
|
list: lister les extensions chargées
|
||||||
|
listfull: lister les extensions chargées avec de l'info détaillée pour chaque extension
|
||||||
|
load: charger une extension
|
||||||
|
autoload: charger automatiquement les extensions dans un répertoire système ou utilisateur
|
||||||
|
reload: recharger une extension (si pas de nom donné, décharger toutes les extensions, puis puis recharger automatiquement les extensions)
|
||||||
|
unload: décharger une ou plusieurs exteneions
|
||||||
|
|
||||||
Sans paramètre, la commande /plugin liste toutes les extensions chargées.
|
Sans paramètre, la commande /plugin liste les extensions chargées.
|
||||||
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<command>server [nom_serveur] | [nom_serveur nom/IP port [-auto | -noauto] [-ipv6] [-ssl] [-pwd mot_de_passe] [-nicks pseudo1 pseudo2 pseudo3] [-username nom_utilisateur] [-realname nom_réel] [-command commande] [-autojoin canal[,canal]] ] | [del nom_serveur]</command>
|
<command>server [nom_serveur] | [nom_serveur nom/IP port [-auto | -noauto] [-ipv6] [-ssl] [-pwd mot_de_passe] [-nicks pseudo1 pseudo2 pseudo3] [-username nom_utilisateur] [-realname nom_réel] [-command commande] [-autojoin canal[,canal]] ] | [del nom_serveur]</command>
|
||||||
@@ -219,7 +218,7 @@ gestion des fen
|
|||||||
list: liste les fenêtres ouvertes (pas de paramètre affiche cette liste)
|
list: liste les fenêtres ouvertes (pas de paramètre affiche cette liste)
|
||||||
-1: saute à la fenêtre précédente
|
-1: saute à la fenêtre précédente
|
||||||
+1: saute Ă la fenĂŞtre suivante
|
+1: saute Ă la fenĂŞtre suivante
|
||||||
b#: saute à la fenêtre affichant le tampon n°#
|
b#: saute Ă la fenĂŞtre affichant le tampon #
|
||||||
up: saute Ă la fenĂŞtre au dessus
|
up: saute Ă la fenĂŞtre au dessus
|
||||||
down: saute Ă la fenĂŞtre au dessous
|
down: saute Ă la fenĂŞtre au dessous
|
||||||
left: saute Ă la fenĂŞtre Ă gauche
|
left: saute Ă la fenĂŞtre Ă gauche
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ Guide de d
|
|||||||
Les extensions sont automatiquement chargées lorsqu'elles sont trouvées.
|
Les extensions sont automatiquement chargées lorsqu'elles sont trouvées.
|
||||||
Plusieurs extensions/scripts sont disponibles pour WeeChat, voir ici :
|
Plusieurs extensions/scripts sont disponibles pour WeeChat, voir ici :
|
||||||
http://weechat.flashtux.org/plugins.php
|
http://weechat.flashtux.org/plugins.php
|
||||||
Merci de regarder la documentation WeeChat pour charger/décharget des
|
Merci de regarder la documentation WeeChat pour charger/décharger des
|
||||||
extensions ou des scripts.
|
extensions ou des scripts.
|
||||||
|
|
||||||
10. Plus de documentation
|
10. Plus de documentation
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.TH WEECHAT 1 "August 2006" "FlashCode"
|
.TH WEECHAT 1 "January 2007" "FlashCode"
|
||||||
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
weechat-curses \- Wee Enhanced Environment for Chat (Curses version)
|
weechat-curses \- Wee Enhanced Environment for Chat (Curses version)
|
||||||
|
|||||||
+15
-9
@@ -25,8 +25,10 @@ a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.navheader {
|
.navheader {
|
||||||
background-color: #E8E8FF;
|
background-color: #E0E0FF;
|
||||||
border: solid 1px #B5B5CC;
|
border: solid 1px #A7A7C4;
|
||||||
|
margin: -10px;
|
||||||
|
padding: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navheader hr {
|
.navheader hr {
|
||||||
@@ -34,8 +36,10 @@ a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.navfooter {
|
.navfooter {
|
||||||
background-color: #E8E8FF;
|
background-color: #E0E0FF;
|
||||||
border: solid 1px #B5B5CC;
|
border: solid 1px #A7A7C4;
|
||||||
|
margin: 20px -10px -10px -10px;
|
||||||
|
padding: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navfooter hr {
|
.navfooter hr {
|
||||||
@@ -43,9 +47,11 @@ a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
background-color: #E5FFE5;
|
background-color: #EBEBEB;
|
||||||
border: solid 1px #CCDDCC;
|
border: solid 1px #CACACA;
|
||||||
padding: 3px;
|
margin-top: 25px;
|
||||||
|
padding: 6px;
|
||||||
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.informaltable table {
|
.informaltable table {
|
||||||
@@ -79,8 +85,8 @@ a:hover {
|
|||||||
|
|
||||||
pre.screen {
|
pre.screen {
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
background-color: #F5F5F5;
|
background-color: #FAFAFA;
|
||||||
border: solid 1px #CCCCCC;
|
border: dotted 1px #CCCCCC;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
margin: 0 40px 0 40px;
|
margin: 0 40px 0 40px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||||
|
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||||
|
<xsl:param name="latex.hyperparam">colorlinks,linkcolor=blue</xsl:param>
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
||||||
@@ -50,6 +50,8 @@
|
|||||||
./src/gui/gui-keyboard.h
|
./src/gui/gui-keyboard.h
|
||||||
./src/gui/gui-panel.h
|
./src/gui/gui-panel.h
|
||||||
./src/gui/gui-window.h
|
./src/gui/gui-window.h
|
||||||
|
./src/common/alias.c
|
||||||
|
./src/common/alias.h
|
||||||
./src/common/backtrace.c
|
./src/common/backtrace.c
|
||||||
./src/common/backtrace.h
|
./src/common/backtrace.h
|
||||||
./src/common/command.c
|
./src/common/command.c
|
||||||
|
|||||||
+903
-935
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,27 @@
|
|||||||
|
-- Author: Julien Louis <ptitlouis@sysif.net>
|
||||||
|
-- License: GPLv2
|
||||||
|
-- Description: This lua script prints in the infobar the machine load average
|
||||||
|
--
|
||||||
|
weechat.register("loadavg", "0.1", "unload", "Print the load average in infobar")
|
||||||
|
|
||||||
|
local refresh = weechat.get_config("loadavg_refresh")
|
||||||
|
|
||||||
|
if refresh == "" then
|
||||||
|
refresh = 5
|
||||||
|
weechat.set_config("loadavg_refresh", 5)
|
||||||
|
end
|
||||||
|
|
||||||
|
weechat.add_timer_handler(refresh, "loadavg")
|
||||||
|
|
||||||
|
function loadavg()
|
||||||
|
local load = io.open("/proc/loadavg"):read()
|
||||||
|
load = string.gsub(load, "^([%w.]+) ([%w.]+) ([%w.]+).*", "%1 %2 %3")
|
||||||
|
weechat.print_infobar(refresh, "load: "..load)
|
||||||
|
return weechat.PLUGIN_RC_OK;
|
||||||
|
end
|
||||||
|
|
||||||
|
function unload()
|
||||||
|
weechat.remove_timer_handler("loadavg")
|
||||||
|
return weechat.remove_infobar(1)
|
||||||
|
end
|
||||||
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2006 by DeltaS4 <deltas4@gmail.com>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Changelog:
|
||||||
|
# 0.1: first version
|
||||||
|
# 0.2: now you don't need the Song Change plugin enabled because
|
||||||
|
# it uses audtool --current-song to get the music name as nenolod
|
||||||
|
# suggested (http://boards.nenolod.net/index.php?showtopic=147). :)
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# /setp perl.audacious.msg = "<msg that u want before the song>"
|
||||||
|
# example: "is playing" * YourNick is playing Artist - Title
|
||||||
|
# "now playing:" * YourNick now playing: Artist - Title
|
||||||
|
# "at" * YourNick at Artist - Title
|
||||||
|
#
|
||||||
|
|
||||||
|
weechat::register ("audacious", "0.2", "", "audacious-weechat current song script (usage: /music)");
|
||||||
|
weechat::add_command_handler ("music", audtool);
|
||||||
|
|
||||||
|
$msg = weechat::get_plugin_config("msg");
|
||||||
|
if ($msg eq $null) { weechat::set_plugin_config("msg", "is playing"); }
|
||||||
|
|
||||||
|
sub audtool {
|
||||||
|
$cs = `audtool --current-song`; chomp($cs);
|
||||||
|
$msg = weechat::get_plugin_config("msg");
|
||||||
|
|
||||||
|
weechat::command("/me $msg $cs");
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
##############################################################################
|
||||||
|
# #
|
||||||
|
# Away highlite loger #
|
||||||
|
# #
|
||||||
|
# Perl script for WeeChat. #
|
||||||
|
# #
|
||||||
|
# Log highlite/private msg when you are away #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# Copyright (C) 2006 Jiri Golembiovsky <golemj@gmail.com> #
|
||||||
|
# #
|
||||||
|
# This program 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 2 #
|
||||||
|
# of the License, or (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# This program 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 this program; if not, write to the Free Software #
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, #
|
||||||
|
# MA 02110-1301, USA. #
|
||||||
|
# #
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
weechat::register( "AwayLog", "0.4", "", "Log privmsg/highlite when you are away" );
|
||||||
|
|
||||||
|
weechat::add_message_handler( "PRIVMSG", "awaylog" );
|
||||||
|
|
||||||
|
sub test_highlight {
|
||||||
|
$str = shift;
|
||||||
|
$irc_highlight = weechat::get_config( "irc_highlight" );
|
||||||
|
@arr = split( ",", $irc_highlight );
|
||||||
|
$b = 0;
|
||||||
|
$str = lc( $str );
|
||||||
|
while( $item = pop( @arr ) ) {
|
||||||
|
$item = lc( $item );
|
||||||
|
if( substr( $item, 0, 1 ) eq '*' ) { $item = '.' . $item; }
|
||||||
|
if( substr( $item, length( $item ) - 1, 1 ) eq '*' ) { $item = substr( $item, , 0, length( $item ) - 1 ) . ".*"; }
|
||||||
|
if( $str =~ /$item/ ) { $b++; }
|
||||||
|
}
|
||||||
|
return $b;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub awaylog {
|
||||||
|
if( weechat::get_info( "away", $_[0] ) == 1 ) {
|
||||||
|
$i = index( $_[1], " PRIVMSG " );
|
||||||
|
$hostmask = substr( $_[1], 0, $i );
|
||||||
|
$str = substr( $_[1], $i + 9 );
|
||||||
|
$i = index( $str, ":" );
|
||||||
|
$channel = substr( $str, 0, $i - 1 );
|
||||||
|
$message = substr( $str, $i + 1 );
|
||||||
|
if( substr( $hostmask, 0, 1 ) eq ":" ) {
|
||||||
|
$hostmask = substr( $hostmask, 1 );
|
||||||
|
}
|
||||||
|
($nick, $host) = split( "!", $hostmask );
|
||||||
|
$mynick = weechat::get_info( "nick", $_[0] );
|
||||||
|
if( ( index( $message, $mynick ) != -1 ) || ( $channel eq $mynick ) || ( test_highlight( $message ) > 0 ) ) {
|
||||||
|
weechat::print( "$channel -- $nick :: $message", "", $_[0] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2006 by FlashCode <flashcode@flashtux.org>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Speaker beep on highlight/private msg.
|
||||||
|
#
|
||||||
|
# History:
|
||||||
|
#
|
||||||
|
# 2006-09-02, FlashCode <flashcode@flashtux.org>:
|
||||||
|
# initial release
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
my $version = "0.1";
|
||||||
|
my $beep_command = "echo -n \a";
|
||||||
|
|
||||||
|
# default values in setup file (~/.weechat/plugins.rc)
|
||||||
|
my $default_beep_highlight = "on";
|
||||||
|
my $default_beep_pv = "on";
|
||||||
|
|
||||||
|
weechat::register("Beep", $version, "", "Speaker beep on highlight/private msg");
|
||||||
|
weechat::set_plugin_config("beep_highlight", $default_beep_highlight) if (weechat::get_plugin_config("beep_highlight") eq "");
|
||||||
|
weechat::set_plugin_config("beep_pv", $default_beep_pv) if (weechat::get_plugin_config("beep_pv") eq "");
|
||||||
|
|
||||||
|
weechat::add_message_handler("weechat_highlight", "highlight");
|
||||||
|
weechat::add_message_handler("weechat_pv", "pv");
|
||||||
|
|
||||||
|
sub highlight
|
||||||
|
{
|
||||||
|
my $beep = weechat::get_plugin_config("beep_highlight");
|
||||||
|
system($beep_command) if ($beep eq "on");
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub pv
|
||||||
|
{
|
||||||
|
my $beep = weechat::get_plugin_config("beep_pv");
|
||||||
|
system($beep_command) if ($beep eq "on");
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2006 by FlashCode <flashcode@flashtux.org>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Save current buffer to a file.
|
||||||
|
#
|
||||||
|
# History:
|
||||||
|
#
|
||||||
|
# 2006-10-27, FlashCode <flashcode@flashtux.org>:
|
||||||
|
# initial release
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
my $version = "0.1";
|
||||||
|
|
||||||
|
weechat::register("bufsave", $version, "", "Save buffer content to a file");
|
||||||
|
weechat::add_command_handler("bufsave", "bufsave_cmd",
|
||||||
|
"save current buffer to a file",
|
||||||
|
"filename",
|
||||||
|
"filename: target file (must not exist)",
|
||||||
|
"");
|
||||||
|
|
||||||
|
sub bufsave_cmd
|
||||||
|
{
|
||||||
|
if ($#_ == 1)
|
||||||
|
{
|
||||||
|
my $server = shift;
|
||||||
|
my $filename = shift;
|
||||||
|
|
||||||
|
return weechat::PLUGIN_RC_OK if (! $filename);
|
||||||
|
|
||||||
|
if (-e $filename)
|
||||||
|
{
|
||||||
|
weechat::print("Error: target file already exists!");
|
||||||
|
return weechat::PLUGIN_RC_KO;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $channel = weechat::get_info("channel");
|
||||||
|
my @bc = weechat::get_buffer_data($server, $channel);
|
||||||
|
if (@bc)
|
||||||
|
{
|
||||||
|
if (! open(FILE, ">$filename"))
|
||||||
|
{
|
||||||
|
weechat::print("Error writing to target file!");
|
||||||
|
return weechat::PLUGIN_RC_KO;
|
||||||
|
}
|
||||||
|
foreach my $line (reverse(@bc))
|
||||||
|
{
|
||||||
|
my %l = %$line;
|
||||||
|
print FILE "$l{date} " if ($l{date});
|
||||||
|
print FILE "\<$l{nick}\> " if ($l{nick});
|
||||||
|
print FILE "$l{data}\n";
|
||||||
|
}
|
||||||
|
close(FILE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
weechat::print("Error: no buffer data");
|
||||||
|
return weechat::PLUGIN_RC_KO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
##############################################################################
|
||||||
|
# #
|
||||||
|
# Exec #
|
||||||
|
# #
|
||||||
|
# Perl script for WeeChat. #
|
||||||
|
# #
|
||||||
|
# Execute the command and print it to the actual buffer or server #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# Copyright (C) 2006 Jiri Golembiovsky <golemj@gmail.com> #
|
||||||
|
# #
|
||||||
|
# This program 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 2 #
|
||||||
|
# of the License, or (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# This program 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 this program; if not, write to the Free Software #
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, #
|
||||||
|
# MA 02110-1301, USA. #
|
||||||
|
# #
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
use Config;
|
||||||
|
|
||||||
|
$Config{usethreads} or die( "Recompile Perl with threads to run this script." );
|
||||||
|
|
||||||
|
use Thread;
|
||||||
|
|
||||||
|
my $registred = 0;
|
||||||
|
weechat::register( "Exec", "0.2", "", "Execute the command and print it to some buffer" );
|
||||||
|
|
||||||
|
weechat::add_command_handler(
|
||||||
|
"exec",
|
||||||
|
execute,
|
||||||
|
"Execute the command and print it to some buffer",
|
||||||
|
"[-o][ -win server:::channel] <cmd line>",
|
||||||
|
" -o print as msg\n".
|
||||||
|
" -win server:::channel print the output to the specific buffer",
|
||||||
|
""
|
||||||
|
);
|
||||||
|
|
||||||
|
sub execute {
|
||||||
|
if( !$registred ) { return; }
|
||||||
|
my $i = 0;
|
||||||
|
my $cmd = "";
|
||||||
|
my $msg = 0;
|
||||||
|
my $win = "";
|
||||||
|
my @arr = split( ' ', $_[1] );
|
||||||
|
my $cmdStart = 0;
|
||||||
|
if( $#arr < 0 ) { return; }
|
||||||
|
for( $i = 0; $i <= $#arr; $i++ ) {
|
||||||
|
if( @arr[$i] eq "-win" ) {
|
||||||
|
$i++;
|
||||||
|
$win = @arr[$i];
|
||||||
|
$cmdStart = $i + 1;
|
||||||
|
}
|
||||||
|
if( @arr[$i] eq "-o" ) {
|
||||||
|
$msg = 1;
|
||||||
|
$cmdStart = $i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for( $i = $cmdStart; $i <= $#arr; $i++ ) {
|
||||||
|
if( length( $cmd ) ) { $cmd = $cmd . ' '; }
|
||||||
|
$cmd = $cmd . @arr[$i];
|
||||||
|
}
|
||||||
|
|
||||||
|
my $thr = new Thread \&func_execute, $cmd, $msg, $win;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub func_execute {
|
||||||
|
my $command = shift;
|
||||||
|
my $msg = shift;
|
||||||
|
my $win = shift;
|
||||||
|
my $c = 1;
|
||||||
|
my $char = '';
|
||||||
|
my $date = `date +%Y%m%d%H%M%S%N`;
|
||||||
|
my $out = "";
|
||||||
|
|
||||||
|
if( !length( $command ) ) {
|
||||||
|
weechat::print( "No command to execute (try -? for help)" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( substr( $date, length( $date ) - 1, 1 ) eq "\n" ) { $date = substr( $date, 0, length( $date ) - 1 ); }
|
||||||
|
|
||||||
|
if( length( $command ) ) { system( $command . " > /tmp/weechat_" . $date . " 2>&1" ); }
|
||||||
|
|
||||||
|
open( FD, '<', "/tmp/weechat_" . $date ) or weechat::print( "/tmp/weechat_" . $date . ": $!" );
|
||||||
|
do {
|
||||||
|
$c = read( FD, $char, 1 );
|
||||||
|
$out = $out . $char;
|
||||||
|
} while( $c );
|
||||||
|
close( FD );
|
||||||
|
system( "rm -f /tmp/weechat_" . $date );
|
||||||
|
my $j = index( $win, ':::' );
|
||||||
|
if( length( $win ) && ( $j >= 0 ) ) {
|
||||||
|
if( $msg ) {
|
||||||
|
my $win1 = substr( $win, $j + 3 );
|
||||||
|
my $win2 = substr( $win, 0, $j );
|
||||||
|
my @its = split( "\n", $out );
|
||||||
|
for( $j = 0; $j <= $#its; $j++ ) {
|
||||||
|
weechat::command( $its[$j], $win1, $win2 );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
weechat::print( $out, substr( $win, $j + 3 ), substr( $win, 0, $j ) );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if( $msg ) {
|
||||||
|
my $win1 = substr( $win, $j + 3 );
|
||||||
|
my $win2 = substr( $win, 0, $j );
|
||||||
|
my @its = split( "\n", $out );
|
||||||
|
for( $j = 0; $j <= $#its; $j++ ) {
|
||||||
|
weechat::command( $its[$j], $win1, $win2 );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
weechat::print( $out );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$registred = 1;
|
||||||
|
|
||||||
@@ -0,0 +1,163 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# Copyright (c) 2003-2005 by FlashCode <flashcode@flashtux.org>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
# fete.pl (c) Décembre 2003 par FlashCode <flashcode@flashtux.org>
|
||||||
|
# Mis Ă jour le 04/06/2005, FlashCode <flashcode@flashtux.org>
|
||||||
|
#
|
||||||
|
# Gestion des fêtes du calendrier français avec la commande "/fete"
|
||||||
|
# Syntaxe: /fete - affiche la fĂŞte du jour et du lendemain
|
||||||
|
# /fete prenom - cherche un prénom dans le calendrier
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
use locale;
|
||||||
|
|
||||||
|
my $version = "0.4";
|
||||||
|
weechat::register ("Fete", $version, "", "Gestion des fêtes du calendrier français");
|
||||||
|
weechat::print ("Script 'Fete' $version chargé");
|
||||||
|
weechat::add_command_handler ("fete", fete);
|
||||||
|
|
||||||
|
@noms_jours = qw(Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi);
|
||||||
|
@noms_mois = qw(Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre);
|
||||||
|
@fetes = (
|
||||||
|
# janvier
|
||||||
|
[ '!Marie - JOUR de l\'AN', '&Basile', '!Geneviève', '&Odilon', '&Edouard',
|
||||||
|
'&Mélaine', '&Raymond', '&Lucien', '!Alix', '&Guillaume', '&Paulin',
|
||||||
|
'!Tatiana', '!Yvette', '!Nina', '&Rémi', '&Marcel', '!Roseline',
|
||||||
|
'!Prisca', '&Marius', '&Sébastien', '!Agnès', '&Vincent', '&Barnard',
|
||||||
|
'&François de Sales', '-Conversion de St Paul', '!Paule', '!Angèle',
|
||||||
|
'&Thomas d\'Aquin', '&Gildas', '!Martine', '!Marcelle' ],
|
||||||
|
# février
|
||||||
|
[ '!Ella', '-Présentation', '&Blaise', '!Véronique', '!Agathe',
|
||||||
|
'&Gaston', '!Eugénie', '!Jacqueline', '!Apolline', '&Arnaud',
|
||||||
|
'-Notre-Dame de Lourdes', '&Félix', '!Béatrice', '&Valentin', '&Claude',
|
||||||
|
'!Julienne', '&Alexis', '!Bernadette', '&Gabin', '!Aimée',
|
||||||
|
'&Pierre Damien', '!Isabelle', '&Lazare', '&Modeste', '&Roméo', '&Nestor',
|
||||||
|
'!Honorine', '&Romain', '&Auguste' ],
|
||||||
|
# mars
|
||||||
|
[ '&Aubin', '&Charles le Bon', '&Guénolé', '&Casimir', '&Olive', '&Colette',
|
||||||
|
'!Félicité', '&Jean de Dieu', '!Françoise', '&Vivien', '!Rosine',
|
||||||
|
'!Justine', '&Rodrigue', '!Mathilde', '!Louise de Marillac', '!Bénédicte',
|
||||||
|
'&Patrice', '&Cyrille', '&Joseph', '&Herbert', '!Clémence', '!Léa',
|
||||||
|
'&Victorien', '!Catherine de Suède', '-Annonciation', '!Larissa',
|
||||||
|
'&Habib', '&Gontran', '!Gwladys', '&Amédée', '&Benjamin' ],
|
||||||
|
# avril
|
||||||
|
[ '&Hugues', '!Sandrine', '&Richard', '&Isodore', '!Irène', '&Marcellin',
|
||||||
|
'&Jean-Baptiste de la Salle', '!Julie', '&Gautier', '&Fulbert',
|
||||||
|
'&Stanislas', '&Jules', '!Ida', '&Maxime', '&Paterne',
|
||||||
|
'&Benoît-Joseph Labre', '&Anicet', '&Parfait', '!Emma', '!Odette',
|
||||||
|
'&Anselme', '&Alexandre', '&Georges', '&Fidèle', '&Marc', '!Alida',
|
||||||
|
'!Zita', '!Valérie', '!Catherine de Sienne', '&Robert' ],
|
||||||
|
# mai
|
||||||
|
[ '&Jérémie - FETE du TRAVAIL', '&Boris', '&Philippe / Jacques', '&Sylvain',
|
||||||
|
'!Judith', '!Prudence', '!Gisèle', '&Désiré - ANNIVERSAIRE 1945',
|
||||||
|
'&PacĂ´me', '!Solange', '!Estelle', '&Achille', '!Rolande', '&Mathias',
|
||||||
|
'!Denise', '&Honoré', '&Pascal', '&Eric', '&Yves', '&Bernardin',
|
||||||
|
'&Constantin', '&Emile', '&Didier', '&Donatien', '!Sophie', '&Bérenger',
|
||||||
|
'&Augustin', '&Germain', '&Aymar', '&Ferdinand', '-Visitation' ],
|
||||||
|
# juin
|
||||||
|
[ '&Justin', '!Blandine', '&Kévin', '!Clotilde', '&Igor', '&Norbert',
|
||||||
|
'&Gilbert', '&Médard', '!Diane', '&Landry', '&Barnabé', '&Guy',
|
||||||
|
'&Antoine de Padoue', '&Elisée', '!Germaine', '&Jean-François Régis',
|
||||||
|
'&Hervé', '&Léonce', '&Romuald', '&Silvère', '&Rodolphe', '&Alban',
|
||||||
|
'!Audrey', '&Jean-Baptiste', '&Salomon', '&Anthelme', '&Fernand',
|
||||||
|
'&Irénée', '&Pierre / Paul', '&Martial' ],
|
||||||
|
# juillet
|
||||||
|
[ '&Thierry', '&Martinien', '&Thomas', '&Florent', '&Antoine', '!Mariette',
|
||||||
|
'&Raoul', '&Thibaut', '!Amandine', '&Ulrich', '&Benoît', '&Olivier',
|
||||||
|
'&Henri / Joël', '!Camille - FETE NATIONALE', '&Donald',
|
||||||
|
'-N.D. du Mont Carmel', '!Charlotte', '&Frédéric', '&Arsène', '!Marina',
|
||||||
|
'&Victor', '!Marie-Madeleine', '!Brigitte', '!Christine', '&Jacques',
|
||||||
|
'&Anne', '!Nathalie', '&Samson', '!Marthe', '!Juliette',
|
||||||
|
'&Ignace de Loyola' ],
|
||||||
|
# août
|
||||||
|
[ '&Alphonse', '&Julien', '!Lydie', '&Jean-Marie Vianney', '&Abel',
|
||||||
|
'-Transfiguration', '&Gaëtan', '&Dominique', '&Amour', '&Laurent',
|
||||||
|
'!Claire', '!Clarisse', '&Hippolyte', '&Evrard',
|
||||||
|
'!Marie - ASSOMPTION', '&Armel', '&Hyacinthe', '!Hélène', '&Jean Eudes',
|
||||||
|
'&Bernard', '&Christophe', '&Fabrice', '!Rose de Lima', '&Barthélémy',
|
||||||
|
'&Louis', '!Natacha', '!Monique', '&Augustin', '!Sabine', '&Fiacre',
|
||||||
|
'&Aristide' ],
|
||||||
|
# septembre
|
||||||
|
[ '&Gilles', '!Ingrid', '&Grégoire', '!Rosalie', '!Raïssa', '&Bertrand',
|
||||||
|
'!Reine', '-Nativité de Marie', '&Alain', '!Inès', '&Adelphe',
|
||||||
|
'&Apollinaire', '&Aimé', '-La Ste Croix', '&Roland', '!Edith', '&Renaud',
|
||||||
|
'!Nadège', '!Emilie', '&Davy', '&Matthieu', '&Maurice', '&Constant',
|
||||||
|
'!Thècle', '&Hermann', '&Côme / Damien', '&Vincent de Paul', '&Venceslas',
|
||||||
|
'&Michel / Gabriel', '&Jérôme' ],
|
||||||
|
# octobre
|
||||||
|
[ '!Thérèse de l\'Enfant Jésus', '&Léger', '&Gérard', '&François d\'Assise',
|
||||||
|
'!Fleur', '&Bruno', '&Serge', '!Pélagie', '&Denis', '&Ghislain', '&Firmin',
|
||||||
|
'&Wilfried', '&Géraud', '&Juste', '!Thérèse d\'Avila', '!Edwige',
|
||||||
|
'&Baudouin', '&Luc', '&René', '!Adeline', '!Céline', '!Elodie',
|
||||||
|
'&Jean de Capistran', '&Florentin', '&Crépin', '&Dimitri', '!Emeline',
|
||||||
|
'&Simon / Jude', '&Narcisse', '!Bienvenue', '&Quentin' ],
|
||||||
|
# novembre
|
||||||
|
[ '&Harold - TOUSSAINT', '-Défunts', '&Hubert', '&Charles', '!Sylvie',
|
||||||
|
'!Bertille', '!Carine', '&Geoffroy', '&Théodore', '&Léon',
|
||||||
|
'&Martin - ARMISTICE 1918', '&Christian', '&Brice', '&Sidoine', '&Albert',
|
||||||
|
'!Marguerite', '!Elisabeth', '!Aude', '&Tanguy', '&Edmond',
|
||||||
|
'-Présentation de Marie', '!Cécile', '&Clément', '!Flora', '!Catherine',
|
||||||
|
'!Delphine', '&Séverin', '&Jacques de la Marche', '&Saturnin', '&André' ],
|
||||||
|
# décembre
|
||||||
|
[ '!Florence', '!Viviane', '&Xavier', '!Barbara', '&Gérald', '&Nicolas',
|
||||||
|
'&Ambroise', '-Immaculée Conception', '&Pierre Fourier', '&Romaric',
|
||||||
|
'&Daniel', '!Jeanne de Chantal', '!Lucie', '!Odile', '!Ninon', '!Alice',
|
||||||
|
'&Gaël', '&Gatien', '&Urbain', '&Abraham', '&Pierre Canisius',
|
||||||
|
'!Françoise-Xavier', '&Armand', '!Adèle', '&Emmanuel - NOEL', '&Etienne',
|
||||||
|
'&Jean', '-Sts Innocents', '&David', '&Roger', '&Sylvestre' ],
|
||||||
|
);
|
||||||
|
|
||||||
|
sub fete_jour
|
||||||
|
{
|
||||||
|
my ($sec, $min, $heure, $mjour, $mois, $annee, $sjour, $ajour, $est_dst) = localtime ($_[0]);
|
||||||
|
my $fete = $fetes[$mois][$mjour-1];
|
||||||
|
$fete =~ s/^!/Ste /;
|
||||||
|
$fete =~ s/^&/St /;
|
||||||
|
$fete =~ s/^-//;
|
||||||
|
$fete;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fete
|
||||||
|
{
|
||||||
|
if ($#_ == 1)
|
||||||
|
{
|
||||||
|
my @params = split " ", @_[1];
|
||||||
|
for $arg (@params)
|
||||||
|
{
|
||||||
|
for (my $mois = 0; $mois <= $#fetes; $mois++)
|
||||||
|
{
|
||||||
|
for (my $jour = 0; $jour < 31; $jour++)
|
||||||
|
{
|
||||||
|
if (uc ($fetes[$mois][$jour]) =~ /\U$arg/)
|
||||||
|
{
|
||||||
|
weechat::print (($jour + 1)." ".$noms_mois[$mois].": ".substr ($fetes[$mois][$jour], 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $time_now = time;
|
||||||
|
my ($fete1, $fete2) = (fete_jour ($time_now), fete_jour ($time_now + (3600 * 24)));
|
||||||
|
my ($mjour, $mois, $sjour) = (localtime ($time_now))[3, 4, 6];
|
||||||
|
weechat::print_infobar (0, "$fete1 (demain: $fete2)");
|
||||||
|
}
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
fete ();
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# This script is a port from the original fortune.pl irssi script written by
|
||||||
|
# Ivo Marino <eim@cpan.org>. This script is in the public domain
|
||||||
|
#
|
||||||
|
# Author: Julien Louis <ptitlouis@sysif.net>
|
||||||
|
|
||||||
|
weechat::register("fortune", "0.1", "", "Send a random fortune cookie to a specified nick");
|
||||||
|
|
||||||
|
weechat::add_command_handler ("fortune", fortune, "Send a random fortune cookie to a specified nick",
|
||||||
|
"<nick> [lang]",
|
||||||
|
"<nick> The nickname to send the fortune cookie\n" .
|
||||||
|
" [lang] The cookie language (Default: en)\n",
|
||||||
|
"%n %-");
|
||||||
|
|
||||||
|
sub fortune {
|
||||||
|
|
||||||
|
my ($server, $param) = @_;
|
||||||
|
my $return = weechat::PLUGIN_RC_OK;
|
||||||
|
my $cookie = '';
|
||||||
|
|
||||||
|
if ($param) {
|
||||||
|
|
||||||
|
if ($server) {
|
||||||
|
(my $nick, my $lang) = split (' ', $param);
|
||||||
|
$lang = 'en' unless ($lang eq 'de'|| $lang eq 'it' || $lang eq
|
||||||
|
'en' || $lang eq 'fr' );
|
||||||
|
weechat::print ("Nick: " . $nick . ", Lang: \"" . $lang . "\"");
|
||||||
|
|
||||||
|
if ($lang eq 'de') {
|
||||||
|
$cookie = `fortune -x`;
|
||||||
|
} elsif ($lang eq 'it') {
|
||||||
|
$cookie = `fortune -a italia`;
|
||||||
|
} else {
|
||||||
|
$cookie = `fortune -a fortunes literature riddles`;
|
||||||
|
}
|
||||||
|
|
||||||
|
$cookie =~ s/\s*\n\s*/ /g;
|
||||||
|
if ($cookie) {
|
||||||
|
$channel = weechat::get_info("channel");
|
||||||
|
if ($channel) {
|
||||||
|
weechat::command($nick . ": " . $cookie, $channel);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
weechat::print ("No cookie.");
|
||||||
|
$return = weechat::PLUGIN_RC_KO;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
weechat::print ("Not connected to server");
|
||||||
|
$return = weechat::PLUGIN_RC_KO;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
weechat::print ("Usage: /fortune <nick> [language]");
|
||||||
|
$return = weechat::PLUGIN_RC_KO;
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# This script is a port from the hello.pl irssi script written by
|
||||||
|
# Cybertinus <cybertinus@cybertinus.nl>
|
||||||
|
#
|
||||||
|
# Licensed under the GPL v2
|
||||||
|
#
|
||||||
|
# Author: Julien Louis <ptitlouis@sysif.net>
|
||||||
|
|
||||||
|
weechat::register("hello" ,"0.1", "", "Display greetings depending the time");
|
||||||
|
|
||||||
|
weechat::add_command_handler("hello", hello, "", "Send greetings to the current buffer");
|
||||||
|
|
||||||
|
weechat::set_plugin_config("evening_message", "good evening");
|
||||||
|
weechat::set_plugin_config("afternoon_message", "good afternoon");
|
||||||
|
weechat::set_plugin_config("morning_message", "good morning");
|
||||||
|
weechat::set_plugin_config("night_message", "good night");
|
||||||
|
|
||||||
|
|
||||||
|
sub hello {
|
||||||
|
my ($server,$data) = @_;
|
||||||
|
|
||||||
|
$time = (localtime(time))[2];
|
||||||
|
if ($time >= 18) {
|
||||||
|
$text = weechat::get_plugin_config("evening_message");
|
||||||
|
} elsif ($time >= 12) {
|
||||||
|
$text = weechat::get_plugin_config("afternoon_message");
|
||||||
|
} elsif ($time >= 6) {
|
||||||
|
$text = weechat::get_plugin_config("morning_message");
|
||||||
|
} elsif ($time >= 0) {
|
||||||
|
$text = weechat::get_plugin_config("night_message");
|
||||||
|
}
|
||||||
|
weechat::command("$text $data");
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
#
|
||||||
|
# This script is mostly a copy/paste from kernel.pl irssi script
|
||||||
|
# This script is in the public domain.
|
||||||
|
#
|
||||||
|
# Julien Louis <ptitlouis@sysif.net>
|
||||||
|
|
||||||
|
use IO::Socket;
|
||||||
|
|
||||||
|
weechat::register("kernel", "0.1", "", "Return latest kernel versions from kernel.org" );
|
||||||
|
|
||||||
|
weechat::add_command_handler("kernel_version", kernel_version);
|
||||||
|
|
||||||
|
sub finger($$) {
|
||||||
|
# Yes, Net::Finger is already done and i'm reinventing the wheel.
|
||||||
|
my ($user, $host) = @_;
|
||||||
|
my $buffer;
|
||||||
|
if (my $socket = IO::Socket::INET->new(
|
||||||
|
PeerHost => $host,
|
||||||
|
PeerPort => 'finger(79)',
|
||||||
|
Proto => 'tcp',
|
||||||
|
))
|
||||||
|
{
|
||||||
|
if (syswrite $socket, "$user\n") {
|
||||||
|
unless (sysread $socket, $buffer, 1024) {
|
||||||
|
# Should i use $! here?
|
||||||
|
weechat::print("Unable to read from the socket: $!");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# ..and here?
|
||||||
|
weechat::print("Unable to write to the socket: $!");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
weechat::print("Connection to $host failed: $!");
|
||||||
|
}
|
||||||
|
return $buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub kernel_version {
|
||||||
|
my @version;
|
||||||
|
if (my $finger = finger("", "finger.kernel.org")) {
|
||||||
|
# The magic of the regexps :)
|
||||||
|
@version = $finger =~ /:\s*(\S+)\s*$/gm;
|
||||||
|
# Modify this to do whatever you want.
|
||||||
|
|
||||||
|
my %branches = (
|
||||||
|
26 => "",
|
||||||
|
24 => "",
|
||||||
|
22 => "",
|
||||||
|
20 => "",
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach my $kernel (@version) {
|
||||||
|
if($kernel =~ /2\.6/) {
|
||||||
|
$branches{26} .= " $kernel";
|
||||||
|
} elsif($kernel =~ /2\.4/) {
|
||||||
|
$branches{24} .= " $kernel";
|
||||||
|
} elsif ($kernel =~ /2\.2/) {
|
||||||
|
$branches{22} .= " $kernel";
|
||||||
|
} elsif ($kernel =~ /2\.0/) {
|
||||||
|
$branches{20} .= " $kernel";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my @keys = sort(keys(%branches));
|
||||||
|
foreach my $key (@keys) {
|
||||||
|
weechat::print("branche " . join('.', split(//, $key)));
|
||||||
|
weechat::print("$branches{$key}");
|
||||||
|
}
|
||||||
|
|
||||||
|
# weechat::print("@version");
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2006 by FlashCode <flashcode@flashtux.org>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Search for text in WeeChat disk log files.
|
||||||
|
#
|
||||||
|
# History:
|
||||||
|
# 2006-04-17, FlashCode <flashcode@flashtux.org>:
|
||||||
|
# initial release
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
# default values in setup file (~/.weechat/plugins.rc)
|
||||||
|
my $default_max = "8";
|
||||||
|
my $default_server = "off";
|
||||||
|
my $default_grep_options = "-i";
|
||||||
|
|
||||||
|
# init script
|
||||||
|
weechat::register("logsearch", "0.1", "", "Search for text in WeeChat disk log files");
|
||||||
|
weechat::set_plugin_config("max", $default_max) if (weechat::get_plugin_config("max") eq "");
|
||||||
|
weechat::set_plugin_config("server", $default_server) if (weechat::get_plugin_config("server") eq "");
|
||||||
|
weechat::set_plugin_config("grep_options", $default_grep_options) if (weechat::get_plugin_config("grep_options") eq "");
|
||||||
|
|
||||||
|
# add command handler /logsearch
|
||||||
|
weechat::add_command_handler("logsearch", "logsearch",
|
||||||
|
"search for text in WeeChat disk log files",
|
||||||
|
"[-n#] text",
|
||||||
|
"-n#: max number or lines to display\n"
|
||||||
|
."text: regular expression (used by grep)\n\n"
|
||||||
|
."Plugins options (set with /setp):\n"
|
||||||
|
." - perl.logsearch.max: max number of lines displayed by default\n"
|
||||||
|
." - perl.logsearch.server: display result on server "
|
||||||
|
."buffer (if on), otherwise on current buffer\n"
|
||||||
|
." - perl.logsearch.grep_options: options to give to grep program",
|
||||||
|
"");
|
||||||
|
|
||||||
|
# /logsearch command
|
||||||
|
sub logsearch
|
||||||
|
{
|
||||||
|
my $server = shift;
|
||||||
|
my $args = shift;
|
||||||
|
if ($args ne "")
|
||||||
|
{
|
||||||
|
# read settings
|
||||||
|
my $conf_max = weechat::get_plugin_config("max");
|
||||||
|
$conf_max = $default_max if ($conf_max eq "");
|
||||||
|
my $conf_server = weechat::get_plugin_config("server");
|
||||||
|
$conf_server = $default_server if ($conf_server eq "");
|
||||||
|
my $output_server = "";
|
||||||
|
$output_server = $server if (lc($conf_server) eq "on");
|
||||||
|
my $grep_options = weechat::get_plugin_config("grep_options");
|
||||||
|
|
||||||
|
# build log filename
|
||||||
|
my $buffer = weechat::get_info("channel", "");
|
||||||
|
$buffer = ".".$buffer if ($buffer ne "");
|
||||||
|
my $log_path = weechat::get_config("log_path");
|
||||||
|
$log_path =~ s/%h/~\/.weechat/g;
|
||||||
|
my $file = $log_path.$server.$buffer.".weechatlog";
|
||||||
|
|
||||||
|
# run grep in log file
|
||||||
|
if ($args =~ /-n([0-9]+) (.*)/)
|
||||||
|
{
|
||||||
|
$conf_max = $1;
|
||||||
|
$args = $2;
|
||||||
|
}
|
||||||
|
my $command = "grep ".$grep_options." '".$args."' ".$file." 2>/dev/null | tail -n".$conf_max;
|
||||||
|
my $result = `$command`;
|
||||||
|
|
||||||
|
# display result
|
||||||
|
if ($result eq "")
|
||||||
|
{
|
||||||
|
weechat::print("Text not found in $file", "", $output_server);
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
my @result_array = split(/\n/, $result);
|
||||||
|
weechat::print($_, "", $output_server) foreach(@result_array);
|
||||||
|
}
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
@@ -0,0 +1,166 @@
|
|||||||
|
##############################################################################
|
||||||
|
# #
|
||||||
|
# MOC #
|
||||||
|
# #
|
||||||
|
# Perl script for WeeChat. #
|
||||||
|
# #
|
||||||
|
# Show info about current song in moc #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# Copyright (C) 2006 Jiri Golembiovsky <golemj@gmail.com> #
|
||||||
|
# #
|
||||||
|
# This program 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 2 #
|
||||||
|
# of the License, or (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# This program 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 this program; if not, write to the Free Software #
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, #
|
||||||
|
# MA 02110-1301, USA. #
|
||||||
|
# #
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
weechat::register( "MOCP", "0.2", "", "Show info about current song in moc" );
|
||||||
|
weechat::add_command_handler(
|
||||||
|
"moc",
|
||||||
|
moc,
|
||||||
|
"Show info about current song in moc",
|
||||||
|
"[[-i][-o][-ot]]",
|
||||||
|
"-i show info about current song (default parameter if no other is given)\n" .
|
||||||
|
"-o print results to the current channel as /msg\n" .
|
||||||
|
"-ot print results to the current channel as /me, this parameter overide -o parameter\n" .
|
||||||
|
"To set output format use moc_set_format command.\n" .
|
||||||
|
"To set another default output type than -i use moc_set_output command.\n",
|
||||||
|
"-i|-o|-ot"
|
||||||
|
);
|
||||||
|
|
||||||
|
weechat::add_command_handler(
|
||||||
|
"moc_set_format",
|
||||||
|
mocSetFormat,
|
||||||
|
"Set output format for moc command",
|
||||||
|
"format_string",
|
||||||
|
"Following combinations will be replaced by apropriate text:\n".
|
||||||
|
" %A - artist\n" .
|
||||||
|
" %B - album\n" .
|
||||||
|
" %F - file name with path\n" .
|
||||||
|
" %H - file name without path\n" .
|
||||||
|
" %J - total time\n" .
|
||||||
|
" %K - current time\n" .
|
||||||
|
" %L - time left\n" .
|
||||||
|
" %M - total seconds\n" .
|
||||||
|
" %N - current seconds\n" .
|
||||||
|
" %S - state\n" .
|
||||||
|
" %T - title\n" .
|
||||||
|
" %U - song title\n" .
|
||||||
|
" %Y - biterate\n" .
|
||||||
|
" %Z - rate\n" .
|
||||||
|
"When no format string is setted then current format string is printed.",
|
||||||
|
""
|
||||||
|
);
|
||||||
|
|
||||||
|
weechat::add_command_handler(
|
||||||
|
"moc_set_output",
|
||||||
|
mocSetOutput,
|
||||||
|
"Set default output for moc command",
|
||||||
|
"i|o|ot",
|
||||||
|
"For more info see help of moc command",
|
||||||
|
"i|o|ot"
|
||||||
|
);
|
||||||
|
|
||||||
|
sub info {
|
||||||
|
my $i;
|
||||||
|
my $res = "";
|
||||||
|
my $sout = `mocp -i`;
|
||||||
|
my @out = split( "\n", $sout );
|
||||||
|
my $format = weechat::get_plugin_config( "outputFormat" );
|
||||||
|
if( length( $format ) == 0 ) { $format = "is listening to %T ::: %H"; }
|
||||||
|
if( $#out < 2 ) { return ""; }
|
||||||
|
for( $i = 0; $i <= $#out; $i++ ) {
|
||||||
|
if( ( index( @out[$i], ' ' ) == -1 ) ||
|
||||||
|
( index( @out[$i], ' ' ) == ( length( @out[$i] ) - 1 ) )
|
||||||
|
) {
|
||||||
|
@out[$i] = "";
|
||||||
|
} else {
|
||||||
|
@out[$i] = substr( @out[$i], index( @out[$i], ' ' ) + 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$i = 0;
|
||||||
|
while( $i < length( $format ) ) {
|
||||||
|
if( substr( $format, $i, 1 ) eq '%' ) {
|
||||||
|
$i++;
|
||||||
|
if( substr( $format, $i, 1 ) eq 'A' ) { $res = $res . @out[3]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'B' ) { $res = $res . @out[5]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'F' ) { $res = $res . @out[1]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'H' ) {
|
||||||
|
if( index( @out[1], "://" ) > 0 ) {
|
||||||
|
$res = $res . @out[1];
|
||||||
|
} else {
|
||||||
|
$res = $res . substr( @out[1], rindex( @out[1], '/' ) + 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( substr( $format, $i, 1 ) eq 'J' ) { $res = $res . @out[6]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'K' ) { $res = $res . @out[9]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'L' ) { $res = $res . @out[7]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'M' ) { $res = $res . @out[8]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'N' ) { $res = $res . @out[10]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'S' ) { $res = $res . @out[0]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'T' ) { $res = $res . @out[2]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'U' ) { $res = $res . @out[4]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'Y' ) { $res = $res . @out[11]; }
|
||||||
|
if( substr( $format, $i, 1 ) eq 'Z' ) { $res = $res . @out[12]; }
|
||||||
|
} else {
|
||||||
|
$res = $res . substr( $format, $i, 1 );
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub moc {
|
||||||
|
my $out;
|
||||||
|
my $outType = weechat::get_plugin_config( "outputType" );
|
||||||
|
if( length( $outType ) == 0 ) { $outType = 'i'; }
|
||||||
|
if( length( $_[1] ) ) { $outType = $_[1]; }
|
||||||
|
if( ( $outType ne 'i' ) && ( $outType ne 'o' ) && ( $outType ne 'ot' ) ) {
|
||||||
|
weechat::print( "Bad parameter or default output type" );
|
||||||
|
}
|
||||||
|
$out = info();
|
||||||
|
if( $outType eq 'i' ) { weechat::print( $out ); }
|
||||||
|
if( $outType eq 'o' ) { weechat::command( $out ); }
|
||||||
|
if( $outType eq 'ot' ) { weechat::command( "/me " . $out ); }
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub mocSetFormat {
|
||||||
|
if( length( $_[1] ) ) {
|
||||||
|
weechat::set_plugin_config( "outputFormat", $_[1] );
|
||||||
|
} else {
|
||||||
|
my $format = weechat::get_plugin_config( "outputFormat" );
|
||||||
|
if( length( $format ) == 0 ) { $format = "is listening to %T ::: %H"; }
|
||||||
|
weechat::print( "Current format is \"$format\"" );
|
||||||
|
}
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub mocSetOutput {
|
||||||
|
if( length( $_[1] ) ) {
|
||||||
|
if( ( $_[1] eq 'i' ) || ( $_[1] eq 'o' ) || ( $_[1] eq 'ot' ) ) {
|
||||||
|
weechat::set_plugin_config( "outputType", $_[1] );
|
||||||
|
} else {
|
||||||
|
weechat::print( "moc_set_command: bad parameter" );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
my $out = weechat::get_plugin_config( "outputType" );
|
||||||
|
if( length( $out ) == 0 ) { $out = 'i'; }
|
||||||
|
weechat::print( "Default output: $out" );
|
||||||
|
}
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2006 by FlashCode <flashcode@flashtux.org>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Play a sound when highlighted/private msg, or for ctcp sound event.
|
||||||
|
#
|
||||||
|
# History:
|
||||||
|
#
|
||||||
|
# 2006-05-30, FlashCode <flashcode@flashtux.org>:
|
||||||
|
# added plugin options for commands
|
||||||
|
# 2004-10-01, FlashCode <flashcode@flashtux.org>:
|
||||||
|
# initial release
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
my $version = "0.3";
|
||||||
|
my $command_suffix = " >/dev/null 2>&1 &";
|
||||||
|
|
||||||
|
# default values in setup file (~/.weechat/plugins.rc)
|
||||||
|
my $default_cmd_highlight = "alsaplay -i text ~/sound_highlight.wav";
|
||||||
|
my $default_cmd_pv = "alsaplay -i text ~/sound_pv.wav";
|
||||||
|
my $default_cmd_ctcp = "alsaplay -i text \$filename";
|
||||||
|
|
||||||
|
weechat::register("Sound", $version, "", "Sound for highlights/privates & CTCP sound events");
|
||||||
|
weechat::set_plugin_config("cmd_highlight", $default_cmd_highlight) if (weechat::get_plugin_config("cmd_highlight") eq "");
|
||||||
|
weechat::set_plugin_config("cmd_pv", $default_cmd_pv) if (weechat::get_plugin_config("cmd_pv") eq "");
|
||||||
|
weechat::set_plugin_config("cmd_ctcp", $default_cmd_ctcp) if (weechat::get_plugin_config("cmd_ctcp") eq "");
|
||||||
|
|
||||||
|
weechat::add_message_handler("PRIVMSG", "sound");
|
||||||
|
weechat::add_message_handler("weechat_highlight", "highlight");
|
||||||
|
weechat::add_message_handler("weechat_pv", "pv");
|
||||||
|
weechat::add_command_handler("sound", "sound_cmd");
|
||||||
|
|
||||||
|
sub sound
|
||||||
|
{
|
||||||
|
my $server = $_[0];
|
||||||
|
if ($_[1] =~ /(.*) PRIVMSG (.*)/)
|
||||||
|
{
|
||||||
|
my ($host, $msg) = ($1, $2);
|
||||||
|
if ($host ne "localhost")
|
||||||
|
{
|
||||||
|
if ($msg =~ /\001SOUND ([^ ]*)\001/)
|
||||||
|
{
|
||||||
|
my $filename = $1;
|
||||||
|
my $command = weechat::get_plugin_config("cmd_ctcp");
|
||||||
|
$command =~ s/(\$\w+)/$1/gee;
|
||||||
|
system($command.$command_suffix);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub highlight
|
||||||
|
{
|
||||||
|
my $command = weechat::get_plugin_config("cmd_highlight");
|
||||||
|
system($command.$command_suffix);
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub pv
|
||||||
|
{
|
||||||
|
my $command = weechat::get_plugin_config("cmd_pv");
|
||||||
|
system($command.$command_suffix);
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub sound_cmd
|
||||||
|
{
|
||||||
|
if ($#_ == 1)
|
||||||
|
{
|
||||||
|
my $filename = $_[1].".wav";
|
||||||
|
my $command = weechat::get_plugin_config("cmd_ctcp");
|
||||||
|
$command =~ s/(\$\w+)/$1/gee;
|
||||||
|
system($command.$command_suffix);
|
||||||
|
weechat::command("/quote PRIVMSG ".weechat::get_info("channel")." :\001SOUND $filename\001") if (@_);
|
||||||
|
}
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2006 by FlashCode <flashcode@flashtux.org>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Translate words and display result in infobar, local buffer or channel
|
||||||
|
#
|
||||||
|
# History:
|
||||||
|
# 2006-07-03, FlashCode <flashcode@flashtux.org>:
|
||||||
|
# initial release
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
# default values in setup file (~/.weechat/plugins.rc)
|
||||||
|
my $default_output_infobar = "on";
|
||||||
|
my $default_timeout = "2";
|
||||||
|
|
||||||
|
# script internal settings
|
||||||
|
my $languages = "de|el|en|es|fr|it|ja|ko|nl|pt|ru|zh|zt";
|
||||||
|
|
||||||
|
# init script
|
||||||
|
weechat::register("translate", "0.1", "", "Translation script");
|
||||||
|
weechat::set_plugin_config("output_infobar", $default_output_infobar) if (weechat::get_plugin_config("output_infobar") eq "");
|
||||||
|
weechat::set_plugin_config("timeout", $default_timeout) if (weechat::get_plugin_config("timeout") eq "");
|
||||||
|
|
||||||
|
# add command handlers for all languages
|
||||||
|
weechat::add_command_handler("translate", "translate", "translate text to other language",
|
||||||
|
"lang1 lang2 text [-o]",
|
||||||
|
"lang1: base language\n"
|
||||||
|
."lang2: target language\n"
|
||||||
|
." text: text to translate\n"
|
||||||
|
." -o: result is written on channel (visible by all)",
|
||||||
|
$languages." ".$languages);
|
||||||
|
|
||||||
|
# translate text with babelfish (altavista)
|
||||||
|
sub babelfish
|
||||||
|
{
|
||||||
|
my $timeout = weechat::get_plugin_config("timeout");
|
||||||
|
$timeout = $default_timeout if ($timeout eq "");
|
||||||
|
|
||||||
|
if (`wget -q --timeout=$timeout --user-agent "Mozilla" --output-document=- "http://babelfish.altavista.com/babelfish/tr?lp=$_[0]_$_[1]&urltext=$_[2]"` =~ /.*<td bgcolor=white class=s><div style=padding:10px;>(.*)<\/div><\/td>/)
|
||||||
|
{
|
||||||
|
return $1;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
# translate output
|
||||||
|
sub translate_output
|
||||||
|
{
|
||||||
|
if ($_[1] == 1)
|
||||||
|
{
|
||||||
|
if (substr($_[0],0,1) eq "/")
|
||||||
|
{
|
||||||
|
weechat::command("/".$_[0], "", "");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
weechat::command($_[0], "", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $output_infobar = weechat::get_plugin_config("output_infobar");
|
||||||
|
$output_infobar = $default_output_infobar if ($output_infobar eq "");
|
||||||
|
if ($output_infobar eq "on")
|
||||||
|
{
|
||||||
|
weechat::print_infobar(5, $_[0]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
weechat::print($_[0], "", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# /translate command
|
||||||
|
sub translate
|
||||||
|
{
|
||||||
|
my $server = shift;
|
||||||
|
my $args = shift;
|
||||||
|
|
||||||
|
if ($args =~ /([a-zA-Z][a-zA-Z]) ([a-zA-Z][a-zA-Z]) (.*)/)
|
||||||
|
{
|
||||||
|
my $lang1 = $1;
|
||||||
|
my $lang2 = $2;
|
||||||
|
my $text = $3;
|
||||||
|
|
||||||
|
# output on channel?
|
||||||
|
my $output_chan = 0;
|
||||||
|
if ($text =~ /(.*) -[oO]$/)
|
||||||
|
{
|
||||||
|
$output_chan = 1;
|
||||||
|
$text = $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $result = babelfish($lang1, $lang2, $text);
|
||||||
|
if ($result eq "")
|
||||||
|
{
|
||||||
|
translate_output("Error: unable to translate (bad language or timeout)", 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
translate_output($result, $output_chan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
translate_output("Error: bad arguments", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return weechat::PLUGIN_RC_OK;
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
#####################################################################
|
||||||
|
# xmms perl script for weechat #
|
||||||
|
# #
|
||||||
|
# Displays some useless xmms-infopipe values #
|
||||||
|
# (c) 2006 by Cédric Chalier <llinkz@gmail.com> #
|
||||||
|
# #
|
||||||
|
# This program 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 2 #
|
||||||
|
# of the License, or (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# This program 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 this program; if not, write to the Free Software #
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, #
|
||||||
|
# MA 02110-1301, USA. #
|
||||||
|
# #
|
||||||
|
#####################################################################
|
||||||
|
# db[x] variables are: #
|
||||||
|
# ----------------------------------------------------------- #
|
||||||
|
# | 0 | XMMS protocol version | 7 | uSecTime #
|
||||||
|
# | 1 | InfoPipe Plugin version | 8 | Time #
|
||||||
|
# | 2 | Status | 9 | Current bitrate #
|
||||||
|
# | 3 | Tunes in playlist | 10 | Samping Frequency #
|
||||||
|
# | 4 | Currently playing | 11 | Channels #
|
||||||
|
# | 5 | uSecPosition | 12 | Title #
|
||||||
|
# | 6 | Position | 13 | File #
|
||||||
|
# #
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
weechat::register ("xmms", "1.1", "", "xmms info script (usage: /xmms)");
|
||||||
|
weechat::add_command_handler ("xmms", xmmsinfo);
|
||||||
|
|
||||||
|
sub xmmsinfo {
|
||||||
|
if (! -e "/tmp/xmms-info")
|
||||||
|
{}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
open (fi, "/tmp/xmms-info");
|
||||||
|
@db2 = <fi>;
|
||||||
|
foreach $l (0 .. 14)
|
||||||
|
{
|
||||||
|
($c,$tmp) = split(": " ,$db2[$l]);
|
||||||
|
chomp($tmp);
|
||||||
|
push @db,$tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (($db[7]!=-1) && ($db[7]!=0))
|
||||||
|
{
|
||||||
|
weechat::command("/me np: $db[12]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
weechat::command("/me np: $db[12] ($db[13])");
|
||||||
|
}
|
||||||
|
@db = ();
|
||||||
|
@db2 = ();
|
||||||
|
close (fi);
|
||||||
|
}
|
||||||
|
# $id: xmms-weechat.pl,v 1.1 2006/05/23 00:50:10 linkz Exp $
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
# --------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Copyright (c) 2006 by Jean-Marie Favreau <jm@jmtrivial.info>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
# This script automatically op and voice some nicks
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# 2006-12-14, FlashCode <flashcode@flashtux.org>:
|
||||||
|
# fixed message split (for servers like quakenet with no ":" after "JOIN")
|
||||||
|
|
||||||
|
import weechat
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
# regexp list for /op
|
||||||
|
U_OP = { "server": { "#chan" : [ "nick1@domain.com", "nick2.*@.*"] } }
|
||||||
|
|
||||||
|
# chan list where all nicks are /voice
|
||||||
|
C_VOICE = { "server": [ "#chan1", "#chan2" ] }
|
||||||
|
|
||||||
|
|
||||||
|
def auto_op(server, args):
|
||||||
|
'''Handle connect'''
|
||||||
|
result = weechat.PLUGIN_RC_OK
|
||||||
|
# first, watch if need /op
|
||||||
|
if U_OP.has_key(server):
|
||||||
|
chans = U_OP[server]
|
||||||
|
try:
|
||||||
|
# find nick and channel
|
||||||
|
user, channel = args.split(" JOIN ")
|
||||||
|
nick, next = user.split("!")
|
||||||
|
if channel.startswith(':'):
|
||||||
|
channel = channel[1:]
|
||||||
|
except ValueError:
|
||||||
|
result = weechat.PLUGIN_RC_KO
|
||||||
|
else:
|
||||||
|
if chans.has_key(channel):
|
||||||
|
users = chans[channel]
|
||||||
|
for userExpr in users:
|
||||||
|
if re.search("^n=" + userExpr, next):
|
||||||
|
weechat.command("/op "+nick, channel, server) # op nick
|
||||||
|
weechat.prnt("[op] "+nick+" on "+channel+"("+server+")") # print
|
||||||
|
return result # exit
|
||||||
|
|
||||||
|
|
||||||
|
# then watch if need /voice
|
||||||
|
if C_VOICE.has_key(server):
|
||||||
|
chans = C_VOICE[server]
|
||||||
|
try:
|
||||||
|
# find nick and channel
|
||||||
|
user, channel = args.split(" JOIN ")
|
||||||
|
nick, next = user.split("!")
|
||||||
|
if channel.startswith(':'):
|
||||||
|
channel = channel[1:]
|
||||||
|
except ValueError:
|
||||||
|
result = weechat.PLUGIN_RC_KO
|
||||||
|
else:
|
||||||
|
if channel in chans:
|
||||||
|
weechat.command("/voice "+nick, channel, server) # voice nick
|
||||||
|
weechat.prnt("[voice] "+nick+" on "+channel+"("+server+")") # print info
|
||||||
|
return result # exit
|
||||||
|
|
||||||
|
# otherwise: nothing to do
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
# register and add function to weechat
|
||||||
|
weechat.register("auto_op", "0.3", "", "auto op plug-in for weechat")
|
||||||
|
weechat.add_message_handler ("join", "auto_op")
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,245 @@
|
|||||||
|
# -*- coding: iso-8859-1 -*-
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# autoauth.py (c) October 2005 by kolter <kolter+dev@openics.org>
|
||||||
|
# Python script for WeeChat.
|
||||||
|
#
|
||||||
|
# Licence : GPL v2
|
||||||
|
# Description : Permits to auto-authenticate when changing nick
|
||||||
|
# Syntax : try /auth help to get help on this script
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# ### changelog ###
|
||||||
|
#
|
||||||
|
# * version 0.5
|
||||||
|
# - fix bug when script script is run for first time
|
||||||
|
# - rewrite half script to improve access to settings
|
||||||
|
# - add a feature to permit to run command(s) when identified
|
||||||
|
# - add completion for commands
|
||||||
|
# * version 0.4
|
||||||
|
# - use set_plugin_config and get_plugin_config to read ans save settings
|
||||||
|
# - remove deprecated import
|
||||||
|
# * version 0.3
|
||||||
|
# - add return codes
|
||||||
|
# * version 0.2
|
||||||
|
# - correct weechatdir with weechat_dir while using weechat.get_info
|
||||||
|
# * version 0.1 :
|
||||||
|
# - first release
|
||||||
|
#
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
VERSION="0.5"
|
||||||
|
NAME="autoauth"
|
||||||
|
|
||||||
|
import weechat
|
||||||
|
|
||||||
|
weechat.register (NAME, VERSION, "", "Auto authentification while changing nick")
|
||||||
|
weechat.add_message_handler("NOTICE", "auth_notice_check")
|
||||||
|
weechat.add_command_handler(
|
||||||
|
"auth",
|
||||||
|
"auth_command",
|
||||||
|
"Auto authentification while changing nick",
|
||||||
|
"{ add $nick $pass [$server=current] | del $nick [$server=current] | list | cmd [$command [$server=current]] }",
|
||||||
|
" add : add authorization for $nick with password $pass for $server\n"
|
||||||
|
" del : del authorization for $nick for $server\n"
|
||||||
|
" list : list all authorization settings\n"
|
||||||
|
" cmd : command(s) (separated by '|') to run when identified for $server\n"
|
||||||
|
" %n will be replaced by current nick in each command",
|
||||||
|
"add|del|list|cmd %- %S %S"
|
||||||
|
)
|
||||||
|
|
||||||
|
def auth_cmdlist():
|
||||||
|
cmd = ''
|
||||||
|
cmds = weechat.get_plugin_config("commands")
|
||||||
|
if cmds == '':
|
||||||
|
weechat.prnt("[%s] commands (empty)" % (NAME))
|
||||||
|
else:
|
||||||
|
weechat.prnt("[%s] commands (list)" % (NAME))
|
||||||
|
for c in cmds.split("####"):
|
||||||
|
weechat.prnt(" --> %s : '%s' " % (c.split(":::")[0], c.split(":::")[1]))
|
||||||
|
|
||||||
|
def auth_cmdget(server):
|
||||||
|
cmd = ''
|
||||||
|
cmds = weechat.get_plugin_config("commands")
|
||||||
|
if cmds != '':
|
||||||
|
for c in cmds.split("####"):
|
||||||
|
if c.find(":::") != -1:
|
||||||
|
if c.split(":::")[0] == server:
|
||||||
|
cmd = ":::".join(c.split(":::")[1:])
|
||||||
|
break
|
||||||
|
return cmd
|
||||||
|
|
||||||
|
def auth_cmdset(server, command):
|
||||||
|
cmds = weechat.get_plugin_config("commands")
|
||||||
|
|
||||||
|
found = False
|
||||||
|
conf = []
|
||||||
|
if cmds != '':
|
||||||
|
for c in cmds.split("####"):
|
||||||
|
if c.find(":::") != -1:
|
||||||
|
if c.split(":::")[0] == server:
|
||||||
|
found = True
|
||||||
|
conf.append("%s:::%s" % (server, command))
|
||||||
|
else:
|
||||||
|
conf.append(c)
|
||||||
|
if not found:
|
||||||
|
conf.append("%s:::%s" % (server, command))
|
||||||
|
|
||||||
|
weechat.set_plugin_config("commands", "####".join(conf))
|
||||||
|
weechat.prnt("[%s] command '%s' successfully added for server %s" % (NAME, command, server))
|
||||||
|
|
||||||
|
def auth_cmdunset(server):
|
||||||
|
cmds = weechat.get_plugin_config("commands")
|
||||||
|
|
||||||
|
found = False
|
||||||
|
conf = []
|
||||||
|
if cmds != '':
|
||||||
|
for c in cmds.split("####"):
|
||||||
|
if c.find(":::") != -1:
|
||||||
|
if c.split(":::")[0] != server:
|
||||||
|
conf.append(c)
|
||||||
|
else:
|
||||||
|
found = True
|
||||||
|
if found:
|
||||||
|
weechat.prnt("[%s] command for server '%s' successfully removed" % (NAME, server))
|
||||||
|
weechat.set_plugin_config("commands", "####".join(conf))
|
||||||
|
|
||||||
|
def auth_cmd(args, server):
|
||||||
|
if server == '':
|
||||||
|
if args == '':
|
||||||
|
auth_cmdlist()
|
||||||
|
else:
|
||||||
|
weechat.prnt("[%s] error while setting command, can't find a server" % (NAME))
|
||||||
|
else:
|
||||||
|
if args == '':
|
||||||
|
auth_cmdunset(server)
|
||||||
|
else:
|
||||||
|
auth_cmdset(server, args)
|
||||||
|
|
||||||
|
def auth_list():
|
||||||
|
data = weechat.get_plugin_config("data")
|
||||||
|
|
||||||
|
if data == "":
|
||||||
|
weechat.prnt("[%s] accounts (empty)" % (NAME))
|
||||||
|
else:
|
||||||
|
weechat.prnt("[%s] accounts (list)" % (NAME))
|
||||||
|
for e in data.split(","):
|
||||||
|
if e.find("=") == -1:
|
||||||
|
continue
|
||||||
|
(serv_nick, passwd) = e.split("=")
|
||||||
|
(server, nick) = serv_nick.split(".")
|
||||||
|
weechat.prnt(" --> %s@%s " % (nick, server))
|
||||||
|
|
||||||
|
def auth_notice_check(server, args):
|
||||||
|
if args.find("If this is your nickname, type /msg NickServ") != -1 or args.find("This nickname is registered and protected.") != -1 :
|
||||||
|
passwd = auth_get(weechat.get_info("nick"), server)
|
||||||
|
if passwd != None:
|
||||||
|
weechat.command("/quote nickserv identify %s" % (passwd), "", server)
|
||||||
|
commands = auth_cmdget(server)
|
||||||
|
if commands != '':
|
||||||
|
for c in commands.split("|"):
|
||||||
|
weechat.command(c.strip().replace("%n", weechat.get_info('nick')))
|
||||||
|
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
def auth_del(the_nick, the_server):
|
||||||
|
data = weechat.get_plugin_config("data")
|
||||||
|
|
||||||
|
found = False
|
||||||
|
conf = []
|
||||||
|
for e in data.split(","):
|
||||||
|
if e.find("=") == -1:
|
||||||
|
continue
|
||||||
|
(serv_nick, passwd) = e.split("=")
|
||||||
|
(server, nick) = serv_nick.split(".")
|
||||||
|
if the_nick == nick and the_server == server:
|
||||||
|
found = True
|
||||||
|
else:
|
||||||
|
conf.append("%s.%s=%s" % (server, nick, passwd))
|
||||||
|
|
||||||
|
if found:
|
||||||
|
weechat.set_plugin_config("data", ",".join(conf))
|
||||||
|
weechat.prnt("[%s] nick '%s@%s' successfully remove" % (NAME, the_nick, the_server))
|
||||||
|
else:
|
||||||
|
weechat.prnt("[%s] an error occured while removing nick '%s@%s' (not found)" % (NAME, the_nick, the_server))
|
||||||
|
|
||||||
|
def auth_add(the_nick, the_passwd, the_server):
|
||||||
|
data = weechat.get_plugin_config("data")
|
||||||
|
|
||||||
|
found = False
|
||||||
|
conf = []
|
||||||
|
for e in data.split(","):
|
||||||
|
if e.find("=") == -1:
|
||||||
|
continue
|
||||||
|
(serv_nick, passwd) = e.split("=")
|
||||||
|
(server, nick) = serv_nick.split(".")
|
||||||
|
if the_nick == nick and the_server == server:
|
||||||
|
passwd = the_passwd
|
||||||
|
found = True
|
||||||
|
conf.append("%s.%s=%s" % (server, nick, passwd))
|
||||||
|
|
||||||
|
if not found:
|
||||||
|
conf.append("%s.%s=%s" % (the_server, the_nick, the_passwd))
|
||||||
|
|
||||||
|
weechat.set_plugin_config("data", ",".join(conf))
|
||||||
|
weechat.prnt("[%s] nick '%s@%s' successfully added" % (NAME, the_nick, the_server))
|
||||||
|
|
||||||
|
def auth_get(the_nick, the_server):
|
||||||
|
data = weechat.get_plugin_config("data")
|
||||||
|
|
||||||
|
for e in data.split(","):
|
||||||
|
if e.find("=") == -1:
|
||||||
|
continue
|
||||||
|
(serv_nick, passwd) = e.split("=")
|
||||||
|
(server, nick) = serv_nick.split(".")
|
||||||
|
if the_nick == nick and the_server == server:
|
||||||
|
return passwd
|
||||||
|
return None
|
||||||
|
|
||||||
|
def auth_command(server, args):
|
||||||
|
list_args = args.split(" ")
|
||||||
|
|
||||||
|
#strip spaces
|
||||||
|
while '' in list_args:
|
||||||
|
list_args.remove('')
|
||||||
|
while ' ' in list_args:
|
||||||
|
list_args.remove(' ')
|
||||||
|
|
||||||
|
if len(list_args) == 0:
|
||||||
|
weechat.command("/help auth")
|
||||||
|
elif list_args[0] not in ["add", "del", "list", "cmd"]:
|
||||||
|
weechat.prnt("[%s] bad option while using /auth command, try '/help auth' for more info" % (NAME))
|
||||||
|
elif list_args[0] == "cmd":
|
||||||
|
if len(list_args[1:]) == 1 and list_args[1] in weechat.get_server_info().keys():
|
||||||
|
auth_cmd("", list_args[1])
|
||||||
|
elif len(list_args[1:]) == 1:
|
||||||
|
auth_cmd(list_args[1], weechat.get_info('server'))
|
||||||
|
elif len(list_args[1:]) >= 2:
|
||||||
|
if list_args[-1] in weechat.get_server_info().keys():
|
||||||
|
auth_cmd(" ".join(list_args[1:-1]), list_args[-1])
|
||||||
|
else:
|
||||||
|
auth_cmd(" ".join(list_args[1:]), weechat.get_info('server'))
|
||||||
|
else:
|
||||||
|
auth_cmd(" ".join(list_args[1:]), weechat.get_info(server))
|
||||||
|
elif list_args[0] == "list":
|
||||||
|
auth_list()
|
||||||
|
elif list_args[0] == "add":
|
||||||
|
if len(list_args) < 3 or (len(list_args) == 3 and weechat.get_info("server") == ''):
|
||||||
|
weechat.prnt("[%s] bad option while using /auth command, try '/help auth' for more info" % (NAME))
|
||||||
|
else:
|
||||||
|
if len(list_args) == 3:
|
||||||
|
auth_add(list_args[1], list_args[2], weechat.get_info("server"))
|
||||||
|
else:
|
||||||
|
auth_add(list_args[1], list_args[2], list_args[3])
|
||||||
|
elif list_args[0] == "del":
|
||||||
|
if len(list_args) < 2:
|
||||||
|
weechat.prnt("[%s] bad option while using /auth command, try '/help auth' for more info" % (NAME))
|
||||||
|
else:
|
||||||
|
if len(list_args) == 2:
|
||||||
|
auth_del(list_args[1], weechat.get_info("server"))
|
||||||
|
else:
|
||||||
|
auth_del(list_args[1], list_args[2])
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
# --------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Copyright (c) 2006 by Gwenn Gueguen <weechat@grumly.info>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
# This script automatically sets away after a period of inactivity
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
import weechat
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
/autoaway [time [message]]
|
||||||
|
|
||||||
|
/autoaway whithout any parameter disables autoaway
|
||||||
|
|
||||||
|
Script config:
|
||||||
|
time:
|
||||||
|
number of minutes of inactivity after which a user will be marked as away
|
||||||
|
message:
|
||||||
|
message that will be passed to the /away command
|
||||||
|
enabled:
|
||||||
|
is autoaway enabled ?
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
SCRIPT_NAME="autoaway"
|
||||||
|
SCRIPT_VERSION="0.2"
|
||||||
|
SCRIPT_DESC="autoaway script for weechat"
|
||||||
|
|
||||||
|
|
||||||
|
# Names of the settings
|
||||||
|
CONFIG_TIME="time"
|
||||||
|
CONFIG_MESSAGE="message"
|
||||||
|
CONFIG_ENABLED="enabled"
|
||||||
|
|
||||||
|
# Name of the command
|
||||||
|
CMD_AUTOAWAY="autoaway"
|
||||||
|
|
||||||
|
# Default settings
|
||||||
|
DEFAULT_TIME="15"
|
||||||
|
DEFAULT_MESSAGE="idle"
|
||||||
|
|
||||||
|
# Interval (in seconds) between checks
|
||||||
|
TIMER_VALUE=15
|
||||||
|
|
||||||
|
|
||||||
|
def print_settings():
|
||||||
|
weechat.prnt("AutoAway settings:")
|
||||||
|
weechat.prnt(" time: %s minute(s)" % weechat.get_plugin_config(CONFIG_TIME))
|
||||||
|
weechat.prnt(" message: %s" % weechat.get_plugin_config(CONFIG_MESSAGE))
|
||||||
|
if weechat.get_plugin_config(CONFIG_ENABLED) == "true":
|
||||||
|
weechat.prnt(" enabled")
|
||||||
|
else:
|
||||||
|
weechat.prnt(" disabled")
|
||||||
|
|
||||||
|
|
||||||
|
def autoaway(server, args):
|
||||||
|
weechat.remove_timer_handler("timer_handler")
|
||||||
|
|
||||||
|
params = args.split(None, 1)
|
||||||
|
if len(params) == 0:
|
||||||
|
weechat.set_plugin_config(CONFIG_ENABLED, "false")
|
||||||
|
else:
|
||||||
|
weechat.set_plugin_config(CONFIG_ENABLED, "true")
|
||||||
|
weechat.set_plugin_config(CONFIG_TIME, params[0])
|
||||||
|
if len(params) > 1:
|
||||||
|
weechat.set_plugin_config(CONFIG_MESSAGE, params[1])
|
||||||
|
|
||||||
|
previous_inactivity = int(weechat.get_info("inactivity"))
|
||||||
|
weechat.add_timer_handler(TIMER_VALUE, "timer_handler")
|
||||||
|
|
||||||
|
print_settings()
|
||||||
|
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
def timer_handler():
|
||||||
|
global previous_inactivity, previous_state
|
||||||
|
|
||||||
|
# Get current away status
|
||||||
|
away_flag = int(weechat.get_info("away"))
|
||||||
|
|
||||||
|
# Get number of seconds of inactivity
|
||||||
|
idle_time = int(weechat.get_info("inactivity"))
|
||||||
|
|
||||||
|
if away_flag == previous_state:
|
||||||
|
# away flag was not changed outside this script
|
||||||
|
if away_flag and idle_time < previous_inactivity:
|
||||||
|
# Inactivity was reset (or overflowed ?)
|
||||||
|
weechat.command("/away -all")
|
||||||
|
elif not away_flag and idle_time >= (60 * int(weechat.get_plugin_config(CONFIG_TIME))):
|
||||||
|
# Time to go away
|
||||||
|
weechat.command("/away -all %s" % weechat.get_plugin_config(CONFIG_MESSAGE))
|
||||||
|
|
||||||
|
previous_state = int(weechat.get_info("away"))
|
||||||
|
previous_inactivity = idle_time
|
||||||
|
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
if weechat.register(SCRIPT_NAME, SCRIPT_VERSION, "", SCRIPT_DESC):
|
||||||
|
|
||||||
|
try:
|
||||||
|
previous_state = int(weechat.get_info("away"))
|
||||||
|
except ValueError:
|
||||||
|
previous_state = 0
|
||||||
|
|
||||||
|
# Set config to default values if undefined
|
||||||
|
try:
|
||||||
|
idle_time = int(weechat.get_plugin_config(CONFIG_TIME))
|
||||||
|
except ValueError:
|
||||||
|
weechat.set_plugin_config(CONFIG_TIME, DEFAULT_TIME)
|
||||||
|
|
||||||
|
if weechat.get_plugin_config(CONFIG_MESSAGE) == None:
|
||||||
|
weechat.set_plugin_config(CONFIG_MESSAGE, DEFAULT_MESSAGE)
|
||||||
|
|
||||||
|
if weechat.get_plugin_config(CONFIG_ENABLED) == None:
|
||||||
|
weechat.set_plugin_config(CONFIG_ENABLED, "false")
|
||||||
|
|
||||||
|
|
||||||
|
# Display a summary of the settings
|
||||||
|
print_settings()
|
||||||
|
|
||||||
|
|
||||||
|
# Start the timer if necessary
|
||||||
|
if weechat.get_plugin_config(CONFIG_ENABLED) == "true":
|
||||||
|
previous_inactivity = int(weechat.get_info("inactivity"))
|
||||||
|
weechat.add_timer_handler(TIMER_VALUE, "timer_handler")
|
||||||
|
|
||||||
|
|
||||||
|
weechat.add_command_handler(CMD_AUTOAWAY, "autoaway", "Set autoaway",
|
||||||
|
"[time [message]]",
|
||||||
|
"time: number of minutes before being marked as away\n"
|
||||||
|
+ "message: away message\n"
|
||||||
|
+ "\n"
|
||||||
|
+ "whithout any argument, autoaway will be disabled\n")
|
||||||
|
|
||||||
@@ -0,0 +1,429 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
"""
|
||||||
|
Catapult by Stalwart <stlwrt@gmail.com>
|
||||||
|
Licensed under GNU GPL 2
|
||||||
|
"""
|
||||||
|
|
||||||
|
import weechat
|
||||||
|
import random
|
||||||
|
|
||||||
|
weechat.register("Catapult", "0.1", "", "Less ordinary abuse generator")
|
||||||
|
weechat.add_command_handler("slap", "slapper", "Creative slapper", "<target>", "", "%n")
|
||||||
|
weechat.add_command_handler("fortune", "fortune", "Fortune cookies!")
|
||||||
|
weechat.add_command_handler("winjoke", "winjoke", "Windoze jokes")
|
||||||
|
weechat.add_command_handler("linjoke", "linjoke", "Linux jokes")
|
||||||
|
weechat.add_command_handler("give", "giver", "Creative giver", "<target>", "", "%n")
|
||||||
|
weechat.add_command_handler("hate", "hater", "Creative hater", "<target>", "", "%n")
|
||||||
|
weechat.add_command_handler("love", "lover", "Creative lover", "<target>", "", "%n")
|
||||||
|
weechat.add_command_handler("dance", "dancer", "Creative dancer", "<target>", "", "%n")
|
||||||
|
|
||||||
|
# slapper
|
||||||
|
def slapper(server, args):
|
||||||
|
objects = [
|
||||||
|
"a rather large squid",
|
||||||
|
"a hydraulic pump",
|
||||||
|
"a book by Stephen King",
|
||||||
|
"a 10mbit network card",
|
||||||
|
"a ladies handbag",
|
||||||
|
"some girl scouts",
|
||||||
|
"a football team",
|
||||||
|
"a bottle",
|
||||||
|
"a yellow marshmellow",
|
||||||
|
"a match",
|
||||||
|
"the queen of England",
|
||||||
|
"a taxi",
|
||||||
|
"100 feet of wire",
|
||||||
|
"a bag of Cheerios",
|
||||||
|
"a hat",
|
||||||
|
"a fist",
|
||||||
|
"the back hand",
|
||||||
|
"with the forehead",
|
||||||
|
"a computer moniter",
|
||||||
|
"a coconut",
|
||||||
|
"a microfone",
|
||||||
|
"a cellphone",
|
||||||
|
"a snowplough",
|
||||||
|
"a doggy",
|
||||||
|
"Bill Clinton",
|
||||||
|
"a stone",
|
||||||
|
"a club. With a nail in it",
|
||||||
|
"a small asteroid, rich in iron",
|
||||||
|
"a small interstellar spaceship",
|
||||||
|
"a fresh zuccini",
|
||||||
|
"a laptop",
|
||||||
|
"a big dictionary",
|
||||||
|
"a baseball bat",
|
||||||
|
"NeverNet",
|
||||||
|
"some porn",
|
||||||
|
"a mIRC script",
|
||||||
|
"a canoe",
|
||||||
|
"a tortoise",
|
||||||
|
"a horse",
|
||||||
|
"the book of Kells",
|
||||||
|
"a whale",
|
||||||
|
"a rubber dildo",
|
||||||
|
"a well groomed poodle",
|
||||||
|
"a channel operator",
|
||||||
|
"a news paper (New York Times Sunday Edition)",
|
||||||
|
"a gnarly werewolf",
|
||||||
|
"a vampire. They really suck",
|
||||||
|
"a perl script",
|
||||||
|
"a bag of doggie chow",
|
||||||
|
"a fat walrus",
|
||||||
|
"an IP adress",
|
||||||
|
"a catholic priest",
|
||||||
|
"James Dean",
|
||||||
|
"Ronald MacDonald (he *IS* good for something)",
|
||||||
|
"Autoconf version 2.13",
|
||||||
|
"a PRIVMSG",
|
||||||
|
"an email adress",
|
||||||
|
"some ANSI color codes",
|
||||||
|
"a thermonuclear weapon. Yehaw",
|
||||||
|
"the hitch hikers guide to the galaxy, revised edition",
|
||||||
|
"Nessie, the Loch Ness monster",
|
||||||
|
"a tuna. Still in the can! *BONK* That will leave a mark",
|
||||||
|
"a few fluffy pillows",
|
||||||
|
"a red chinese dragon",
|
||||||
|
"a linux-manual (signed by L. Torvalds)",
|
||||||
|
"Stage1",
|
||||||
|
"Bill Gates underpants",
|
||||||
|
"GM Abraham and the whole OW-Staff",
|
||||||
|
"Sphere 1.0",
|
||||||
|
"a Linuxkernel",
|
||||||
|
"Lenin's Collected Works",
|
||||||
|
"Stalin's Collected Works",
|
||||||
|
"a iron Tux",
|
||||||
|
"a glowing 23",
|
||||||
|
"your mum (CLEAN YOUR ROOM!)",
|
||||||
|
"a complete GNOME-Documentation",
|
||||||
|
"a Portagetree",
|
||||||
|
"thand[Z]'s transparent Tanga",
|
||||||
|
"a Kernelpanic",
|
||||||
|
"Windoze XP",
|
||||||
|
"an AK-47 (die, you imperialist dog!)",
|
||||||
|
"a bag full with Michael Jacksons droped noses",
|
||||||
|
"an NBP-Manifesto (Hail Limonew! Hail our Leader! Hail!)",
|
||||||
|
"an NBP-Flag (Lead us to freedom, Leader Limonew!)",
|
||||||
|
"Mein Kampf (Doppelausgabe, Hardcover)",
|
||||||
|
"Invader Zim's iron fist",
|
||||||
|
"some ASCII-Arts",
|
||||||
|
"The Family Learning Channel",
|
||||||
|
"GOD",
|
||||||
|
"Dorian Grey's picture",
|
||||||
|
"some unlocked Grenades *BOOM*",
|
||||||
|
"the Win2k Buglist",
|
||||||
|
"a widescreen TV (it can damage your brain!)",
|
||||||
|
"a chain saw",
|
||||||
|
"a huge tree"
|
||||||
|
]
|
||||||
|
if args <> "":
|
||||||
|
weechat.command("/me slaps %s with %s." % (args, random.choice(objects)))
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
else:
|
||||||
|
weechat.prnt("You must specify target")
|
||||||
|
return weechat.PLUGIN_RC_KO
|
||||||
|
|
||||||
|
# fortune cookies
|
||||||
|
def fortune(server, args):
|
||||||
|
objects = [
|
||||||
|
"There are three kinds of people: men, women, and unix.",
|
||||||
|
"BOFH Excuse #118: the router thinks its a printer.",
|
||||||
|
"CHUBBY CHECKER just had a CHICKEN SANDWICH in downtown DULUTH!",
|
||||||
|
"Think big. Pollute the Mississippi.",
|
||||||
|
"An optimist is a man who looks forward to marriage. A pessimist is a married optimist.",
|
||||||
|
"There are never any bugs you haven't found yet.",
|
||||||
|
"It don't mean a THING if you ain't got that SWING!!",
|
||||||
|
"Atomic batteries to power, turbines to speed. -- Robin, The Boy Wonder",
|
||||||
|
"Two wrongs don't make a right, but three lefts do.",
|
||||||
|
"A log may float in a river, but that does not make it a crocodile.",
|
||||||
|
"Art is Nature speeded up and God slowed down. -- Chazal",
|
||||||
|
"Texas law forbids anyone to have a pair of pliers in his possession.",
|
||||||
|
"UFOs are for real: the Air Force doesn't exist.",
|
||||||
|
"Expansion means complexity; and complexity decay.",
|
||||||
|
"I came, I saw, I deleted all your files.",
|
||||||
|
"The Magic of Windows: Turns a 486 back into a PC/XT.",
|
||||||
|
"Our vision is to speed up time, eventually eliminating it. -- Alex Schure",
|
||||||
|
"Breaking Windows isn't just for kids anymore...",
|
||||||
|
"Neckties strangle clear thinking. -- Lin Yutang",
|
||||||
|
"I'm prepared for all emergencies but totally unprepared for everyday life.",
|
||||||
|
"Yow! I just went below the poverty line!",
|
||||||
|
"Break into jail and claim police brutality.",
|
||||||
|
"BOFH Excuse #290: The CPU has shifted, and become decentralized.",
|
||||||
|
"Did you hear about the model who sat on a broken bottle and cut a nice figure?",
|
||||||
|
"We have a equal opportunity Calculus class -- it's fully integrated.",
|
||||||
|
"BOFH Excuse #170: popper unable to process jumbo kernel",
|
||||||
|
"It's later than you think.",
|
||||||
|
"My Aunt MAUREEN was a military advisor to IKE & TINA TURNER!!",
|
||||||
|
"Everyone hates me because I'm paranoid.",
|
||||||
|
"When you are in it up to your ears, keep your mouth shut.",
|
||||||
|
"Theory is gray, but the golden tree of life is green. -- Goethe",
|
||||||
|
"Most Texans think Hanukkah is some sort of duck call. -- Richard Lewis",
|
||||||
|
"grasshopotomaus: A creature that can leap to tremendous heights... once.",
|
||||||
|
"It takes both a weapon, and two people, to commit a murder.",
|
||||||
|
"Facts are the enemy of truth. -- Don Quixote",
|
||||||
|
"Forty two.",
|
||||||
|
"BOFH Excuse #424: operation failed because: there is no message for this error (#1014)",
|
||||||
|
"Never leave anything to chance; make sure all your crimes are premeditated.",
|
||||||
|
"BOFH Excuse #60: system has been recalled",
|
||||||
|
"Science and religion are in full accord but science and faith are in complete discord.",
|
||||||
|
"A likely impossibility is always preferable to an unconvincing possibility. -- Aristotle",
|
||||||
|
"The angry man always thinks he can do more than he can. -- Albertano of Brescia",
|
||||||
|
"Hello again, Peabody here... -- Mister Peabody",
|
||||||
|
"Nobody ever died from oven crude poisoning.",
|
||||||
|
"Dogs crawl under fences... software crawls under Windows 95.",
|
||||||
|
"Say something you'll be sorry for, I love receiving apologies.",
|
||||||
|
"NOTICE: -- THE ELEVATORS WILL BE OUT OF ORDER TODAY -- (The nearest working elevator is in the building across the street.)",
|
||||||
|
"THERE ARE PLENTY OF BUSINESSES LIKE SHOW BUSINESS -- Bart Simpson on chalkboard in episode 1F19",
|
||||||
|
"Life is what happens to you while you're busy making other plans. -- John Lennon, Beautiful Boy",
|
||||||
|
"While having never invented a sin, I'm trying to perfect several.",
|
||||||
|
"Emacs, n.: A slow-moving parody of a text editor.",
|
||||||
|
" ... with liberty and justice for all ... who can afford it.",
|
||||||
|
"Princess Leia: Aren't you a little short for a stormtrooper?",
|
||||||
|
"The Official Colorado State Vegetable is now the 'state legislator'",
|
||||||
|
"Abandon the search for Truth; settle for a good fantasy.",
|
||||||
|
"There's nothing to writing. All you do is sit at a typewriter and open a vein. -- Red Smith",
|
||||||
|
"Our OS who art in CPU, UNIX be thy name. Thy programs run, thy syscalls done, In kernel as it is in user!",
|
||||||
|
"All hope abandon, ye who enter here! -- Dante Alighieri",
|
||||||
|
"The human mind ordinarily operates at only ten percent of its capacity -- the rest is overhead for the operating system.",
|
||||||
|
"Professor: 'If a dog craps anywhere in the universe, you can bet I won't be out of loop.'",
|
||||||
|
"I WILL NOT MAKE FLATUENT NOISES IN CLASS -- Bart Simpson on chalkboard in episode 7F13",
|
||||||
|
"Listen you donkey raping shit eater.",
|
||||||
|
"In specifications, Murphy's Law supersedes Ohm's.",
|
||||||
|
"One of Bender's kids: Our dad is a giant toy!",
|
||||||
|
"I am a jelly donut. I am a jelly donut.",
|
||||||
|
"We are all in the gutter, but some of us are looking at the stars. -- Oscar Wilde",
|
||||||
|
"Bender to Zoidberg: 'You're looking less nuts, crabby.'",
|
||||||
|
"Things will be bright in P.M. A cop will shine a light in your face.",
|
||||||
|
"A journey of a thousand miles begins with a cash advance.",
|
||||||
|
"Everything that can be invented has been invented. -- Charles Duell, Director of U.S. Patent Office, 1899",
|
||||||
|
"Vote anarchist.",
|
||||||
|
"paranoia, n.: A healthy understanding of the way the universe works.",
|
||||||
|
"BOFH Excuse #401: Sales staff sold a product we don't offer.",
|
||||||
|
"BOFH Excuse #200: The monitor needs another box of pixels.",
|
||||||
|
"The important thing is not to stop questioning.",
|
||||||
|
"Not all men who drink are poets. Some of us drink because we aren't poets.",
|
||||||
|
"Oh my god, dude!",
|
||||||
|
"BOFH Excuse #441: Hash table has woodworm",
|
||||||
|
"BOFH Excuse #112: The monitor is plugged into the serial port",
|
||||||
|
"There's so much to say but your eyes keep interrupting me.",
|
||||||
|
"For the next hour, WE will control all that you see and hear.",
|
||||||
|
"Reality continues to ruin my life. -- Calvin",
|
||||||
|
"The shortest distance between two points is under construction. -- Noelie Alito",
|
||||||
|
"BOFH Excuse #192: runaway cat on system.",
|
||||||
|
"My haircut is totally traditional!",
|
||||||
|
"You! What PLANET is this! -- McCoy, 'The City on the Edge of Forever', stardate 3134.0",
|
||||||
|
"BOFH Excuse #433: error: one bad user found in front of screen",
|
||||||
|
"Dyslexics have more fnu.",
|
||||||
|
"I'm not stupid, I'm not expendable, and I'M NOT GOING!",
|
||||||
|
"It's clever, but is it art?",
|
||||||
|
"His life was formal; his actions seemed ruled with a ruler.",
|
||||||
|
"Yeah. Except for being entirely different, they're pretty much the same.",
|
||||||
|
"Oh, I get it!! 'The BEACH goes on', huh, SONNY??",
|
||||||
|
"Ban the bomb. Save the world for conventional warfare.",
|
||||||
|
"Everything that you know is wrong, but you can be straightened out.",
|
||||||
|
"If I pull this SWITCH I'll be RITA HAYWORTH!! Or a SCIENTOLOGIST!",
|
||||||
|
"Tex SEX! The HOME of WHEELS! The dripping of COFFEE!! Take me to Minnesota but don't EMBARRASS me!!",
|
||||||
|
"clovek, ktory si ako prvy kupil fax musel byt strasny kokot.",
|
||||||
|
"Are you a turtle?",
|
||||||
|
"You will be the last person to buy a Chrysler.",
|
||||||
|
"If in doubt, mumble.",
|
||||||
|
"Nice guys don't finish nice.",
|
||||||
|
"You cannot use your friends and have them too.",
|
||||||
|
"Microsoft is to Software as McDonalds is to Cuisine.",
|
||||||
|
"panic: can't find /",
|
||||||
|
"I used to be an agnostic, but now I'm not so sure.",
|
||||||
|
"May your SO always know when you need a hug.",
|
||||||
|
"We are MicroSoft. You will be assimilated. Resistance is futile. (Attributed to B.G., Gill Bates)",
|
||||||
|
"Life is a whim of several billion cells to be you for a while.",
|
||||||
|
"BOFH Excuse #347: The rubber band broke",
|
||||||
|
"Death has been proven to be 99% fatal in laboratory rats.",
|
||||||
|
"There are only two kinds of tequila. Good and better.",
|
||||||
|
"C for yourself.",
|
||||||
|
"Tact, n.: The unsaid part of what you're thinking.",
|
||||||
|
"Shit Happens."
|
||||||
|
]
|
||||||
|
weechat.command(("Wanda the Fish says: %s") % random.choice(objects))
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
# winjoke
|
||||||
|
def winjoke(server, args):
|
||||||
|
objects = [
|
||||||
|
"Windows NT, from the people who invented EDLIN!",
|
||||||
|
"Windows: Microsoft's tax on computer illiterates.",
|
||||||
|
"The nice thing about Windows is - It does not just crash, it displays a dialog box and lets you press 'OK' first.",
|
||||||
|
"Why use Windows, since there is a door?",
|
||||||
|
"In a world without fences who needs Gates?",
|
||||||
|
"Another name for a Windows tutorial is crash course!",
|
||||||
|
"Failure is not an option -- it comes bundled with Windows.",
|
||||||
|
"NT... the last two letters of bowel movement",
|
||||||
|
"Some software money can't buy. For everything else there's Micros~1.",
|
||||||
|
"Sticks and Stones may break my bones but FUD will never concern me.",
|
||||||
|
"Every program expands until it can send mail. ...Except Exchange. ",
|
||||||
|
"Microsoft: 'You've got questions. We've got dancing paperclips.'",
|
||||||
|
".vbs = Virus Bearing Script?",
|
||||||
|
"Technology is positive when the creators put the interests of their users before their bottom line.",
|
||||||
|
"Have you ever noticed that at trade shows Microsoft is always the one giving away stress balls?",
|
||||||
|
"Do you remember when you only had to pay for windows when *you* broke them? (Submitted by Noel Maddy)",
|
||||||
|
"National Weather Service advice for those threatened by severe thunderstorms: 'Go inside a sturdy building and stay away from WINDOWS!' (Submitted by Ben Bullock)",
|
||||||
|
"Microsoft is to Software as McDonalds is to Cuisine.",
|
||||||
|
"Microsoft should switch to the vacuum cleaner business where people actually want products that suck. (Submitted by Bruno Bratti)",
|
||||||
|
"Everyone seems so impatient and angry these days. I think it's because so many people use Windows at work -- do you think you'd be Politeness Man after working on Windows 8 hrs. or more? (Submitted by Chip Atkinson)",
|
||||||
|
"NT 5.0 so vaporous it's in danger of being added to the periodic table as a noble gas. (Spotted in a Slashdot discussion)",
|
||||||
|
"My Beowulf cluster will beat your Windows NT network any day. (Submitted by wbogardt[at]gte.net)",
|
||||||
|
"It's no wonder they call it WinNT; WNT = VMS++; (Submitted by Chris Abbey)",
|
||||||
|
"Double your disk space - delete Windows! (Submitted by Albert Dorofeev)",
|
||||||
|
"The Edsel. New Coke. Windows 2000. All mandatory case studies for bizschool students in 2020. (From a LinuxToday post by Bear Giles)",
|
||||||
|
"I will never trust someone called GATES that sells WINDOWS. (Submitted by Federico Roman)",
|
||||||
|
"'Microsoft technology' -- isn't that an oxymoron?",
|
||||||
|
"MCSE == Mentally Challenged Slave of the Empire.",
|
||||||
|
"Windows NT -- it'll drive you buggy!",
|
||||||
|
"Where do you want to go today? Don't ask Microsoft for directions.",
|
||||||
|
"MS and Y2K: Windows 95, 98, ... and back again to 01",
|
||||||
|
"There's the light at the end of the the Windows.",
|
||||||
|
"People use dummies for crash-tests. Windows is so difficult they had to educate the dummies first -- by giving them 'Windows for Dummies' books!",
|
||||||
|
"Windows: The first user interface where you click Start to turn it off.",
|
||||||
|
"NT == No Thanks",
|
||||||
|
"With Windows Millennium, Microsoft was able to get the boot time down to 25 seconds. That's almost as short as it's uptime.",
|
||||||
|
"Windows 2000: Designed for the Internet. The Internet: Designed for UNIX.",
|
||||||
|
"MCSE = Minesweeper Consultant, Solitaire Expert",
|
||||||
|
"MCSE = Meaningless Certificate, Software Expired",
|
||||||
|
"I'm not a programmer, but I play one at Microsoft.",
|
||||||
|
"Microsoft Zen - Become one with the blue screen.",
|
||||||
|
"The next hot technology from Microsoft will be object-oriented assembly."
|
||||||
|
]
|
||||||
|
weechat.command(("Wanda the Fish says: %s") % random.choice(objects))
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
# linjoke
|
||||||
|
def linjoke(server, args):
|
||||||
|
objects = [
|
||||||
|
"Got Linux?",
|
||||||
|
"Microsoft gives you Windows... Linux gives you the whole house.",
|
||||||
|
"Linux, DOS, Windows NT -- The Good, the Bad, and the Ugly",
|
||||||
|
"Linux: the operating system with a CLUE... Command Line User Environment",
|
||||||
|
"If Bill Gates is the Devil then Linus Torvalds must be the Messiah.",
|
||||||
|
"Linux. Where do you want to go tomorrow?",
|
||||||
|
"Linux: The choice of a GNU generation",
|
||||||
|
"When you say I wrote a program that crashed Windows, people just stare at you blankly and say Hey, I got those with the system, *for free*. -- Linus Torvalds",
|
||||||
|
"We all know Linux is great...it does infinite loops in 5 seconds. -- Linus Torvalds",
|
||||||
|
"Some people have told me they dont think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. Theyd be a lot more careful about what they say if they had. -- Linus Torvalds",
|
||||||
|
"Veni, vidi, Linux!",
|
||||||
|
"Type cat vmlinuz > /dev/audio to hear the Voice of God.",
|
||||||
|
"Linux: Because a PC is a terrible thing to waste.",
|
||||||
|
"Linux: Because rebooting is for adding new hardware",
|
||||||
|
"We are Linux. Resistance is measured in Ohms.",
|
||||||
|
"Free Software: the Software by the People, of the People and for the People. Develop! Share! Enhance! and Enjoy! (Submitted by Andy Tai)",
|
||||||
|
"Get it up, keep it up... LINUX: Viagra for the PC. (Submitted by Chris Abbey)",
|
||||||
|
"Peace, Love and Compile the kernel.... (Submitted by Justin L. Herreman)",
|
||||||
|
"Free your software, and your ass will follow",
|
||||||
|
"Reset button? Which reset button? - Linux, the OS that never sleeps.",
|
||||||
|
"Linux: Where do you want to GO... Oh, Im already there!",
|
||||||
|
"Windows contains FAT. Use Linux -- you wont ever have to worry about your weight.",
|
||||||
|
"Oh My God! They Killed init! You Bastards!",
|
||||||
|
"Unix: Where /sbin/init is still Job 1."
|
||||||
|
]
|
||||||
|
weechat.command(("Wanda the Fish says: %s") % random.choice(objects))
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
# giver
|
||||||
|
def giver(server, args):
|
||||||
|
objects = [
|
||||||
|
"a binary four",
|
||||||
|
"a nice cup of SHUT THE FUCK UP",
|
||||||
|
"an asskick",
|
||||||
|
"a sign: 'Please kill yourself'",
|
||||||
|
"a sign: 'Please go home now'",
|
||||||
|
"an unlocked Grenade *tick tick BOOM*",
|
||||||
|
"a gun - do it for mankind!"
|
||||||
|
|
||||||
|
]
|
||||||
|
if args <> "":
|
||||||
|
weechat.command("/me gives %s %s." % (args, random.choice(objects)))
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
else:
|
||||||
|
weechat.prnt("You must specify target")
|
||||||
|
return weechat.PLUGIN_RC_KO
|
||||||
|
|
||||||
|
# hater
|
||||||
|
def hater(server, args):
|
||||||
|
objects = [
|
||||||
|
"so much, that he spits hellfire",
|
||||||
|
"so much, that he want's to shoot someone",
|
||||||
|
"SOOOO MUUUUCH!!!"
|
||||||
|
|
||||||
|
]
|
||||||
|
if args <> "":
|
||||||
|
weechat.command("/me hates %s %s." % (args, random.choice(objects)))
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
else:
|
||||||
|
weechat.prnt("You must specify target")
|
||||||
|
return weechat.PLUGIN_RC_KO
|
||||||
|
|
||||||
|
# lover
|
||||||
|
def lover(server, args):
|
||||||
|
actions = [
|
||||||
|
"a *mwah*",
|
||||||
|
"a wet kiss",
|
||||||
|
"a tight and long hug",
|
||||||
|
"an ass-squeeze",
|
||||||
|
"a tight hug",
|
||||||
|
"a wet kiss",
|
||||||
|
"a nice, tight hug",
|
||||||
|
"a kiss on the cheek",
|
||||||
|
"a wet, french kiss",
|
||||||
|
"a kiss",
|
||||||
|
"a hug",
|
||||||
|
"sex",
|
||||||
|
"sweet romance",
|
||||||
|
"some groping",
|
||||||
|
"bed actions",
|
||||||
|
"oral sex",
|
||||||
|
"a porn-tape",
|
||||||
|
"anal love",
|
||||||
|
]
|
||||||
|
if args <> "":
|
||||||
|
weechat.command("/me cheers %s with %s.." % (args, random.choice(actions)))
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
else:
|
||||||
|
weechat.prnt("You must specify target")
|
||||||
|
return weechat.PLUGIN_RC_KO
|
||||||
|
|
||||||
|
# dancer
|
||||||
|
def dancer(server, args):
|
||||||
|
objects = [
|
||||||
|
"used condoms",
|
||||||
|
"condoms",
|
||||||
|
"used tampons",
|
||||||
|
"tampons",
|
||||||
|
"roses",
|
||||||
|
"rosebuds",
|
||||||
|
"rice",
|
||||||
|
"uncooked rice",
|
||||||
|
"bananas",
|
||||||
|
"little pieces of paper with the text *YAY!* on",
|
||||||
|
"little pieces of paper with the text *w00t!* on",
|
||||||
|
"little pieces of paper with the text *WOOHOO!* on",
|
||||||
|
"little pieces of paper with the text *Kiss my cheek!* on",
|
||||||
|
"coconuts with faces on",
|
||||||
|
"little pieces of paper with the text *LOVE ROCKS!* on",
|
||||||
|
"little pieces of paper with the text *LETS HAVE SEX!* on",
|
||||||
|
"little pieces of paper with the text *GOD BLESS AMERICA!* on",
|
||||||
|
"balloons with faces on",
|
||||||
|
"balloons",
|
||||||
|
"chocolate cakes",
|
||||||
|
"english teachers",
|
||||||
|
"pr0n magazines",
|
||||||
|
"vietnamese kids",
|
||||||
|
"snowballs",
|
||||||
|
"rocks",
|
||||||
|
"Michael Jackson (naked)",
|
||||||
|
"unlocked Grenades *BOOM*",
|
||||||
|
"Nine Inch Nails",
|
||||||
|
"Bodyparts (bloody, wet & sexy)",
|
||||||
|
]
|
||||||
|
if args <> "":
|
||||||
|
weechat.command("/me dances around %s throwing %s.." % (args, random.choice(objects)))
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
else:
|
||||||
|
weechat.prnt("You must specify target")
|
||||||
|
return weechat.PLUGIN_RC_KO
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2006 by SpideR <spider312@free.fr> http://spiderou.net
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
# WeeChat clone scanner
|
||||||
|
# Scans clones on a chan when you ask it to do (/clones)
|
||||||
|
# Able to scan for a nick's clones on each join, if you ask it to do (/autoclones)
|
||||||
|
|
||||||
|
import weechat
|
||||||
|
|
||||||
|
SCRIPT_NAME="clonescan"
|
||||||
|
SCRIPT_VERSION="0.1"
|
||||||
|
SCRIPT_DESC="clonescan script for weechat"
|
||||||
|
SCRIPT_DISP=SCRIPT_NAME+" v"+SCRIPT_VERSION
|
||||||
|
|
||||||
|
# Register, Handlers, config check/creation
|
||||||
|
if weechat.register(SCRIPT_NAME, SCRIPT_VERSION, "unload", SCRIPT_DESC):
|
||||||
|
weechat.add_command_handler("clones","scanchan",
|
||||||
|
"Scans clones on specified or current chan",
|
||||||
|
"[#chan]")
|
||||||
|
weechat.add_command_handler("autoclones","toggleauto",
|
||||||
|
"Manage auto clone-scanning",
|
||||||
|
"[enable|disable|show]")
|
||||||
|
weechat.add_message_handler ("join", "scanjoin")
|
||||||
|
autoscan = weechat.get_plugin_config("autoscan")
|
||||||
|
if ( ( autoscan != "true" ) and ( autoscan != "false" ) ):
|
||||||
|
weechat.set_plugin_config("autoscan","false")
|
||||||
|
weechat.prnt("Unconfigured autoscan set to 'disabled', to enable : /autoclones enable")
|
||||||
|
weechat.prnt(SCRIPT_DISP+" loaded")
|
||||||
|
else:
|
||||||
|
weechat.prnt(SCRIPT_DISP+" not loaded")
|
||||||
|
|
||||||
|
# Unload handler
|
||||||
|
def unload():
|
||||||
|
weechat.prnt("starting "+SCRIPT_DISP+" unload ...")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
# Auto scan on JOIN
|
||||||
|
def scanjoin(server,args):
|
||||||
|
result = weechat.PLUGIN_RC_OK
|
||||||
|
if ( weechat.get_plugin_config("autoscan") == "true" ):
|
||||||
|
try: # Cut args because it contains nick, host and chan
|
||||||
|
nothing, user, chan = args.split(":") # :Mag!Magali@RS2I-35243B84.ipt.aol.com JOIN :#bringue
|
||||||
|
nick, next = user.split("!") # Mag!Magali@RS2I-35243B84.ipt.aol.com JOIN
|
||||||
|
userathost, nothing = next.split(" JOIN ") # Magali@RS2I-35243B84.ipt.aol.com JOIN
|
||||||
|
host = removeuser(userathost) # Magali@RS2I-35243B84.ipt.aol.com
|
||||||
|
# Problems with IPv6 hosts' ":" :
|
||||||
|
# [:higuita!n=higuita@2001:b18:400f:0:211:d8ff:fe82:b10e JOIN :#weechat]
|
||||||
|
except ValueError:
|
||||||
|
result = weechat.PLUGIN_RC_KO
|
||||||
|
weechat.prnt("Eror parsing args : ["+args+"]",server,server)
|
||||||
|
else:
|
||||||
|
clones = scannick(server,chan,nick,host) # Scan for that user's clones
|
||||||
|
if ( len(clones) > 0):
|
||||||
|
disp = "Clone sur "+chan+"@"+server+" : "+dispclones(nick,clones,host)
|
||||||
|
weechat.print_infobar(5,disp) # Display on infobar
|
||||||
|
weechat.prnt(disp) # Display on current buffer
|
||||||
|
weechat.prnt(disp,server,server) # Display on server buffer
|
||||||
|
return result
|
||||||
|
|
||||||
|
# Config auto scan
|
||||||
|
def toggleauto(server,args):
|
||||||
|
# Get current value
|
||||||
|
autoscan = weechat.get_plugin_config("autoscan")
|
||||||
|
# Testing / repairing
|
||||||
|
if ( autoscan == "true" ):
|
||||||
|
auto = True
|
||||||
|
elif ( autoscan == "false" ):
|
||||||
|
auto = False
|
||||||
|
else:
|
||||||
|
weechat.prnt("Unknown value ["+autoscan+"], disabling")
|
||||||
|
weechat.set_plugin_config("autoscan","false")
|
||||||
|
auto = False
|
||||||
|
# managing arg
|
||||||
|
if ( args == "enable" ):
|
||||||
|
if auto:
|
||||||
|
weechat.prnt("Auto clone scanning remain enabled")
|
||||||
|
else:
|
||||||
|
weechat.set_plugin_config("autoscan","true")
|
||||||
|
weechat.prnt("Auto clone scanning is now enabled")
|
||||||
|
elif ( args == "disable" ):
|
||||||
|
if auto:
|
||||||
|
weechat.set_plugin_config("autoscan","false")
|
||||||
|
weechat.prnt("Auto clone scanning is now disabled")
|
||||||
|
else:
|
||||||
|
weechat.prnt("Auto clone scanning remain disabled")
|
||||||
|
elif ( args == "break" ):
|
||||||
|
weechat.set_plugin_config("autoscan","blah")
|
||||||
|
else:
|
||||||
|
if auto:
|
||||||
|
weechat.prnt("Auto clone scanning enabled")
|
||||||
|
else:
|
||||||
|
weechat.prnt("Auto clone scanning disabled")
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
# Manual channel scan
|
||||||
|
def scanchan(server,args):
|
||||||
|
# Defining chan to scan (contained in args, current chan otherwise)
|
||||||
|
if ( args == "" ):
|
||||||
|
chan = weechat.get_info("channel",server)
|
||||||
|
else:
|
||||||
|
chan = args
|
||||||
|
# Scan
|
||||||
|
if ( chan != "" ):
|
||||||
|
nicks = weechat.get_nick_info(server,chan)
|
||||||
|
allclones = [] # List containing all detected clones, for not to re-scan them
|
||||||
|
nbclones = 0 # number of clones
|
||||||
|
if nicks != None:
|
||||||
|
if nicks != {}:
|
||||||
|
weechat.prnt("Scanning "+chan+" ...")
|
||||||
|
for nick in nicks:
|
||||||
|
if nick not in allclones:
|
||||||
|
host = removeuser(nicks[nick]["host"])
|
||||||
|
clones = scannick(server,chan,nick,host)
|
||||||
|
if ( len(clones) > 0 ):
|
||||||
|
allclones = allclones + clones
|
||||||
|
nbclones = nbclones+1
|
||||||
|
weechat.prnt(" - "+dispclones(nick,clones,host))
|
||||||
|
weechat.prnt(str(nbclones)+" clones found")
|
||||||
|
else:
|
||||||
|
weechat.prnt("Nobody on "+chan+", are you sure it's a chan and you are present on it ?")
|
||||||
|
else:
|
||||||
|
weechat.prnt("Eror reading nick list")
|
||||||
|
else:
|
||||||
|
weechat.prnt("Not on a chan")
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
# Scan of a nick
|
||||||
|
# Returns list of nick clones (not containing nick himself)
|
||||||
|
def scannick(server,chan,nick,host):
|
||||||
|
cloneof = []
|
||||||
|
compares = weechat.get_nick_info(server,chan)
|
||||||
|
if compares != None:
|
||||||
|
if compares != {}:
|
||||||
|
for compare in compares:
|
||||||
|
if ( ( nick != compare ) and ( host == removeuser(compares[compare]["host"])) ):
|
||||||
|
cloneof.append(compare)
|
||||||
|
else:
|
||||||
|
weechat.prnt("pas de pseudo")
|
||||||
|
|
||||||
|
else:
|
||||||
|
weechat.prnt("erreur de lecture des pseudos")
|
||||||
|
return cloneof
|
||||||
|
|
||||||
|
# Display of one clone line
|
||||||
|
def dispclones(nick,clones,host):
|
||||||
|
clones.append(nick)
|
||||||
|
clones.sort()
|
||||||
|
return str(clones)+" ("+host+")"
|
||||||
|
|
||||||
|
# Return host by user@host
|
||||||
|
def removeuser(userathost):
|
||||||
|
splitted = userathost.split("@")
|
||||||
|
return splitted[1]
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
"""
|
||||||
|
:Author: Henning Hasemann <hhasemann [at] web [dot] de>
|
||||||
|
:Updated: Daga <daga [at] daga [dot] dyndns [dot] org>
|
||||||
|
|
||||||
|
:What it does:
|
||||||
|
With this script you can configure weechat
|
||||||
|
to give custom responses to CTCP-Requests.
|
||||||
|
|
||||||
|
:Usage:
|
||||||
|
Load this file somehow.
|
||||||
|
You can configure replies to CTCP-requests
|
||||||
|
with the /set_ctcp - command. (examples below)
|
||||||
|
|
||||||
|
Released under GPL license.
|
||||||
|
|
||||||
|
Hope you enjoy it :-)
|
||||||
|
-- Henning aka asmanian
|
||||||
|
"""
|
||||||
|
|
||||||
|
version = "0.8"
|
||||||
|
history = """
|
||||||
|
0.1 initial
|
||||||
|
0.2
|
||||||
|
- now displays a "CTCP FOOBAR received from ..."
|
||||||
|
0.3
|
||||||
|
- now /help set_ctcp is available
|
||||||
|
0.4
|
||||||
|
- corrected a few typos
|
||||||
|
- made special variables (e.g. version) easier to use
|
||||||
|
0.5
|
||||||
|
- removed debugging messages
|
||||||
|
0.6
|
||||||
|
- bugfix (sometimes /set_ctcp did not work)
|
||||||
|
0.7 (Daga)
|
||||||
|
- added multi-server support
|
||||||
|
0.8
|
||||||
|
- fixed on_msg (occasionally caused a minor fault)
|
||||||
|
"""
|
||||||
|
|
||||||
|
short_syntax = """[REQUEST ANSWER]"""
|
||||||
|
|
||||||
|
syntax = """ Examples:
|
||||||
|
|
||||||
|
/set_ctcp
|
||||||
|
show settings for common CTCP-Requests.
|
||||||
|
where "OFF" means "use weechat default behaviour.
|
||||||
|
|
||||||
|
/set_ctcp VERSION I prefer using weechat $version
|
||||||
|
Reply with a fancy message.
|
||||||
|
$version is substituted with weechats version.
|
||||||
|
Other variables are: $away, $nick and $server.
|
||||||
|
(If you find something else that could make sense
|
||||||
|
here, let me know!)
|
||||||
|
|
||||||
|
/set_ctcp HOW_ARE_YOU Good.
|
||||||
|
Set answer to a rather unusual CTCP-request.
|
||||||
|
|
||||||
|
/set_ctcp VERSION OFF
|
||||||
|
Disable special behavior when CTCP VERSION comes in.
|
||||||
|
atm this leaves an entry in plugins.rc which
|
||||||
|
can be safely removed.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import weechat as wc
|
||||||
|
import re
|
||||||
|
|
||||||
|
wc.register("ctcp", version, "", "Customize CTCP replies")
|
||||||
|
wc.add_command_handler("set_ctcp", "set", "", short_syntax, syntax)
|
||||||
|
wc.add_message_handler("privmsg", "on_msg")
|
||||||
|
|
||||||
|
if not wc.get_plugin_config("requests"):
|
||||||
|
wc.set_plugin_config("requests", " ".join(["VERSION", "USERINFO", "FINGER", "TIME", "PING"]))
|
||||||
|
|
||||||
|
def get_answers():
|
||||||
|
# Strangely, get_plugin_config sometimes returns
|
||||||
|
# the integer 0
|
||||||
|
requests = wc.get_plugin_config("requests")
|
||||||
|
if requests:
|
||||||
|
requests = requests.split()
|
||||||
|
else:
|
||||||
|
requests = ["VERSION", "USERINFO", "FINGER", "TIME", "PING"]
|
||||||
|
|
||||||
|
d = {}
|
||||||
|
for r in requests:
|
||||||
|
d[r] = wc.get_plugin_config("CTCP_" + r)
|
||||||
|
return d
|
||||||
|
|
||||||
|
def set_answer(k, v):
|
||||||
|
wc.set_plugin_config("CTCP_" + k, v)
|
||||||
|
requests = wc.get_plugin_config("requests").split()
|
||||||
|
if k.upper() not in requests:
|
||||||
|
requests.append(k.upper())
|
||||||
|
wc.set_plugin_config("requests", " ".join(requests))
|
||||||
|
|
||||||
|
def show_syntax():
|
||||||
|
wc.prnt("usage: /set_ctcp %s" % short_syntax)
|
||||||
|
wc.prnt("(For more information type /help set_ctcp)")
|
||||||
|
|
||||||
|
def on_msg(server, args):
|
||||||
|
nothing, info, message = args.split(":", 2)
|
||||||
|
hostmask = info.split(None, 2)[0]
|
||||||
|
source = hostmask.split("!")[0]
|
||||||
|
|
||||||
|
answers = get_answers()
|
||||||
|
|
||||||
|
try:
|
||||||
|
if message.startswith("\x01") and message.endswith("\x01"):
|
||||||
|
req = message[1:-1]
|
||||||
|
ans = answers[req]
|
||||||
|
if not ans or ans == "OFF":
|
||||||
|
raise ValueError
|
||||||
|
|
||||||
|
info = {
|
||||||
|
"version": wc.get_info("version"),
|
||||||
|
"nick": wc.get_info("nick"),
|
||||||
|
"away": wc.get_info("away") and "away" or "there",
|
||||||
|
"server": server,
|
||||||
|
}
|
||||||
|
|
||||||
|
while True:
|
||||||
|
match = re.search(r'[^\\]\$([a-z]+)\b', ans) #, r'--\1--', ans)
|
||||||
|
if match is None: break
|
||||||
|
else:
|
||||||
|
l, r = match.span()
|
||||||
|
ans = ans[:l+1] + info.get(match.group(1), "$" + match.group(1)) + ans[r:]
|
||||||
|
|
||||||
|
wc.prnt("CTCP %s received from %s (on %s)" % (req, source, server))
|
||||||
|
wc.command("/quote NOTICE %s :\x01%s %s\x01" % (
|
||||||
|
source, req, ans), "", server)
|
||||||
|
return wc.PLUGIN_RC_OK_IGNORE_ALL
|
||||||
|
|
||||||
|
except Exception, e:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return wc.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
def set(server, args):
|
||||||
|
try:
|
||||||
|
argv = args.split(None, 1)
|
||||||
|
answers = get_answers()
|
||||||
|
|
||||||
|
if not len(argv):
|
||||||
|
for k, v in answers.items():
|
||||||
|
wc.prnt("%10s: %s" % (k, v or "OFF"))
|
||||||
|
|
||||||
|
elif len(argv) == 2:
|
||||||
|
set_answer(argv[0], argv[1])
|
||||||
|
|
||||||
|
else:
|
||||||
|
show_syntax()
|
||||||
|
except Exception, e:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return wc.PLUGIN_RC_OK
|
||||||
|
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
# -*- coding: iso-8859-15 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
:Author: Henning Hasemann <hhasemann [at] web [dot] de>
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
- Load this plugin
|
||||||
|
- In a channel or query type "/flip foo something" to
|
||||||
|
send the reversed text "gnihtemos oof"
|
||||||
|
- In a channel or query type "/leet something else" to
|
||||||
|
send the h4x02-5r!pT - Version of your text.
|
||||||
|
(Please use with caution such crap is discouraged in most channels)
|
||||||
|
|
||||||
|
Released under GPL licence.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__version__ = "0.1"
|
||||||
|
__history__ = """
|
||||||
|
0.1 initial
|
||||||
|
"""
|
||||||
|
|
||||||
|
short_syntax = """TEXT"""
|
||||||
|
syntax_flip = """ Example:
|
||||||
|
|
||||||
|
/flip foo bar
|
||||||
|
sends "rab oof" to the channel
|
||||||
|
"""
|
||||||
|
syntax_leet = """ Example:
|
||||||
|
|
||||||
|
/leet eleet
|
||||||
|
sends "31337" (or similar) to the channel
|
||||||
|
"""
|
||||||
|
|
||||||
|
import weechat as wc
|
||||||
|
import string, random
|
||||||
|
|
||||||
|
wc.register("gimmicks", __version__, "", "string gimmicks")
|
||||||
|
wc.add_command_handler("flip", "flip", "", short_syntax, syntax_flip)
|
||||||
|
wc.add_command_handler("leet", "leet", "", short_syntax, syntax_leet)
|
||||||
|
|
||||||
|
leet_dict = {
|
||||||
|
"e": ["3"],
|
||||||
|
"l": ["1", "!", "|"],
|
||||||
|
"r": ["|2"],
|
||||||
|
"b": ["8"],
|
||||||
|
"v": [r'\/'],
|
||||||
|
"t": ["7"],
|
||||||
|
"i": ["!"],
|
||||||
|
"w": [r'\/\/', 'vv'],
|
||||||
|
"a": ["/\\", "<|", "4"],
|
||||||
|
"k": ["x"],
|
||||||
|
"n": [r'|\|'],
|
||||||
|
"s": ["5","$"],
|
||||||
|
"q": ["O."],
|
||||||
|
"z": ["zZz", "7_"],
|
||||||
|
"u": ["(_)"],
|
||||||
|
"p": ["|°", "|*"],
|
||||||
|
"d": ["|)", "I>", "ol"],
|
||||||
|
"f": ["i="],
|
||||||
|
"g": ["@"],
|
||||||
|
"h": ["|-|"],
|
||||||
|
"j": ["_I"],
|
||||||
|
"y": ["`/"],
|
||||||
|
"x": ["><"],
|
||||||
|
"c": ["[", "(", "{"],
|
||||||
|
"m": ["|v|", "nn"],
|
||||||
|
"o": ["0", "()"],
|
||||||
|
}
|
||||||
|
|
||||||
|
def leet(server, args):
|
||||||
|
casechange = True
|
||||||
|
strange = True
|
||||||
|
stay = False
|
||||||
|
|
||||||
|
r = ""
|
||||||
|
luflag = 0
|
||||||
|
for x in list(args):
|
||||||
|
if stay:
|
||||||
|
alt = [x]
|
||||||
|
else:
|
||||||
|
alt = []
|
||||||
|
if casechange:
|
||||||
|
alt.append(luflag and x.lower() or x.upper())
|
||||||
|
luflag = not luflag
|
||||||
|
if strange:
|
||||||
|
alt += leet_dict.get(x.lower(), [])
|
||||||
|
r += random.choice(alt)
|
||||||
|
wc.command(r)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def flip(server, args):
|
||||||
|
l = list(args)
|
||||||
|
l.reverse()
|
||||||
|
wc.command("".join(l))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,204 @@
|
|||||||
|
# -*- encoding: iso-8859-1 -*-
|
||||||
|
#
|
||||||
|
# Copyright (c) 2006 by EgS <i@egs.name>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# #
|
||||||
|
# This script enables the user to keep their nicks and recover it in #
|
||||||
|
# case it get's stolen. It uses the servers prefered nicks, so there #
|
||||||
|
# is no need for any kind of setup. #
|
||||||
|
# #
|
||||||
|
# Name: Keepnick #
|
||||||
|
# Licence: GPL v2 #
|
||||||
|
# Author: Marcus Eggenberger <i@egs.name> #
|
||||||
|
# #
|
||||||
|
# Usage: #
|
||||||
|
# /keepnick on|off|<positive number> #
|
||||||
|
# #
|
||||||
|
# use /help command for detailed information #
|
||||||
|
# #
|
||||||
|
# Changelog: #
|
||||||
|
# 0.4: now starts on load and features user defined check intervals #
|
||||||
|
# 0.3: Fixed major bug with continuous nickchanges #
|
||||||
|
# 0.2: Fixed Bug: now only checks connected servers #
|
||||||
|
# 0.1: first version released #
|
||||||
|
# #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Imports
|
||||||
|
# ====================
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Constants
|
||||||
|
# ====================
|
||||||
|
NAME = 'Keepnick'
|
||||||
|
VERSION = '0.4'
|
||||||
|
DESCRIPTION = "Plugin to keep your nick and recover it in case it's stolen"
|
||||||
|
|
||||||
|
ISON = '/ison %s'
|
||||||
|
NICK = '/nick %s'
|
||||||
|
|
||||||
|
NICKSTEALER_LEFT = "Nickstealer left Network: %s!"
|
||||||
|
KEEPNICK_ARG_ERROR = "\"%s\" is not a valid argument to /keepnick"
|
||||||
|
KEEPNICK_ON = "Keepnick locked and loaded! (checking every %s seconds)"
|
||||||
|
KEEPNICK_OFF = "Keepnick offline!"
|
||||||
|
|
||||||
|
DELAY = 10
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Exceptions
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Helpers
|
||||||
|
# ====================
|
||||||
|
class WeePrint(object):
|
||||||
|
def write(self, text):
|
||||||
|
text = text.rstrip(' \0\n') # strip the null byte appended by pythons print
|
||||||
|
if text:
|
||||||
|
weechat.prnt(text,'')
|
||||||
|
|
||||||
|
def registerFunction(function):
|
||||||
|
# Register a python function as a commandhandler
|
||||||
|
# Function needs to be named like weeFunction and
|
||||||
|
# is bound to /function
|
||||||
|
# docstring is used for weechat help
|
||||||
|
functionname = function.__name__ # guess what :)
|
||||||
|
weecommand = functionname[3:].lower() # strip the wee
|
||||||
|
|
||||||
|
doc = function.__doc__.splitlines()
|
||||||
|
arguments = doc[0] # First docstring line is the arguments string
|
||||||
|
description = doc[1][4:]
|
||||||
|
args_description = '\n'.join([line[4:] for line in doc[2:-1]]) # join rest and strip indentation
|
||||||
|
|
||||||
|
if not function.func_defaults: # use args default value as template
|
||||||
|
template = ''
|
||||||
|
elif len(function.func_defaults) == 1:
|
||||||
|
template = function.func_defaults[0]
|
||||||
|
elif len(function.func_defaults) == 2:
|
||||||
|
template = func.func_defaults[1]
|
||||||
|
|
||||||
|
weechat.add_command_handler(weecommand, functionname, description, arguments, args_description, template)
|
||||||
|
|
||||||
|
def registerFunctions():
|
||||||
|
functions = [function for name, function in globals().iteritems() if name.startswith('wee') and callable(function)]
|
||||||
|
for func in functions:
|
||||||
|
registerFunction(func)
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Functions
|
||||||
|
# ====================
|
||||||
|
def servernicks(servername):
|
||||||
|
server = weechat.get_server_info()[servername]
|
||||||
|
servernicks = [server['nick1'], server['nick2'], server['nick3']]
|
||||||
|
return servernicks
|
||||||
|
|
||||||
|
def ison(server, nicklist):
|
||||||
|
weechat.command(ISON % ' '.join(nicklist), "", server)
|
||||||
|
|
||||||
|
def gotnick(server):
|
||||||
|
server = weechat.get_server_info()[server]
|
||||||
|
return server['nick'].lower() == server['nick1'].lower()
|
||||||
|
|
||||||
|
def checknicks():
|
||||||
|
for servername, server in weechat.get_server_info().iteritems():
|
||||||
|
if not gotnick(servername) and server['ssl_connected'] + server['is_connected']:
|
||||||
|
ison(servername, servernicks(servername))
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
def grabnick(server, nick):
|
||||||
|
if not gotnick(server):
|
||||||
|
print NICKSTEALER_LEFT % server
|
||||||
|
weechat.command(NICK % nick, '', server)
|
||||||
|
|
||||||
|
def isonhandler(server, args):
|
||||||
|
nothing, message, nicks = args.split(':')
|
||||||
|
nicks = [nick.lower() for nick in nicks.split()]
|
||||||
|
for nick in servernicks(server):
|
||||||
|
if nick.lower() == weechat.get_info("nick",server):
|
||||||
|
return weechat.PLUGIN_RC_OK_IGNORE_ALL
|
||||||
|
elif nick.lower() not in nicks:
|
||||||
|
grabnick(server, nick)
|
||||||
|
return weechat.PLUGIN_RC_OK_IGNORE_ALL
|
||||||
|
|
||||||
|
if 0 in [nick.lower() in [mynick.lower() for mynick in servernicks(server)] for nick in nicks]:
|
||||||
|
# if any nick wich is return by ison is not on our checklist we're not the caller
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
else:
|
||||||
|
# seems like we're the caller -> ignore the output
|
||||||
|
return weechat.PLUGIN_RC_OK_IGNORE_ALL
|
||||||
|
|
||||||
|
def weeKeepnick(server, args="ON|OFF"):
|
||||||
|
"""ON|OFF|<positive number>
|
||||||
|
Enables or Disables the use of keepnick.
|
||||||
|
When active Keepnick ensures that you keep your preferred nicks.
|
||||||
|
Keepnick checks for the preferred nicks of each server config,
|
||||||
|
so there is no need to configure anything. Using a number as the
|
||||||
|
argument it sets the checkperiod to that number in seconds.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
/keepnick ON
|
||||||
|
"""
|
||||||
|
VALIDARGS = ['ON','OFF']
|
||||||
|
|
||||||
|
weechat.remove_handler('303', "isonhandler")
|
||||||
|
weechat.remove_timer_handler("checknicks")
|
||||||
|
|
||||||
|
try:
|
||||||
|
delay = int(args)
|
||||||
|
if delay < 1:
|
||||||
|
raise ValueError
|
||||||
|
globals()['DELAY'] = delay
|
||||||
|
except ValueError:
|
||||||
|
if args.upper() not in VALIDARGS:
|
||||||
|
print KEEPNICK_ARG_ERROR % args
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
if args.upper() != 'OFF':
|
||||||
|
weechat.add_timer_handler(DELAY,"checknicks")
|
||||||
|
weechat.add_message_handler('303', "isonhandler")
|
||||||
|
print KEEPNICK_ON % DELAY
|
||||||
|
else:
|
||||||
|
print KEEPNICK_OFF
|
||||||
|
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Let's Register!
|
||||||
|
# ====================
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
import weechat
|
||||||
|
except ImportError:
|
||||||
|
print "This script is to be loaded as PythonScript in WeeChat"
|
||||||
|
print "Get WeeChat now at: http://weechat.flashtux.org/"
|
||||||
|
import sys
|
||||||
|
sys.exit(10)
|
||||||
|
|
||||||
|
# kick pythons print to weechat.prnt(msg, '')
|
||||||
|
sys.stdout = WeePrint()
|
||||||
|
weechat.register(NAME, VERSION, "", DESCRIPTION)
|
||||||
|
registerFunctions()
|
||||||
|
weeKeepnick('','ON')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
"""
|
||||||
|
:Author: Henning Hasemann <hhasemann [at] web [dot] de>
|
||||||
|
|
||||||
|
:What it does:
|
||||||
|
This plugin lets you inform all users in the current
|
||||||
|
channel about the song which music-player-daemon (MPD)
|
||||||
|
is currently playing.
|
||||||
|
|
||||||
|
:Usage:
|
||||||
|
/mpdnp - Display file mpd is playing to current channel.
|
||||||
|
|
||||||
|
:Configuration Variables:
|
||||||
|
============= ==========================================
|
||||||
|
Variable name Meaning
|
||||||
|
============= ==========================================
|
||||||
|
host The host where your mpd runs
|
||||||
|
port The port to connect to mpd (usually 6600)
|
||||||
|
format How this script should display
|
||||||
|
whats going on.
|
||||||
|
You may use the following variables here:
|
||||||
|
$artist, $title_or_file,
|
||||||
|
$length_min, $length_sec, $pct,
|
||||||
|
$pos_min, $pos_sec
|
||||||
|
|
||||||
|
Released under GPL licence.
|
||||||
|
"""
|
||||||
|
|
||||||
|
todo = """
|
||||||
|
- maybe support sending commands to mpd.
|
||||||
|
- maybe make condional display
|
||||||
|
(displaying some characters only
|
||||||
|
if preceding or trailing variables are set)
|
||||||
|
"""
|
||||||
|
|
||||||
|
import weechat as wc
|
||||||
|
import mpdclient as mpd
|
||||||
|
import re
|
||||||
|
from os.path import basename, splitext
|
||||||
|
|
||||||
|
default_fmt = "/me 's MPD plays: $artist - $title_or_file ($length_min:$length_sec)"
|
||||||
|
|
||||||
|
wc.register("mpdnp", "0.3", "", "np for mpd")
|
||||||
|
|
||||||
|
def subst(text, values):
|
||||||
|
out = ""
|
||||||
|
n = 0
|
||||||
|
for match in re.finditer(findvar, text):
|
||||||
|
if match is None: continue
|
||||||
|
else:
|
||||||
|
l, r = match.span()
|
||||||
|
nam = match.group(1)
|
||||||
|
out += text[n:l+1] + values.get(nam, "") #"$" + nam)
|
||||||
|
n = r
|
||||||
|
return out + text[n:]
|
||||||
|
|
||||||
|
def np(server, args):
|
||||||
|
"""
|
||||||
|
Send information about the currently
|
||||||
|
played song to the channel.
|
||||||
|
"""
|
||||||
|
host = wc.get_plugin_config("host")
|
||||||
|
port = int(wc.get_plugin_config("port"))
|
||||||
|
cont = mpd.MpdController(host=host, port=port)
|
||||||
|
song = cont.getCurrentSong()
|
||||||
|
pos, length, pct = cont.getSongPosition()
|
||||||
|
|
||||||
|
# insert artist, title, album, track, path
|
||||||
|
d = song.__dict__
|
||||||
|
d.update({
|
||||||
|
"title_or_file": song.title or splitext(basename(song.path))[0],
|
||||||
|
"pos_sec": "%02d" % (pos / 60),
|
||||||
|
"pos_min": str(pos / 60),
|
||||||
|
"length_sec": "%02d" % (length % 60),
|
||||||
|
"length_min": str(length / 60),
|
||||||
|
"pct": "%2.0f" % pct,
|
||||||
|
})
|
||||||
|
|
||||||
|
wc.command(subst(wc.get_plugin_config("format"), d))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def dbgnp(server, args):
|
||||||
|
try:
|
||||||
|
return np(server, args)
|
||||||
|
except Exception, e:
|
||||||
|
print e
|
||||||
|
|
||||||
|
wc.add_command_handler("mpdnp", "np", "", "", np.__doc__)
|
||||||
|
|
||||||
|
findvar = re.compile(r'[^\\]\$([a-z_]+)(\b|[^a-z_])')
|
||||||
|
|
||||||
|
default = {
|
||||||
|
"host": "localhost",
|
||||||
|
"port": "6600",
|
||||||
|
"format": default_fmt,
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v in default.items():
|
||||||
|
if not wc.get_plugin_config(k):
|
||||||
|
wc.set_plugin_config(k, v)
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,445 @@
|
|||||||
|
# -*- encoding: iso-8859-1 -*-
|
||||||
|
#
|
||||||
|
# Copyright (c) 2006 by EgS <i@egs.name>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# #
|
||||||
|
# This script enables the execution of events triggered commands #
|
||||||
|
# where the events are attach or detach of the screen weechat #
|
||||||
|
# is running in. #
|
||||||
|
# #
|
||||||
|
# Name: OnAttach #
|
||||||
|
# Licence: GPL v2 #
|
||||||
|
# Author: Marcus Eggenberger <i@egs.name> #
|
||||||
|
# #
|
||||||
|
# Usage: #
|
||||||
|
# /onattach or /ondetach to add new events #
|
||||||
|
# /screenevents to manage events #
|
||||||
|
# #
|
||||||
|
# use /help command for detailed information #
|
||||||
|
# #
|
||||||
|
# Changelog: #
|
||||||
|
# 0.5: added screen guessing to backup screen-detection #
|
||||||
|
# 0.4: fixed TypeError in weechat 0.1.9 #
|
||||||
|
# 0.3: now checking on startup if weechat runs in a screen #
|
||||||
|
# 0.2: added usage of get/set_plugin_config to store eventlist #
|
||||||
|
# 0.1: first version released #
|
||||||
|
# #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Imports
|
||||||
|
# ====================
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Constants
|
||||||
|
# ====================
|
||||||
|
NAME = 'OnAttach'
|
||||||
|
VERSION = '0.5'
|
||||||
|
DESCRIPTION = "Executing commands on screen Attach/Detach"
|
||||||
|
|
||||||
|
OFF = False
|
||||||
|
ON = True
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Exceptions
|
||||||
|
# ====================
|
||||||
|
class OnAttachError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Helpers
|
||||||
|
# ====================
|
||||||
|
class WeePrint(object):
|
||||||
|
def write(self, text):
|
||||||
|
text = text.rstrip(' \0\n') # strip the null byte appended by pythons print
|
||||||
|
if text:
|
||||||
|
weechat.prnt(text,'')
|
||||||
|
|
||||||
|
def getScreenByPpid():
|
||||||
|
# the screen we are in should be our parents parent
|
||||||
|
# aka something like:
|
||||||
|
# SCREEN
|
||||||
|
# \_ -/bin/bash
|
||||||
|
# \_ weechat-curses
|
||||||
|
ppid = os.getppid()
|
||||||
|
|
||||||
|
# get SCREEN pid
|
||||||
|
pipe = os.popen("ps o ppid= -p %d" % ppid)
|
||||||
|
screenpid = pipe.read().strip()
|
||||||
|
pipe.close()
|
||||||
|
|
||||||
|
# check if screen pid really belongs to a screen
|
||||||
|
pipe = os.popen("ps o cmd= -p %s" % screenpid)
|
||||||
|
cmd = pipe.read().strip()
|
||||||
|
pipe.close()
|
||||||
|
|
||||||
|
if 'screen' not in cmd.lower():
|
||||||
|
raise OnAttachError
|
||||||
|
else:
|
||||||
|
return screenpid
|
||||||
|
|
||||||
|
def getScreenByList():
|
||||||
|
# checks if there is only one attached screen
|
||||||
|
# if so use: it! ;)
|
||||||
|
pipe = os.popen("screen -list | grep -i attached")
|
||||||
|
screens = pipe.read().strip()
|
||||||
|
pipe.close()
|
||||||
|
screens = screens.splitlines()
|
||||||
|
|
||||||
|
if len(screens) > 1:
|
||||||
|
print "There are more then one screen currently attached."
|
||||||
|
print "Detach all other running screens and reload OnAttach"
|
||||||
|
print "to ensure correct screen detection."
|
||||||
|
raise OnAttachError
|
||||||
|
|
||||||
|
try:
|
||||||
|
socket, status = screens[0].split()
|
||||||
|
except:
|
||||||
|
# thats no common screen list...
|
||||||
|
print "failed!"
|
||||||
|
raise OnAttachError
|
||||||
|
else:
|
||||||
|
print "Using screen %s" % socket
|
||||||
|
return socket
|
||||||
|
|
||||||
|
def getScreenPid():
|
||||||
|
try:
|
||||||
|
return getScreenByPpid()
|
||||||
|
except OnAttachError:
|
||||||
|
print "!!! Unable to determine screen by parentid!"
|
||||||
|
print "Trying to guess screen..."
|
||||||
|
return getScreenByList()
|
||||||
|
|
||||||
|
def registerFunction(function):
|
||||||
|
# Register a python function as a commandhandler
|
||||||
|
# Function needs to be named like weeFunction and
|
||||||
|
# is bound to /function
|
||||||
|
# docstring is used for weechat help
|
||||||
|
functionname = function.__name__ # guess what :)
|
||||||
|
weecommand = functionname[3:].lower() # strip the wee
|
||||||
|
|
||||||
|
doc = function.__doc__.splitlines()
|
||||||
|
arguments = doc[0] # First docstring line is the arguments string
|
||||||
|
description = doc[1][4:]
|
||||||
|
args_description = '\n'.join([line[4:] for line in doc[2:-1]]) # join rest and strip indentation
|
||||||
|
|
||||||
|
if not function.func_defaults: # use args default value as template
|
||||||
|
template = ''
|
||||||
|
elif len(function.func_defaults) == 1:
|
||||||
|
template = function.func_defaults[0]
|
||||||
|
elif len(function.func_defaults) == 2:
|
||||||
|
template = func.func_defaults[1]
|
||||||
|
|
||||||
|
weechat.add_command_handler(weecommand, functionname, description, arguments, args_description, template)
|
||||||
|
|
||||||
|
def registerFunctions():
|
||||||
|
functions = [function for name, function in globals().iteritems() if name.startswith('wee') and callable(function)]
|
||||||
|
for func in functions:
|
||||||
|
registerFunction(func)
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Classes
|
||||||
|
# ====================
|
||||||
|
class Event(object):
|
||||||
|
ESCAPECHAR = '\\'
|
||||||
|
SEPARATOR = ';'
|
||||||
|
|
||||||
|
def __init__(self, delay, step, channel, server, command, activehigh=True):
|
||||||
|
self.delay = int(delay)
|
||||||
|
self.step = step
|
||||||
|
self.channel = channel
|
||||||
|
self.server = server
|
||||||
|
self.command = command
|
||||||
|
self.activestate = activehigh
|
||||||
|
self.reset()
|
||||||
|
|
||||||
|
#@classmethod
|
||||||
|
def unserialize(cls, step, serial):
|
||||||
|
try:
|
||||||
|
# let's try the easy way :)
|
||||||
|
delay, channel, server, command, activestate = serial.split()
|
||||||
|
except ValueError:
|
||||||
|
# ok we got an escaped separator... :/
|
||||||
|
data = serial.split(cls.SEPARATOR)
|
||||||
|
for i in range(len(data)):
|
||||||
|
if data[i].endswith(cls.ESCAPECHAR):
|
||||||
|
data[i+1] = data[i] + cls.SEPARATOR + data[i+1]
|
||||||
|
data = [item.replace(cls.ESCAPECHAR + cls.SEPARATOR, cls.SEPARATOR) for item in data if not item.endswith(cls.ESCAPECHAR)]
|
||||||
|
delay, channel, server, command, activestate = data
|
||||||
|
|
||||||
|
|
||||||
|
delay = int(delay)
|
||||||
|
activestate = activestate == 'True'
|
||||||
|
|
||||||
|
return cls(delay, step, channel, server, command, activestate)
|
||||||
|
# lets go for 2.3 compatiblity
|
||||||
|
unserialize = classmethod(unserialize)
|
||||||
|
|
||||||
|
#@property
|
||||||
|
def serialized(self):
|
||||||
|
data = [self.delay, self.channel, self.server, self.command, self.activestate]
|
||||||
|
data = [str(item).replace(self.SEPARATOR, self.ESCAPECHAR + self.SEPARATOR) for item in data]
|
||||||
|
return self.SEPARATOR.join(data)
|
||||||
|
# lets go for 2.3 compatiblity
|
||||||
|
serialized = property(serialized)
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.currentdelay = self.delay
|
||||||
|
self.fired = False
|
||||||
|
|
||||||
|
def fire(self):
|
||||||
|
weechat.command(self.command, self.channel, self.server)
|
||||||
|
self.fired = True
|
||||||
|
|
||||||
|
def stimulus(self, state):
|
||||||
|
if state != self.activestate:
|
||||||
|
self.reset()
|
||||||
|
else:
|
||||||
|
self.currentdelay -= self.step
|
||||||
|
if self.currentdelay <= 0 and not self.fired:
|
||||||
|
self.fire()
|
||||||
|
|
||||||
|
class CheckStatus(object):
|
||||||
|
ESCAPECHAR = '\\'
|
||||||
|
SEPARATOR = '|'
|
||||||
|
|
||||||
|
eventlist = []
|
||||||
|
step = 5
|
||||||
|
def __init__(self):
|
||||||
|
try:
|
||||||
|
self.screenpid = getScreenPid()
|
||||||
|
except OnAttachError:
|
||||||
|
raise
|
||||||
|
|
||||||
|
# try to read config data
|
||||||
|
serializedEvents = weechat.get_plugin_config("events")
|
||||||
|
if not serializedEvents:
|
||||||
|
return
|
||||||
|
|
||||||
|
events = serializedEvents.split(self.SEPARATOR)
|
||||||
|
for i in range(len(events)):
|
||||||
|
if events[i].endswith(self.ESCAPECHAR):
|
||||||
|
events[i+1] = events[i] + self.SEPARATOR + ss[i+1]
|
||||||
|
events = [event.replace(self.ESCAPECHAR + self.SEPARATOR, self.SEPARATOR) for event in events if not event.endswith(self.ESCAPECHAR)]
|
||||||
|
for event in events:
|
||||||
|
try:
|
||||||
|
self.eventlist.append(Event.unserialize(self.step, event))
|
||||||
|
except:
|
||||||
|
print "Unable to unserialize event!"
|
||||||
|
print "Try to add the event manualy and save config again."
|
||||||
|
|
||||||
|
def __call__(self, server="", args=""):
|
||||||
|
# check if the screen is attached or detatched
|
||||||
|
pipe = os.popen("screen -list | grep %s" % self.screenpid)
|
||||||
|
screenlist = pipe.read().strip()
|
||||||
|
pipe.close()
|
||||||
|
|
||||||
|
if 'attached' in screenlist.lower():
|
||||||
|
state = ON
|
||||||
|
elif 'detached' in screenlist.lower():
|
||||||
|
state = OFF
|
||||||
|
else:
|
||||||
|
print "Unable to determine screen status"
|
||||||
|
return weechat.PLUGIN_RC_KO
|
||||||
|
|
||||||
|
for event in self.eventlist:
|
||||||
|
event.stimulus(state)
|
||||||
|
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
def addEvent(self, delay, channel, server, command, activehigh=True):
|
||||||
|
event = Event(delay, self.step, channel, server, command, activehigh)
|
||||||
|
self.eventlist.append(event)
|
||||||
|
|
||||||
|
def showEvents(self):
|
||||||
|
format = "%2s | %-10s | %-10s | %-15s | %-7s | %-2s %s"
|
||||||
|
separator = "---+------------+------------+-----------------+---------+----"
|
||||||
|
print separator
|
||||||
|
print format % ("ID", "Server", "Channel", "Command", "Delay", "on", "")
|
||||||
|
print separator
|
||||||
|
for i in range(len(self.eventlist)):
|
||||||
|
event = self.eventlist[i]
|
||||||
|
if event.activestate:
|
||||||
|
atde = 'AT'
|
||||||
|
else:
|
||||||
|
atde = 'DE'
|
||||||
|
|
||||||
|
if event.fired:
|
||||||
|
fired = '*'
|
||||||
|
else:
|
||||||
|
fired = ''
|
||||||
|
print format % (i, event.server[:10], event.channel[:10], event.command[:15], "%3d sec" % event.delay, atde, fired)
|
||||||
|
print separator
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
weechat.set_plugin_config("events",self.serialized)
|
||||||
|
|
||||||
|
#@property
|
||||||
|
def serialized(self):
|
||||||
|
events = [str(event.serialized).replace(self.SEPARATOR, self.ESCAPECHAR + self.SEPARATOR) for event in self.eventlist]
|
||||||
|
return self.SEPARATOR.join(events)
|
||||||
|
# lets go for 2.3 compatiblity
|
||||||
|
serialized = property(serialized)
|
||||||
|
|
||||||
|
def dropEvent(self, eventid):
|
||||||
|
del self.eventlist[eventid]
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Functions
|
||||||
|
# ====================
|
||||||
|
def addEvent(server, args, activehigh=True):
|
||||||
|
delay, channel, command = args.split(' ', 2)
|
||||||
|
delay = int(delay)
|
||||||
|
|
||||||
|
channel = channel.strip("'\"")
|
||||||
|
checkStatus.addEvent(delay, channel, server, command, activehigh)
|
||||||
|
if activehigh:
|
||||||
|
atde = "at"
|
||||||
|
else:
|
||||||
|
atde = "de"
|
||||||
|
|
||||||
|
print "Added %stach event '%s' for channel %s on network %s with %d seconds delay" % (atde, command, channel, server, delay)
|
||||||
|
|
||||||
|
def weeOnAttach(server, args):
|
||||||
|
"""delay channel command
|
||||||
|
Adds a command which is executed after attaching the screen
|
||||||
|
The command is executed <delay> seconds after the attach.
|
||||||
|
Use "" or '' as channel if the command should be executed in
|
||||||
|
the server buffer.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
/onattach 180 &bitlbee account on 0
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
addEvent(server, args)
|
||||||
|
except:
|
||||||
|
weechat.command("/help onattach", "", server)
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
def weeOnDetach(server, args):
|
||||||
|
"""delay channel command
|
||||||
|
Adds a command which is executed after detaching the screen
|
||||||
|
The command is executed <delay> seconds after the detach.
|
||||||
|
Use "" or '' as channel if the command should be executed in
|
||||||
|
the server buffer.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
/ondetach 180 &bitlbee account on 0
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
addEvent(server, args, activehigh=False)
|
||||||
|
except:
|
||||||
|
weechat.command("/help onattach", "", server)
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
def weeScreenevents(server, args="show|save|drop"):
|
||||||
|
"""show | save | drop eventid [eventid [...]]
|
||||||
|
shows, saves or drops events
|
||||||
|
show:
|
||||||
|
Shows all current active events
|
||||||
|
|
||||||
|
save:
|
||||||
|
Saves current events permanently
|
||||||
|
|
||||||
|
drop:
|
||||||
|
Delete event from onAttach/onDetach list.
|
||||||
|
Use /showevents to get eventid
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
action, args = args.split(' ',1)
|
||||||
|
except ValueError:
|
||||||
|
action = args.strip()
|
||||||
|
args = ''
|
||||||
|
|
||||||
|
actions = {'show':showEvents,
|
||||||
|
'drop':dropEvent,
|
||||||
|
'save':saveEvents}
|
||||||
|
try:
|
||||||
|
action = actions[action]
|
||||||
|
except KeyError:
|
||||||
|
weechat.command("/help screenevents", "", server)
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return action(server, args)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def showEvents(server, args):
|
||||||
|
checkStatus.showEvents()
|
||||||
|
return 1
|
||||||
|
|
||||||
|
def dropEvent(server, args):
|
||||||
|
try:
|
||||||
|
eventids = [int(id) for id in args.split()]
|
||||||
|
except:
|
||||||
|
print "eventid musst be a number!"
|
||||||
|
return 0
|
||||||
|
|
||||||
|
eventids.sort()
|
||||||
|
eventids.reverse()
|
||||||
|
for eventid in eventids:
|
||||||
|
try:
|
||||||
|
checkStatus.dropEvent(eventid)
|
||||||
|
except:
|
||||||
|
print "Unable to drop Event %d" % eventid
|
||||||
|
return 0
|
||||||
|
print "dropped %d events!" % len(eventids)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
def saveEvents(server, args):
|
||||||
|
checkStatus.save()
|
||||||
|
return 1
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Let's Register!
|
||||||
|
# ====================
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
import weechat
|
||||||
|
except ImportError:
|
||||||
|
print "This script is to be loaded as PythonScript in WeeChat"
|
||||||
|
print "Get WeeChat now at: http://weechat.flashtux.org/"
|
||||||
|
import sys
|
||||||
|
sys.exit(10)
|
||||||
|
|
||||||
|
# kick pythons print to weechat.prnt(msg, '')
|
||||||
|
sys.stdout = WeePrint()
|
||||||
|
weechat.register(NAME, VERSION, "", DESCRIPTION)
|
||||||
|
try:
|
||||||
|
checkStatus = CheckStatus()
|
||||||
|
except OnAttachError:
|
||||||
|
print "!!! Requirements for %s not met:" % NAME
|
||||||
|
print "!!! - WeeChat is not running in a screen or not able to get screen PID"
|
||||||
|
print "!!! --> Run WeeChat in a screen to fix the problem!"
|
||||||
|
else:
|
||||||
|
|
||||||
|
weechat.add_timer_handler(checkStatus.step, "checkStatus")
|
||||||
|
|
||||||
|
registerFunctions()
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
"""
|
||||||
|
PyExec: Python code execution script for WeeChat
|
||||||
|
Author: Christian Taylor <cht@chello.at>
|
||||||
|
License: GPL version 2 or later
|
||||||
|
"""
|
||||||
|
|
||||||
|
version = "0.2"
|
||||||
|
helptext = """ The WeeChat script-API is imported into the global namespace, you can
|
||||||
|
call all API functions (for instance "get_info") directly. The modules
|
||||||
|
"sys", "os" and "math" are imported by default.
|
||||||
|
Any occurance of ";; " is treated as a newline.
|
||||||
|
|
||||||
|
For automatic argument conversion to string, use:
|
||||||
|
"send" instead of "command"
|
||||||
|
"echo" instead of "prnt" (prints only to current buffer)
|
||||||
|
(also provided: "echo_server", "echo_infobar")
|
||||||
|
|
||||||
|
Additional shortcut functions:
|
||||||
|
"nicks()" returns a dictionary of nicknames for the current channel.
|
||||||
|
It takes a channelname and a servername as optional arguments.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
/pyexec for i in range(3): send(i+1);; echo("Done")
|
||||||
|
/pyexec for nick in nicks(): send("/voice " + nick)
|
||||||
|
/pyexec echo(2**64)
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import division
|
||||||
|
import sys, os, math
|
||||||
|
from weechat import *
|
||||||
|
|
||||||
|
register("PyExec", version, "", "Run Python code in WeeChat")
|
||||||
|
add_command_handler("pyexec", "pyexec", " Runs Python code directly from the WeeChat command line.", "[Python code]", helptext)
|
||||||
|
|
||||||
|
def echo(text):
|
||||||
|
return prnt(str(text))
|
||||||
|
|
||||||
|
def echo_server(text):
|
||||||
|
return print_server(str(text))
|
||||||
|
|
||||||
|
def echo_infobar(time, text):
|
||||||
|
return print_infobar(time, str(text))
|
||||||
|
|
||||||
|
def send(text):
|
||||||
|
return command(str(text))
|
||||||
|
|
||||||
|
def nicks(channel=None, server=None):
|
||||||
|
if not server:
|
||||||
|
server = get_info("server")
|
||||||
|
if not channel:
|
||||||
|
channel = get_info("channel")
|
||||||
|
return get_nick_info(server, channel)
|
||||||
|
|
||||||
|
def pyexec(server, pycode):
|
||||||
|
try:
|
||||||
|
exec pycode.replace(";; ", "\n")
|
||||||
|
except:
|
||||||
|
(e_type, e_value, e_trace) = sys.exc_info()
|
||||||
|
prnt("PyExec: %s: %s" % (str(e_type).replace("exceptions.", ""), e_value))
|
||||||
|
|
||||||
|
return PLUGIN_RC_OK
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# shell.py (c) March 2006 by Kolter <kolter+dev@openics.org>
|
||||||
|
#
|
||||||
|
# Licence : GPL v2
|
||||||
|
# Description : running shell commands in WeeChat
|
||||||
|
# Syntax : try /help shell to get some help on this script
|
||||||
|
# Precond : needs weechat > 0.1.7 to run else it will crash WeeChat ;-)
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# ### changelog ###
|
||||||
|
#
|
||||||
|
# * version 0.1 :
|
||||||
|
# - first release
|
||||||
|
#
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
import weechat, os, popen2
|
||||||
|
|
||||||
|
SHELL_CMD="shell"
|
||||||
|
SHELL_PREFIX="[shell] "
|
||||||
|
|
||||||
|
weechat.register ("Shell", "0.1", "", "Running shell commands in WeeChat")
|
||||||
|
weechat.add_command_handler(
|
||||||
|
SHELL_CMD,
|
||||||
|
"shell",
|
||||||
|
"Running shell commands in WeeChat",
|
||||||
|
"[-o] <command line>",
|
||||||
|
" -o : print output on current server/channel\n"
|
||||||
|
"<command line> : shell command or builtin like cd, getenv, setenv, unsetenv",
|
||||||
|
"-o|cd|getenv|setenv|unsetenv cd|getenv|setenv|unsetenv"
|
||||||
|
)
|
||||||
|
|
||||||
|
def shell_exec(command):
|
||||||
|
proc = popen2.Popen3(command, True)
|
||||||
|
status = proc.wait()
|
||||||
|
results = []
|
||||||
|
if status == 0:
|
||||||
|
results = proc.fromchild.readlines()
|
||||||
|
else:
|
||||||
|
results = proc.childerr.readlines()
|
||||||
|
return status, results
|
||||||
|
|
||||||
|
def shell_output(command, inchan):
|
||||||
|
status, results = shell_exec(command)
|
||||||
|
if status == 0:
|
||||||
|
for line in results:
|
||||||
|
if inchan:
|
||||||
|
weechat.command(line.rstrip('\n'))
|
||||||
|
else:
|
||||||
|
weechat.prnt(line.rstrip('\n'))
|
||||||
|
else:
|
||||||
|
weechat.prnt("%san error occured while running command `%s'" % (SHELL_PREFIX, command))
|
||||||
|
for line in results:
|
||||||
|
weechat.prnt(line.rstrip('\n'))
|
||||||
|
|
||||||
|
|
||||||
|
def shell_chdir(directory):
|
||||||
|
if directory == "":
|
||||||
|
if os.environ.has_key('HOME'):
|
||||||
|
directory = os.environ['HOME']
|
||||||
|
try:
|
||||||
|
os.chdir(directory)
|
||||||
|
except:
|
||||||
|
weechat.prnt("%san error occured while running command `cd %s'" % (SHELL_PREFIX, directory))
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def shell_getenv(var, inchan):
|
||||||
|
var = var.strip()
|
||||||
|
if var == "":
|
||||||
|
weechat.prnt("%swrong syntax, try 'getenv VAR'" % (SHELL_PREFIX))
|
||||||
|
return
|
||||||
|
|
||||||
|
value = os.getenv(var)
|
||||||
|
if value == None:
|
||||||
|
weechat.prnt("%s$%s is not set" % (SHELL_PREFIX, var))
|
||||||
|
else:
|
||||||
|
if inchan:
|
||||||
|
weechat.command("$%s=%s" % (var, os.getenv(var)))
|
||||||
|
else:
|
||||||
|
weechat.prnt("%s$%s=%s" % (SHELL_PREFIX, var, os.getenv(var)))
|
||||||
|
|
||||||
|
def shell_setenv(expr, inchan):
|
||||||
|
expr = expr.strip()
|
||||||
|
lexpr = expr.split('=')
|
||||||
|
|
||||||
|
if (len(lexpr) < 2):
|
||||||
|
weechat.prnt("%swrong syntax, try 'setenv VAR=VALUE'" % (SHELL_PREFIX))
|
||||||
|
return
|
||||||
|
|
||||||
|
os.environ[lexpr[0].strip()] = "=".join(lexpr[1:])
|
||||||
|
if not inchan:
|
||||||
|
weechat.prnt("%s$%s is now set to '%s'" % (SHELL_PREFIX, lexpr[0], "=".join(lexpr[1:])))
|
||||||
|
|
||||||
|
def shell_unsetenv(var, inchan):
|
||||||
|
var = var.strip()
|
||||||
|
if var == "":
|
||||||
|
weechat.prnt("%swrong syntax, try 'unsetenv VAR'" % (SHELL_PREFIX))
|
||||||
|
return
|
||||||
|
|
||||||
|
if os.environ.has_key(var):
|
||||||
|
del os.environ[var]
|
||||||
|
weechat.prnt("%s$%s is now unset" % (SHELL_PREFIX, var))
|
||||||
|
else:
|
||||||
|
weechat.prnt("%s$%s is not set" % (SHELL_PREFIX, var))
|
||||||
|
|
||||||
|
def shell(server, args):
|
||||||
|
largs = args.split(" ")
|
||||||
|
|
||||||
|
#strip spaces
|
||||||
|
while '' in largs:
|
||||||
|
largs.remove('')
|
||||||
|
while ' ' in largs:
|
||||||
|
largs.remove(' ')
|
||||||
|
|
||||||
|
if len(largs) == 0:
|
||||||
|
weechat.command("/help %s" % SHELL_CMD)
|
||||||
|
else:
|
||||||
|
inchan = False
|
||||||
|
if largs[0] == '-o':
|
||||||
|
inchan = True
|
||||||
|
largs = largs[1:]
|
||||||
|
|
||||||
|
if largs[0] == 'cd':
|
||||||
|
shell_chdir(" ".join(largs[1:]), inchan)
|
||||||
|
elif largs[0] == 'getenv':
|
||||||
|
shell_getenv (" ".join(largs[1:]), inchan)
|
||||||
|
elif largs[0] == 'setenv':
|
||||||
|
shell_setenv (" ".join(largs[1:]), inchan)
|
||||||
|
elif largs[0] == 'unsetenv':
|
||||||
|
shell_unsetenv (" ".join(largs[1:]), inchan)
|
||||||
|
else:
|
||||||
|
shell_output(" ".join(largs), inchan)
|
||||||
|
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
@@ -0,0 +1,197 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
"""
|
||||||
|
Theme manager for WeeChat.
|
||||||
|
It loads configuration parameters from file
|
||||||
|
and allows to create new theme out of current configuration.
|
||||||
|
|
||||||
|
by Stalwart <stlwrt@gmail.com>
|
||||||
|
|
||||||
|
Licensed under GNU GPL v2
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
## ---------- Code starts here ----------
|
||||||
|
import weechat
|
||||||
|
import os
|
||||||
|
|
||||||
|
VERSION = "0.2.3"
|
||||||
|
|
||||||
|
weechat.register("theme", VERSION, "", "Theme manager for WeeChat")
|
||||||
|
|
||||||
|
THEMEDIR = weechat.get_info("weechat_dir") + '/themes'
|
||||||
|
|
||||||
|
weechat.add_command_handler("theme", "parameter_parser", "Apply and create themes", "[load <name> | save <name>]", "", "load|save")
|
||||||
|
|
||||||
|
settings = [
|
||||||
|
'look_startup_logo',
|
||||||
|
'look_startup_version',
|
||||||
|
'look_weechat_slogan',
|
||||||
|
'look_buffer_timestamp',
|
||||||
|
'look_color_nicks_number',
|
||||||
|
'look_color_actions',
|
||||||
|
'look_nicklist',
|
||||||
|
'look_nicklist_position',
|
||||||
|
'look_nicklist_min_size',
|
||||||
|
'look_nicklist_max_size',
|
||||||
|
'look_no_nickname',
|
||||||
|
'look_nickmode',
|
||||||
|
'look_nickmode_empty',
|
||||||
|
'look_nick_prefix',
|
||||||
|
'look_nick_suffix',
|
||||||
|
'look_align_nick',
|
||||||
|
'look_align_other',
|
||||||
|
'look_align_size',
|
||||||
|
'look_align_size_max',
|
||||||
|
'look_infobar',
|
||||||
|
'look_infobar_timestamp',
|
||||||
|
'look_infobar_seconds',
|
||||||
|
'look_infobar_delay_highlight',
|
||||||
|
'look_hotlist_names_count',
|
||||||
|
'look_hotlist_names_level',
|
||||||
|
'look_hotlist_names_length',
|
||||||
|
'look_read_marker',
|
||||||
|
'look_input_format',
|
||||||
|
'col_separator',
|
||||||
|
'col_title',
|
||||||
|
'col_title_bg',
|
||||||
|
'col_chat',
|
||||||
|
'col_chat_time',
|
||||||
|
'col_chat_time_sep',
|
||||||
|
'col_chat_prefix1',
|
||||||
|
'col_chat_prefix2',
|
||||||
|
'col_chat_server',
|
||||||
|
'col_chat_join',
|
||||||
|
'col_chat_part',
|
||||||
|
'col_chat_nick',
|
||||||
|
'col_chat_host',
|
||||||
|
'col_chat_channel',
|
||||||
|
'col_chat_dark',
|
||||||
|
'col_chat_highlight',
|
||||||
|
'col_chat_bg',
|
||||||
|
'col_chat_read_marker',
|
||||||
|
'col_chat_read_marker_bg',
|
||||||
|
'col_status',
|
||||||
|
'col_status_delimiters',
|
||||||
|
'col_status_channel',
|
||||||
|
'col_status_data_msg',
|
||||||
|
'col_status_private',
|
||||||
|
'col_status_highlight',
|
||||||
|
'col_status_data_other',
|
||||||
|
'col_status_more',
|
||||||
|
'col_status_bg',
|
||||||
|
'col_infobar',
|
||||||
|
'col_infobar_delimiters',
|
||||||
|
'col_infobar_highlight',
|
||||||
|
'col_infobar_bg',
|
||||||
|
'col_input',
|
||||||
|
'col_input_server',
|
||||||
|
'col_input_channel',
|
||||||
|
'col_input_nick',
|
||||||
|
'col_input_delimiters',
|
||||||
|
'col_input_bg',
|
||||||
|
'col_nick',
|
||||||
|
'col_nick_away',
|
||||||
|
'col_nick_chanowner',
|
||||||
|
'col_nick_chanadmin',
|
||||||
|
'col_nick_op',
|
||||||
|
'col_nick_halfop',
|
||||||
|
'col_nick_voice',
|
||||||
|
'col_nick_more',
|
||||||
|
'col_nick_sep',
|
||||||
|
'col_nick_self',
|
||||||
|
'col_nick_color1',
|
||||||
|
'col_nick_color2',
|
||||||
|
'col_nick_color3',
|
||||||
|
'col_nick_color4',
|
||||||
|
'col_nick_color5',
|
||||||
|
'col_nick_color6',
|
||||||
|
'col_nick_color7',
|
||||||
|
'col_nick_color8',
|
||||||
|
'col_nick_color9',
|
||||||
|
'col_nick_color10',
|
||||||
|
'col_nick_private',
|
||||||
|
'col_nick_bg',
|
||||||
|
'col_chat_dcc_selected',
|
||||||
|
'col_dcc_waiting',
|
||||||
|
'col_dcc_connecting',
|
||||||
|
'col_dcc_active',
|
||||||
|
'col_dcc_done',
|
||||||
|
'col_dcc_failed',
|
||||||
|
'col_dcc_aborted'
|
||||||
|
]
|
||||||
|
|
||||||
|
def themes_dir_available(writeable):
|
||||||
|
if not os.access(THEMEDIR, os.F_OK):
|
||||||
|
os.mkdir(THEMEDIR, 0700)
|
||||||
|
if writeable:
|
||||||
|
if os.access(THEMEDIR, os.W_OK):
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
if os.access(THEMEDIR, os.R_OK):
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def save_theme(theme_filename):
|
||||||
|
if themes_dir_available(1):
|
||||||
|
try:
|
||||||
|
themefile = open("%s/%s" % (THEMEDIR, theme_filename), 'wU')
|
||||||
|
except:
|
||||||
|
weechat.print_infobar(3, "Bad theme name, try another")
|
||||||
|
else:
|
||||||
|
themefile.write("# This WeeChat theme has been generated by Themes v.%s\n" % VERSION)
|
||||||
|
for variable in settings:
|
||||||
|
try:
|
||||||
|
value = weechat.get_config(variable)
|
||||||
|
except:
|
||||||
|
weechat.prnt("Unable to get the value of %s" % variable)
|
||||||
|
else:
|
||||||
|
themefile.write("%s=%s\n" % (variable, value))
|
||||||
|
themefile.flush()
|
||||||
|
themefile.close()
|
||||||
|
weechat.print_infobar(3, "Theme %s saved" % theme_filename)
|
||||||
|
|
||||||
|
def load_theme(theme_filename):
|
||||||
|
if themes_dir_available(0):
|
||||||
|
if os.access("%s/%s" % (THEMEDIR, theme_filename), os.F_OK):
|
||||||
|
themefile = open("%s/%s" % (THEMEDIR, theme_filename), 'rU')
|
||||||
|
lines = themefile.readlines()
|
||||||
|
for line in lines:
|
||||||
|
if ((len(line) > 3) and (line[0] != '#') and (line.find("="))):
|
||||||
|
try:
|
||||||
|
weechat.set_config(line[:line.find("=")], line[line.find("=")+1:].replace("\n", ""))
|
||||||
|
except:
|
||||||
|
weechat.prnt("Unable to set the value of %s" % variable)
|
||||||
|
weechat.print_infobar(3, "Theme %s applied" % theme_filename)
|
||||||
|
else:
|
||||||
|
weechat.print_infobar(3, "Theme %s doesn't exist" % theme_filename)
|
||||||
|
themefile.close()
|
||||||
|
|
||||||
|
def list_themes():
|
||||||
|
if themes_dir_available(0):
|
||||||
|
files = os.listdir(THEMEDIR)
|
||||||
|
if len(files):
|
||||||
|
weechat.prnt('Available themes:')
|
||||||
|
for filename in files:
|
||||||
|
if filename[-9:] == '.weetheme':
|
||||||
|
weechat.prnt(" %s" % filename[:-9])
|
||||||
|
else:
|
||||||
|
weechat.prnt('Theme directory is empty, you can create new theme out of your current configuration by executing "/theme save <name>". Additional themes available on http://weechat.flashtux.org')
|
||||||
|
else:
|
||||||
|
weechat.prnt('Theme directory is not available. Please, check access rights')
|
||||||
|
|
||||||
|
def parameter_parser(server, args):
|
||||||
|
if ((args != '') & (len(args.split()) == 2)):
|
||||||
|
if args.split()[0] == 'save':
|
||||||
|
save_theme(args.split()[1] + '.weetheme')
|
||||||
|
elif args.split()[0] == 'load':
|
||||||
|
load_theme(args.split()[1] + '.weetheme')
|
||||||
|
else:
|
||||||
|
weechat.prnt('Invalid parameter, must be "load" or "save"')
|
||||||
|
else:
|
||||||
|
list_themes()
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,334 @@
|
|||||||
|
#!/bin/env python
|
||||||
|
#
|
||||||
|
# TinyUrl, version 3.3, for weechat version 0.1.9
|
||||||
|
#
|
||||||
|
# Listens to all channels for long URLs, and submits them to tinyurl.com
|
||||||
|
# for easier links.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
#
|
||||||
|
# By default, any URL longer than 30 characters in length is grabbed,
|
||||||
|
# submitted to 'tinyurl', and printed in the channel for your eyes only.
|
||||||
|
# For example, you may see something like this:
|
||||||
|
#
|
||||||
|
# [11:21] <@lack> http://www.cbc.ca/story/canada/national/2005/11/12/mcdona
|
||||||
|
# lds-051112.html?ref=rss
|
||||||
|
# [11:21] -P- [AKA] http://tinyurl.com/9dthl
|
||||||
|
#
|
||||||
|
# Now you can just cut&paste the easier, shorter URL into your favourite
|
||||||
|
# browser.
|
||||||
|
#
|
||||||
|
# If you want to be extra-helpful (or annoying) to certain channels you
|
||||||
|
# are in, you can actually have the script say the tinyurl.com equivalent
|
||||||
|
# of all long URLs, by adding the channel to the 'activechans' list. In
|
||||||
|
# that case, everyone in the channel would see the following:
|
||||||
|
#
|
||||||
|
# [11:25] <testuser> http://www.cbc.ca/story/canada/national/2005/11/12/mcdona
|
||||||
|
# lds-051112.html?ref=rss
|
||||||
|
# [11:25] <@lack> [AKA] http://tinyurl.com/9dthl
|
||||||
|
#
|
||||||
|
# Configuration:
|
||||||
|
#
|
||||||
|
# Run '/help tinyurl' for the actual usage for setting these options:
|
||||||
|
#
|
||||||
|
# activechans
|
||||||
|
# A comma-delimited list of channels you will actually "say" the
|
||||||
|
# tinyurl in. By default the list is empty. Be warned, some channels
|
||||||
|
# won't appreciate extra help (or 'noise' as they like to call it), and
|
||||||
|
# some channels already have bots that do this. Please only enable
|
||||||
|
# this in channels where the ops have given you permission.
|
||||||
|
#
|
||||||
|
# urllength
|
||||||
|
# An integer, default value 30. Any URL this long or longer will
|
||||||
|
# trigger a tinyurl event.
|
||||||
|
#
|
||||||
|
# printall
|
||||||
|
# Either "on" or "off", default "on". When ON, you will see the
|
||||||
|
# tinyurl printed in your window for any channels not in your
|
||||||
|
# activechans list. When OFF, you will not see any tinyurls except in
|
||||||
|
# your activechans list.
|
||||||
|
#
|
||||||
|
# Requirements:
|
||||||
|
#
|
||||||
|
# - Designed to run with weechat version 0.1.9 or better.
|
||||||
|
# http://weechat.flashtux.org/
|
||||||
|
#
|
||||||
|
# - Requires that 'curl' is in the path (tested with curl 7.15.0).
|
||||||
|
# http://curl.haxx.se/
|
||||||
|
#
|
||||||
|
# Copyright (C) 2005 Jim Ramsay <i.am@jimramsay.com>
|
||||||
|
#
|
||||||
|
# This program 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 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
# USA.
|
||||||
|
#
|
||||||
|
# Changelog:
|
||||||
|
#
|
||||||
|
# Version 3.3, July 4, 2006
|
||||||
|
# Catches possible error in os.waitpid
|
||||||
|
# Properly prints tinyurls in query windows
|
||||||
|
#
|
||||||
|
# Version 3.2, June 15, 2006
|
||||||
|
# Multiple configuration bugfixes, pointed out by Stalwart on #weechat.
|
||||||
|
#
|
||||||
|
# Version 3.1, June 15, 2006
|
||||||
|
# Now kills any leftover curl processes when the script is unloaded.
|
||||||
|
# Thanks again to kolter for the great idea!
|
||||||
|
# Also cleaned up /tinyurl command, added comletion_template, updated
|
||||||
|
# help text, improved option parsing logic, etc.
|
||||||
|
#
|
||||||
|
# Version 3.0, June 15, 2006
|
||||||
|
# Fixes "tinyurl script sometimes makes weechat freeze" issue by using
|
||||||
|
# the new timer handlers available in Weechat 0.1.9
|
||||||
|
# Also includes URL detection fix from Raimund Specht
|
||||||
|
# <raimund@spemaus.de>.
|
||||||
|
#
|
||||||
|
# Version 2.0, Dec 13, 2005
|
||||||
|
# Also catches https, ftp, and ftps URLs, thanks to kolter for the
|
||||||
|
# suggestion!
|
||||||
|
#
|
||||||
|
# Version 1.1, Dec 2, 2005
|
||||||
|
# Fixed undefined 'urlend' thanks to kolter@irc.freenode.org#weechat
|
||||||
|
#
|
||||||
|
# TODO:
|
||||||
|
#
|
||||||
|
# - Handle outgoing messages and replace long urls with the tinyurl
|
||||||
|
# equivalent automatically.
|
||||||
|
# - On load, check that 'curl' is installed, and fail if not.
|
||||||
|
#
|
||||||
|
|
||||||
|
import os, tempfile, re
|
||||||
|
try:
|
||||||
|
import urllib
|
||||||
|
except:
|
||||||
|
raise ImportError("You need to reload the python plugin to reload urllib")
|
||||||
|
import weechat
|
||||||
|
|
||||||
|
# Register with weechat
|
||||||
|
weechat.register( "TinyUrl", "3.3", "tinyurlShutdown", "Waits for URLs and sends them to 'tinyurl' for you" )
|
||||||
|
|
||||||
|
# Global variables
|
||||||
|
tinyurlParams = ("urllength","activechans","printall")
|
||||||
|
tinyurlProcessList = {}
|
||||||
|
|
||||||
|
# Set default settings values:
|
||||||
|
if weechat.get_plugin_config('urllength') == "":
|
||||||
|
weechat.set_plugin_config('urllength', "30")
|
||||||
|
if weechat.get_plugin_config('printall') != "on" and \
|
||||||
|
weechat.get_plugin_config('printall') != "off":
|
||||||
|
weechat.set_plugin_config('printall', "on")
|
||||||
|
|
||||||
|
# Start the timer thread and register handlers
|
||||||
|
weechat.add_timer_handler( 1, "tinyurlCheckComplete" )
|
||||||
|
weechat.add_message_handler("privmsg", "tinyurlHandleMessage")
|
||||||
|
weechat.add_command_handler("tinyurl", "tinyurlMain", \
|
||||||
|
"Sets/Gets 'tinyurl' settings.",
|
||||||
|
"[<variable> [[=] <value>]]",
|
||||||
|
"""When run without arguments, displays all tinyurl settings
|
||||||
|
|
||||||
|
<variable> : Sets or displays a single tinyurl setting. One of:
|
||||||
|
activechans [[=] #chan1[,#chan2...]]
|
||||||
|
List of channels where others will see your tinyurls.
|
||||||
|
Default: None
|
||||||
|
urllength [[=] length]
|
||||||
|
Will not create tinyurls for any URLs shorter than this.
|
||||||
|
Default: 30
|
||||||
|
printall [[=] on|off]
|
||||||
|
When off, will not display private tinyurls, just those
|
||||||
|
displayed publicly in your "active channels"
|
||||||
|
Default: on""",
|
||||||
|
"urllength|activechans|printall"
|
||||||
|
)
|
||||||
|
|
||||||
|
def tinyurlShutdown():
|
||||||
|
"""Cleanup - Kills any leftover child processes"""
|
||||||
|
if len(tinyurlProcessList.keys()) > 0:
|
||||||
|
weechat.prnt( "-TinyUrl- Cleaning up unfinished processes:" )
|
||||||
|
for pid in tinyurlProcessList.keys():
|
||||||
|
weechat.prnt( " Process %d" % pid )
|
||||||
|
try:
|
||||||
|
os.kill(pid, 9)
|
||||||
|
os.waitpid( pid, 0 )
|
||||||
|
except:
|
||||||
|
weechat.prnt( " Cleanup failed, skipping" )
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
def tinyurlGet( name = "" ):
|
||||||
|
"""Gets a variable value"""
|
||||||
|
if name == "":
|
||||||
|
weechat.prnt( "-TinyUrl- Get all:" )
|
||||||
|
for name in tinyurlParams:
|
||||||
|
weechat.prnt( " %s = %s" % (name, weechat.get_plugin_config(name)) )
|
||||||
|
else:
|
||||||
|
weechat.prnt( "-TinyUrl- Get:" )
|
||||||
|
if name in tinyurlParams:
|
||||||
|
weechat.prnt( " %s = %s" % (name, weechat.get_plugin_config(name)) )
|
||||||
|
else:
|
||||||
|
weechat.prnt( " Unknown parameter \"%s\", try '/help tinyurl'" % name )
|
||||||
|
return
|
||||||
|
|
||||||
|
def tinyurlSet( name, value ):
|
||||||
|
"""Sets a variable value"""
|
||||||
|
if value == "":
|
||||||
|
tinyurlGet( name )
|
||||||
|
else:
|
||||||
|
weechat.prnt( "-TinyUrl- Set:" )
|
||||||
|
if name in tinyurlParams:
|
||||||
|
if name == "printall":
|
||||||
|
if value == "0" or value.lower() == "no" or value.lower() == "off":
|
||||||
|
weechat.set_plugin_config(name, "off")
|
||||||
|
elif value == "1" or value.lower() == "yes" or value.lower() == "on":
|
||||||
|
weechat.set_plugin_config(name, "on")
|
||||||
|
else:
|
||||||
|
weechat.prnt( " printall must be one of 'on' or 'off'" )
|
||||||
|
weechat.prnt( " value = '%s'" % value )
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
if name == "activechans":
|
||||||
|
vs = re.split(", |,| ", value)
|
||||||
|
values = []
|
||||||
|
for v in vs:
|
||||||
|
if v.startswith("#"):
|
||||||
|
values.append(v)
|
||||||
|
value = ",".join(values)
|
||||||
|
weechat.set_plugin_config(name, value)
|
||||||
|
weechat.prnt( " %s = %s" % (name, weechat.get_plugin_config(name)) )
|
||||||
|
else:
|
||||||
|
weechat.prnt( " Unknown parameter \'%s\'" % name )
|
||||||
|
return
|
||||||
|
|
||||||
|
def tinyurlMain( server, args ):
|
||||||
|
"""Main handler for the /tinyurl command"""
|
||||||
|
args = args.split( " " )
|
||||||
|
while '' in args:
|
||||||
|
args.remove('')
|
||||||
|
while ' ' in args:
|
||||||
|
args.remove(' ')
|
||||||
|
if len(args) == 0:
|
||||||
|
tinyurlGet()
|
||||||
|
else:
|
||||||
|
name = args[0]
|
||||||
|
value = ""
|
||||||
|
if len(args) > 1:
|
||||||
|
if args[1] == "=":
|
||||||
|
value = " ".join(args[2:])
|
||||||
|
else:
|
||||||
|
value = " ".join(args[1:])
|
||||||
|
tinyurlSet( args[0], value )
|
||||||
|
else:
|
||||||
|
tinyurlGet( name )
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
def tinyurlGetUrl( url, channel, server ):
|
||||||
|
"""Starts a background process which will query 'tinyurl.com' and put the
|
||||||
|
result in a file that the timer function 'tinyurlCheck' will find and
|
||||||
|
parse."""
|
||||||
|
global tinyurlProcessList
|
||||||
|
handle, filename = tempfile.mkstemp( prefix="weechat-tinyurl.py-" )
|
||||||
|
os.close(handle)
|
||||||
|
cmd = ("curl -d url=%s http://tinyurl.com/create.php --stderr /dev/null -o %s" % \
|
||||||
|
(urllib.quote(url), filename)).split()
|
||||||
|
try:
|
||||||
|
pid = os.spawnvp( os.P_NOWAIT, cmd[0], cmd )
|
||||||
|
tinyurlProcessList[pid] = (filename, channel, server)
|
||||||
|
except Exception, e:
|
||||||
|
weechat.prnt( "-TinyUrl- Error: Could not spawn curl: %s" % e )
|
||||||
|
|
||||||
|
def tinyurlParsefile( filename ):
|
||||||
|
"""Parses the given HTML file and pulls out the tinyurl."""
|
||||||
|
turl = None
|
||||||
|
try:
|
||||||
|
html = open(filename, "r")
|
||||||
|
for line in html:
|
||||||
|
if( line.startswith("<input type=hidden name=tinyurl value=\"") ):
|
||||||
|
turlend = line[39:].find("\"")
|
||||||
|
if turlend > -1:
|
||||||
|
turl = line[39:][:turlend]
|
||||||
|
break
|
||||||
|
html.close()
|
||||||
|
except Exception, e:
|
||||||
|
weechat.prnt( "-TinyUrl- Error: Could not open result file %s: %s" % (filename, e) )
|
||||||
|
return turl
|
||||||
|
|
||||||
|
def tinyurlPrint( url, channel, server ):
|
||||||
|
"""Prints the new tinyurl either to just you, or to the whole channel"""
|
||||||
|
activeChans = weechat.get_plugin_config('activechans').split(',')
|
||||||
|
if channel in activeChans:
|
||||||
|
weechat.command( "/msg %s [AKA] %s" % ( channel, url) )
|
||||||
|
else:
|
||||||
|
weechat.prnt( "[AKA] %s" % (url), channel, server )
|
||||||
|
|
||||||
|
def tinyurlFindUrlstart( msg, start = 0 ):
|
||||||
|
"""Finds the beginnings of URLs"""
|
||||||
|
index = -1
|
||||||
|
if start < 0 or start >= len(msg):
|
||||||
|
return index
|
||||||
|
for prefix in ( "http://", "https://", "ftp://", "ftps://" ):
|
||||||
|
index = msg.find( prefix, start )
|
||||||
|
if index > -1:
|
||||||
|
break
|
||||||
|
return index
|
||||||
|
|
||||||
|
def tinyurlFindUrlend( msg, urlstart ):
|
||||||
|
"""Finds the ends of URLs (Strips following punctuation)"""
|
||||||
|
m = msg[urlstart:]
|
||||||
|
index = m.find( " " )
|
||||||
|
if index == -1:
|
||||||
|
index = len(m)
|
||||||
|
while msg[index-1] in ( "?", ".", "!" ):
|
||||||
|
index -= 1
|
||||||
|
return index + urlstart
|
||||||
|
|
||||||
|
def tinyurlCheckComplete():
|
||||||
|
"""The periodic poll of all waiting processes"""
|
||||||
|
global tinyurlProcessList
|
||||||
|
for pid in tinyurlProcessList.keys():
|
||||||
|
(filename, channel, server) = tinyurlProcessList[pid]
|
||||||
|
try:
|
||||||
|
(p, er) = os.waitpid( pid, os.WNOHANG )
|
||||||
|
if p != 0:
|
||||||
|
if er == 0:
|
||||||
|
tinyurl = tinyurlParsefile(filename)
|
||||||
|
if tinyurl is not None:
|
||||||
|
tinyurlPrint( tinyurl, channel, server )
|
||||||
|
else:
|
||||||
|
weechat.prnt( "-TinyUrl- Error: 'curl' did not run properly" )
|
||||||
|
os.unlink(filename)
|
||||||
|
del tinyurlProcessList[pid]
|
||||||
|
except OSError, e:
|
||||||
|
weechat.prnt( "-TinyUrl- Error: 'curl' process not found: %s", e )
|
||||||
|
os.unlink(filename)
|
||||||
|
del tinyurlProcessList[pid]
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
def tinyurlHandleMessage( server, args ):
|
||||||
|
"""Handles IRC PRIVMSG and checks for URLs"""
|
||||||
|
maxlen = int(weechat.get_plugin_config( "urllength" ))
|
||||||
|
activeChans = weechat.get_plugin_config('activechans').split(',')
|
||||||
|
onlyActiveChans = weechat.get_plugin_config('printall') == "off"
|
||||||
|
(source, type, channel, msg) = args.split(" ", 3)
|
||||||
|
if onlyActiveChans and channel not in activeChans:
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
if not channel.startswith("#"):
|
||||||
|
channel = source.split("!", 2)[0][1:]
|
||||||
|
urlstart = tinyurlFindUrlstart( msg )
|
||||||
|
while urlstart > -1 and urlstart is not None:
|
||||||
|
urlend = tinyurlFindUrlend( msg, urlstart )
|
||||||
|
url = msg[urlstart:urlend]
|
||||||
|
if len(url) >= maxlen:
|
||||||
|
tinyurlGetUrl(url, channel, server)
|
||||||
|
# Check for more URLs
|
||||||
|
urlstart = tinyurlFindUrlstart( msg, urlend+1 )
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
"""
|
||||||
|
:Author: Henning Hasemann <hhasemann [at] web [dot] de>
|
||||||
|
|
||||||
|
:What it does:
|
||||||
|
This script listens for messages beginning
|
||||||
|
with a special token and appends these messages
|
||||||
|
to a file.
|
||||||
|
This way people can post you short assignments which
|
||||||
|
you cant forget and dont have to look up in your look.
|
||||||
|
(try appending "cat /path/to/mytodofile" at your .bashrc)
|
||||||
|
|
||||||
|
:Usage:
|
||||||
|
- Load this file
|
||||||
|
- Make sure to set suitable configuration values.
|
||||||
|
token: The piece of text that signals a TODO
|
||||||
|
file: The file where the TODOs should be appended
|
||||||
|
allowed_sources: A space-seperated list of nicknames
|
||||||
|
which are allowed to send TODOs to you.
|
||||||
|
- Whenever any allowed person sends a message beginning
|
||||||
|
with your desired token, the rest of that message is
|
||||||
|
append to the desired TODO-file.
|
||||||
|
|
||||||
|
Released under GPL licence.
|
||||||
|
"""
|
||||||
|
__version__ = "0.1"
|
||||||
|
|
||||||
|
import weechat as wc
|
||||||
|
|
||||||
|
wc.register("todo", __version__, "", "automatic TODO")
|
||||||
|
wc.add_message_handler("privmsg", "on_msg")
|
||||||
|
|
||||||
|
default = {
|
||||||
|
"token": "##todo ",
|
||||||
|
"file": "/home/USER/todo",
|
||||||
|
"allowed_sources": "",
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v in default.items():
|
||||||
|
if not wc.get_plugin_config(k):
|
||||||
|
wc.set_plugin_config(k, v)
|
||||||
|
|
||||||
|
def source_allowed(src):
|
||||||
|
return src in wc.get_plugin_config("allowed_sources").split()
|
||||||
|
|
||||||
|
def on_msg(server, args):
|
||||||
|
# args looks like:
|
||||||
|
# :foo!foo@host PRIVMSG #channel :Hello, how are you?
|
||||||
|
|
||||||
|
token = wc.get_plugin_config("token")
|
||||||
|
filename = wc.get_plugin_config("file")
|
||||||
|
|
||||||
|
try:
|
||||||
|
nothing, info, message = args.split(":", 2)
|
||||||
|
hostmask, privmsg, channel = info.split(None, 2)
|
||||||
|
source = hostmask.split("!")[0]
|
||||||
|
except ValueError:
|
||||||
|
# Parsing didnt work,
|
||||||
|
# this happens mostly when strange messages
|
||||||
|
# arrive that dont have the format described above
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if source_allowed(source) and message.lower().startswith(token):
|
||||||
|
wc.print_infobar(5, "NEW TASK: " + str(message[7:]))
|
||||||
|
f = open(filename, "a")
|
||||||
|
f.write("%s (%s)\n" % (message[7:], source))
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
# -*- encoding: iso-8859-1 -*-
|
||||||
|
#
|
||||||
|
# Copyright (c) 2006 by EgS <i@egs.name>
|
||||||
|
#
|
||||||
|
# This program 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 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# #
|
||||||
|
# This script adds a simple command to toggle weechat options #
|
||||||
|
# #
|
||||||
|
# Name: Toggle #
|
||||||
|
# Licence: GPL v2 #
|
||||||
|
# Author: Marcus Eggenberger <i@egs.name> #
|
||||||
|
# #
|
||||||
|
# Usage: #
|
||||||
|
# /toggle look_nicklist #
|
||||||
|
# #
|
||||||
|
# use /help command for detailed information #
|
||||||
|
# #
|
||||||
|
# Changelog: #
|
||||||
|
# 0.1: first version released #
|
||||||
|
# #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Imports
|
||||||
|
# ====================
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Constants
|
||||||
|
# ====================
|
||||||
|
NAME = 'Toggle'
|
||||||
|
VERSION = '0.1'
|
||||||
|
DESCRIPTION = "Simple tool to toggle ON/OFF settings"
|
||||||
|
|
||||||
|
VALUES = ['OFF','ON']
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Exceptions
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Helpers
|
||||||
|
# ====================
|
||||||
|
class WeePrint(object):
|
||||||
|
def write(self, text):
|
||||||
|
text = text.rstrip(' \0\n') # strip the null byte appended by pythons print
|
||||||
|
if text:
|
||||||
|
weechat.prnt(text,'')
|
||||||
|
|
||||||
|
def registerFunction(function):
|
||||||
|
# Register a python function as a commandhandler
|
||||||
|
# Function needs to be named like weeFunction and
|
||||||
|
# is bound to /function
|
||||||
|
# docstring is used for weechat help
|
||||||
|
functionname = function.__name__ # guess what :)
|
||||||
|
weecommand = functionname[3:].lower() # strip the wee
|
||||||
|
|
||||||
|
doc = function.__doc__.splitlines()
|
||||||
|
arguments = doc[0] # First docstring line is the arguments string
|
||||||
|
description = doc[1][4:]
|
||||||
|
args_description = '\n'.join([line[4:] for line in doc[2:-1]]) # join rest and strip indentation
|
||||||
|
|
||||||
|
if not function.func_defaults: # use args default value as template
|
||||||
|
template = ''
|
||||||
|
elif len(function.func_defaults) == 1:
|
||||||
|
template = function.func_defaults[0]
|
||||||
|
elif len(function.func_defaults) == 2:
|
||||||
|
template = func.func_defaults[1]
|
||||||
|
|
||||||
|
weechat.add_command_handler(weecommand, functionname, description, arguments, args_description, template)
|
||||||
|
|
||||||
|
def registerFunctions():
|
||||||
|
functions = [function for name, function in globals().iteritems() if name.startswith('wee') and callable(function)]
|
||||||
|
for func in functions:
|
||||||
|
registerFunction(func)
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Functions
|
||||||
|
# ====================
|
||||||
|
def weeToggle(server, args="%o"):
|
||||||
|
"""<setting>
|
||||||
|
Toggles any setting from ON to OFF and vice versa.
|
||||||
|
Example:
|
||||||
|
/toggle look_nicklist
|
||||||
|
"""
|
||||||
|
option = args
|
||||||
|
currentvalue = weechat.get_config(option).upper()
|
||||||
|
if currentvalue not in VALUES:
|
||||||
|
print "%s cannot be toggled!" % option
|
||||||
|
else:
|
||||||
|
newvalue = VALUES[VALUES.index(currentvalue) - 1]
|
||||||
|
weechat.set_config(option, newvalue)
|
||||||
|
print "%s = %s" % (option, newvalue)
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# Let's Register!
|
||||||
|
# ====================
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
import weechat
|
||||||
|
except ImportError:
|
||||||
|
print "This script is to be loaded as PythonScript in WeeChat"
|
||||||
|
print "Get WeeChat now at: http://weechat.flashtux.org/"
|
||||||
|
import sys
|
||||||
|
sys.exit(10)
|
||||||
|
|
||||||
|
# kick pythons print to weechat.prnt(msg, '')
|
||||||
|
sys.stdout = WeePrint()
|
||||||
|
weechat.register(NAME, VERSION, "", DESCRIPTION)
|
||||||
|
registerFunctions()
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# This script sends "uname -a" output to current channel.
|
||||||
|
# Just type /uname while chatting on some channel ;)
|
||||||
|
|
||||||
|
# by Stalwart <stlwrt doggy gmail.com>
|
||||||
|
#
|
||||||
|
# Released under GPL licence.
|
||||||
|
|
||||||
|
import weechat
|
||||||
|
from os import popen
|
||||||
|
|
||||||
|
def senduname(server, args):
|
||||||
|
unameout = popen ('uname -a')
|
||||||
|
uname = unameout.readline()
|
||||||
|
weechat.command(uname[:-1])
|
||||||
|
return 0
|
||||||
|
|
||||||
|
weechat.register ('uname', '1.0', '', """Sends "uname -a" output to current channel""")
|
||||||
|
weechat.add_command_handler ('uname', 'senduname')
|
||||||
@@ -0,0 +1,447 @@
|
|||||||
|
#
|
||||||
|
# UrlGrab, version 1.0, for weechat version 0.1.6
|
||||||
|
#
|
||||||
|
# Listens to all channels for URLs, collects them in a list, and launches
|
||||||
|
# them in your favourite web server on the local host or a remote server.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
#
|
||||||
|
# The /url command provides access to all UrlGrab functions. Run
|
||||||
|
# '/url help' for complete command usage.
|
||||||
|
#
|
||||||
|
# In general, use '/url list' to list the entire url list for the current
|
||||||
|
# channel, and '/url <n>' to launch the nth url in the list. For
|
||||||
|
# example, to launch the first (and most-recently added) url in the list,
|
||||||
|
# you would run '/url 1'
|
||||||
|
#
|
||||||
|
# From the server window, you must specify a specific channel for the
|
||||||
|
# list and launch commands, for example:
|
||||||
|
# /url list #weechat
|
||||||
|
# /url 3 #weechat
|
||||||
|
#
|
||||||
|
# Configuration:
|
||||||
|
#
|
||||||
|
# The '/url set' command lets you get and set the following options:
|
||||||
|
#
|
||||||
|
# historysize
|
||||||
|
# The maximum number of URLs saved per channel. Default is 10
|
||||||
|
#
|
||||||
|
# method
|
||||||
|
# Must be one of 'local' or 'remote' - Defines how URLs are launched by
|
||||||
|
# the script. If 'local', the script will run 'localcmd' on the host.
|
||||||
|
# If 'remote', the script will run 'remotessh remotehost remotecmd' on
|
||||||
|
# the local host which should normally use ssh to connect to another
|
||||||
|
# host and run the browser command there.
|
||||||
|
#
|
||||||
|
# localcmd
|
||||||
|
# The command to run on the local host to launch URLs in 'local' mode.
|
||||||
|
# The string '%s' will be replaced with the URL. The default is
|
||||||
|
# 'firefox %s'.
|
||||||
|
#
|
||||||
|
# remotessh
|
||||||
|
# The command (and arguments) used to connect to the remote host for
|
||||||
|
# 'remote' mode. The default is 'ssh -x' which will connect as the
|
||||||
|
# current username via ssh and disable X11 forwarding.
|
||||||
|
#
|
||||||
|
# remotehost
|
||||||
|
# The remote host to which we will connect in 'remote' mode. For ssh,
|
||||||
|
# this can just be a hostname or 'user@host' to specify a username
|
||||||
|
# other than your current login name. The default is 'localhost'.
|
||||||
|
#
|
||||||
|
# remotecmd
|
||||||
|
# The command to execute on the remote host for 'remote' mode. The
|
||||||
|
# default is 'bash -c "DISPLAY=:0.0 firefox %s"' Which runs bash, sets
|
||||||
|
# up the environment to display on the remote host's main X display,
|
||||||
|
# and runs firefox. As with 'localcmd', the string '%s' will be
|
||||||
|
# replaced with the URL.
|
||||||
|
#
|
||||||
|
# cmdoutput
|
||||||
|
# The file where the command output (if any) is saved. Overwritten
|
||||||
|
# each time you launch a new URL. Default is ~/.weechat/urllaunch.log
|
||||||
|
#
|
||||||
|
# Requirements:
|
||||||
|
#
|
||||||
|
# - Designed to run with weechat version 1.0.6 or better.
|
||||||
|
# http://weechat.flashtux.org/
|
||||||
|
#
|
||||||
|
# Acknowlegements:
|
||||||
|
#
|
||||||
|
# - Based on an earlier version called 'urlcollector.py' by 'kolter' of
|
||||||
|
# irc.freenode.net/#weechat Honestly, I just cleaned up the code a bit and
|
||||||
|
# made the settings a little more useful (to me).
|
||||||
|
#
|
||||||
|
# Copyright (C) 2005 Jim Ramsay <i.am@jimramsay.com>
|
||||||
|
#
|
||||||
|
# This program 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 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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 this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
# USA.
|
||||||
|
#
|
||||||
|
|
||||||
|
import os
|
||||||
|
import weechat
|
||||||
|
|
||||||
|
UC_NAME="UrlGrab"
|
||||||
|
UC_VERSION="1.0"
|
||||||
|
|
||||||
|
weechat.register (UC_NAME, UC_VERSION, "", "Url collector/launcher for weechat")
|
||||||
|
weechat.add_message_handler("privmsg", "urlGrabCheck")
|
||||||
|
weechat.add_command_handler("url", "urlGrabMain",
|
||||||
|
"Controls UrlGrab -> '/url help' for usage")
|
||||||
|
|
||||||
|
def urlGrabPrint(message):
|
||||||
|
weechat.prnt("-[%s]- %s" % ( UC_NAME, message ) )
|
||||||
|
|
||||||
|
class WeechatSetting:
|
||||||
|
def __init__(self, name, default, description = "" ):
|
||||||
|
self.name = name
|
||||||
|
self.default = default
|
||||||
|
self.description = description
|
||||||
|
test = weechat.get_plugin_config( name )
|
||||||
|
if test is None or test == "":
|
||||||
|
weechat.set_plugin_config( name, default )
|
||||||
|
|
||||||
|
class UrlGrabSettings:
|
||||||
|
def __init__(self):
|
||||||
|
self.settings = {
|
||||||
|
'historysize':WeechatSetting('historysize', '10',
|
||||||
|
"Number of URLs to keep per channel" ),
|
||||||
|
'method':WeechatSetting('method', 'local',
|
||||||
|
"""Where to launch URLs
|
||||||
|
If 'local', runs %localcmd%.
|
||||||
|
If 'remote' runs the following command:
|
||||||
|
`%remotessh% %remotehost% %remotecmd`"""),
|
||||||
|
'localcmd':WeechatSetting('localcmd', 'firefox %s',
|
||||||
|
"""Command to launch local URLs. '%s' becomes the URL.
|
||||||
|
Default 'firefox %s'"""),
|
||||||
|
'remotessh':WeechatSetting('remotessh', 'ssh -x',
|
||||||
|
"""Command (and arguments) to connect to a remote machine.
|
||||||
|
Default 'ssh -x'"""),
|
||||||
|
'remotehost':WeechatSetting('remotehost', 'localhost',
|
||||||
|
"""Hostname for remote launching
|
||||||
|
Default 'localhost'"""),
|
||||||
|
'remotecmd':WeechatSetting('remotecmd',
|
||||||
|
'bash -c \"DISPLAY=:0.0 firefox %s\"',
|
||||||
|
"""Command to launch remote URLs. '%s' becomes the URL.
|
||||||
|
Default 'bash -c \"DISPLAY=:0.0 firefox %s\"'"""),
|
||||||
|
'cmdlog':WeechatSetting('cmdlog',
|
||||||
|
'~/.weechat/urllaunch.log',
|
||||||
|
"""File where command output is saved. Overwritten each
|
||||||
|
time an URL is launched
|
||||||
|
Default '~/.weechat/urllaunch.log'""" )
|
||||||
|
}
|
||||||
|
|
||||||
|
def has(self, name):
|
||||||
|
return self.settings.has_key(name)
|
||||||
|
|
||||||
|
def names(self):
|
||||||
|
return self.settings.keys()
|
||||||
|
|
||||||
|
def description(self, name):
|
||||||
|
return self.settings[name].description
|
||||||
|
|
||||||
|
def set(self, name, value):
|
||||||
|
# Force string values only
|
||||||
|
if type(value) != type("a"):
|
||||||
|
value = str(value)
|
||||||
|
if name == "method":
|
||||||
|
if value.lower() == "remote":
|
||||||
|
weechat.set_plugin_config( 'method', "remote" )
|
||||||
|
elif value.lower() == "local":
|
||||||
|
weechat.set_plugin_config( 'method', "local" )
|
||||||
|
else:
|
||||||
|
raise ValueError( "\'%s\' is not \'local\' or \'remote\'" % value )
|
||||||
|
elif name == "localcmd":
|
||||||
|
if value.find( "%s" ) == -1:
|
||||||
|
weechat.set_plugin_config( 'localcmd', value + " %s" )
|
||||||
|
else:
|
||||||
|
weechat.set_plugin_config( 'localcmd', value )
|
||||||
|
elif name == "remotecmd":
|
||||||
|
if value.find( "%s" ) == -1:
|
||||||
|
weechat.set_plugin_config( 'remotecmd', value + " %s" )
|
||||||
|
else:
|
||||||
|
weechat.set_plugin_config( 'remotecmd', value )
|
||||||
|
elif self.has(name):
|
||||||
|
weechat.set_plugin_config( name, value )
|
||||||
|
if name == "historysize":
|
||||||
|
urlGrab.setHistorysize(int(value))
|
||||||
|
else:
|
||||||
|
raise KeyError( name )
|
||||||
|
|
||||||
|
def get(self, name):
|
||||||
|
if self.has(name):
|
||||||
|
return weechat.get_plugin_config(name)
|
||||||
|
else:
|
||||||
|
raise KeyError( name )
|
||||||
|
|
||||||
|
def prnt(self, name, verbose = True):
|
||||||
|
weechat.prnt( " %s = %s" % (name.ljust(11), self.get(name)) )
|
||||||
|
if verbose:
|
||||||
|
weechat.prnt( " -> %s" % (self.settings[name].description) )
|
||||||
|
|
||||||
|
def prntall(self):
|
||||||
|
for key in self.names():
|
||||||
|
self.prnt(key, verbose = False)
|
||||||
|
|
||||||
|
def createCmdList(self, url):
|
||||||
|
if weechat.get_plugin_config( 'method' ) == 'remote':
|
||||||
|
tmplist = weechat.get_plugin_config( 'remotessh' ).split(" ")
|
||||||
|
tmplist.append(weechat.get_plugin_config( 'remotehost' ))
|
||||||
|
tmplist.append(weechat.get_plugin_config( 'remotecmd' ) % (url))
|
||||||
|
else:
|
||||||
|
tmplist = (weechat.get_plugin_config( 'localcmd' ) % (url) ).split(" ")
|
||||||
|
return tmplist
|
||||||
|
|
||||||
|
class UrlGrabber:
|
||||||
|
def __init__(self, historysize):
|
||||||
|
# init
|
||||||
|
self.urls = {}
|
||||||
|
self.historysize = 5
|
||||||
|
# control
|
||||||
|
self.setHistorysize(historysize)
|
||||||
|
|
||||||
|
def setHistorysize(self, count):
|
||||||
|
if count > 1:
|
||||||
|
self.historysize = count
|
||||||
|
|
||||||
|
def getHistorysize(self):
|
||||||
|
return self.historysize
|
||||||
|
|
||||||
|
def addUrl(self, url, channel, server):
|
||||||
|
# check for server
|
||||||
|
if not self.urls.has_key(server):
|
||||||
|
self.urls[server] = {}
|
||||||
|
# check for chan
|
||||||
|
if not self.urls[server].has_key(channel):
|
||||||
|
self.urls[server][channel] = []
|
||||||
|
# add url
|
||||||
|
if url in self.urls[server][channel]:
|
||||||
|
self.urls[server][channel].remove(url)
|
||||||
|
self.urls[server][channel].insert(0, url)
|
||||||
|
# removing old urls
|
||||||
|
while len(self.urls[server][channel]) > self.historysize:
|
||||||
|
self.urls[server][channel].pop()
|
||||||
|
|
||||||
|
def hasIndex( self, index, channel, server ):
|
||||||
|
return self.urls.has_key(server) and \
|
||||||
|
self.urls[server].has_key(channel) and \
|
||||||
|
len(self.url[server][channel]) >= index
|
||||||
|
|
||||||
|
def hasChannel( self, channel, server ):
|
||||||
|
return self.urls.has_key(server) and \
|
||||||
|
self.urls[server].has_key(channel)
|
||||||
|
|
||||||
|
def hasServer( self, server ):
|
||||||
|
return self.urls.has_key(server)
|
||||||
|
|
||||||
|
def getUrl(self, index, channel, server):
|
||||||
|
url = ""
|
||||||
|
if self.urls.has_key(server):
|
||||||
|
if self.urls[server].has_key(channel):
|
||||||
|
if len(self.urls[server][channel]) >= index:
|
||||||
|
url = self.urls[server][channel][index-1]
|
||||||
|
return url
|
||||||
|
|
||||||
|
|
||||||
|
def prnt(self, channel, server):
|
||||||
|
found = True
|
||||||
|
if self.urls.has_key(server):
|
||||||
|
if self.urls[server].has_key(channel):
|
||||||
|
urlGrabPrint(channel + "@" + server)
|
||||||
|
if len(self.urls[server][channel]) > 0:
|
||||||
|
i = 1
|
||||||
|
for url in self.urls[server][channel]:
|
||||||
|
weechat.prnt(" --> " + str(i) + " : " + url)
|
||||||
|
i += 1
|
||||||
|
else:
|
||||||
|
found = False
|
||||||
|
elif channel == "*":
|
||||||
|
for channel in self.urls[server].keys():
|
||||||
|
self.prnt(channel, server)
|
||||||
|
else:
|
||||||
|
found = False
|
||||||
|
else:
|
||||||
|
found = False
|
||||||
|
|
||||||
|
if not found:
|
||||||
|
urlGrabPrint(channel + "@" + server + ": no entries")
|
||||||
|
|
||||||
|
def urlGrabParsemsg(command):
|
||||||
|
infos = command.split(" ")
|
||||||
|
chan = infos[2]
|
||||||
|
message = " ".join(infos[3:])[1:]
|
||||||
|
return (chan, message)
|
||||||
|
|
||||||
|
def urlGrabCheck(server, args):
|
||||||
|
global urlGrab
|
||||||
|
chan, message = urlGrabParsemsg(args)
|
||||||
|
# Ignore output from 'tinyurl.py'
|
||||||
|
if message.startswith( "[AKA] http://tinyurl.com" ):
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
# Check for URLs
|
||||||
|
for word in message.split(" "):
|
||||||
|
if word[0:7] == "http://" or \
|
||||||
|
word[0:8] == "https://" or \
|
||||||
|
word[0:6] == "ftp://":
|
||||||
|
urlGrab.addUrl(word, chan, server)
|
||||||
|
# check for any dead children and clean them up
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
mypid, status = os.waitpid(0, os.WNOHANG)
|
||||||
|
except:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
if mypid <= 0:
|
||||||
|
break
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
def urlGrabOpen(index, channel = None):
|
||||||
|
global urlGrab, urlGrabSettings
|
||||||
|
|
||||||
|
server = weechat.get_info("server")
|
||||||
|
if channel is None or channel == "":
|
||||||
|
channel = weechat.get_info("channel")
|
||||||
|
|
||||||
|
if channel == "":
|
||||||
|
urlGrabPrint( "No current channel, you must specify one" )
|
||||||
|
elif not urlGrab.hasChannel( channel, server ):
|
||||||
|
urlGrabPrint("No URL found - Invalid channel")
|
||||||
|
else:
|
||||||
|
if index <= 0:
|
||||||
|
urlGrabPrint("No URL found - Invalid index")
|
||||||
|
return
|
||||||
|
url = urlGrab.getUrl(index, channel, server)
|
||||||
|
if url == "":
|
||||||
|
urlGrabPrint("No URL found - Invalid index")
|
||||||
|
else:
|
||||||
|
urlGrabPrint("loading %s %sly" % (url, urlGrabSettings.get("method")))
|
||||||
|
logfile = os.path.expanduser( urlGrabSettings.get( 'cmdlog' ) )
|
||||||
|
|
||||||
|
argl = urlGrabSettings.createCmdList( url )
|
||||||
|
dout = open(logfile, "w")
|
||||||
|
dout.write( "UrlGrab: Running '%s'\n" % (" ".join(argl)) )
|
||||||
|
dout.close()
|
||||||
|
try:
|
||||||
|
childpid = os.fork()
|
||||||
|
except:
|
||||||
|
urlGrabPrint("Fork failed!")
|
||||||
|
if childpid == 0:
|
||||||
|
# in the child- Detach from tty and Exec the command
|
||||||
|
logfile = os.path.expanduser( urlGrabSettings.get( 'cmdlog' ) )
|
||||||
|
din = open("/dev/null", "r")
|
||||||
|
dout = open(logfile, "a")
|
||||||
|
try:
|
||||||
|
# Redirect IO for the child
|
||||||
|
os.dup2(din.fileno(), 0)
|
||||||
|
os.dup2(dout.fileno(), 1)
|
||||||
|
os.dup2(dout.fileno(), 2)
|
||||||
|
except:
|
||||||
|
dout.write( "UrlGrab: IO Redirection failed\n" )
|
||||||
|
dout.close()
|
||||||
|
din.close()
|
||||||
|
sys.exit(1)
|
||||||
|
try:
|
||||||
|
# Actually run the command
|
||||||
|
os.execvp( argl[0], argl )
|
||||||
|
except:
|
||||||
|
dout.write( "UrlGrab: Exec failed" )
|
||||||
|
dout.close()
|
||||||
|
din.close()
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
# In the parent - Don't wait now, wait later.
|
||||||
|
return
|
||||||
|
|
||||||
|
def urlGrabList( args ):
|
||||||
|
global urlGrab
|
||||||
|
channel = ""
|
||||||
|
if len(args) == 0:
|
||||||
|
channel = weechat.get_info("channel")
|
||||||
|
else:
|
||||||
|
channel = args[0]
|
||||||
|
|
||||||
|
if channel == "" or channel == "all":
|
||||||
|
channel = "*"
|
||||||
|
urlGrab.prnt(channel, weechat.get_info("server"))
|
||||||
|
|
||||||
|
def urlGrabHelp():
|
||||||
|
weechat.prnt("")
|
||||||
|
urlGrabPrint("Help")
|
||||||
|
weechat.prnt(" Usage : ")
|
||||||
|
weechat.prnt(" /url help")
|
||||||
|
weechat.prnt(" -> display this help")
|
||||||
|
weechat.prnt(" /url list [channel]")
|
||||||
|
weechat.prnt(" -> display list of recorded urls in the specified channel")
|
||||||
|
weechat.prnt(" If no channel is given, lists the current channel")
|
||||||
|
weechat.prnt(" /url set [name [[=] value]]")
|
||||||
|
weechat.prnt(" -> set or get one of the parameters")
|
||||||
|
weechat.prnt(" /url n [channel]")
|
||||||
|
weechat.prnt(" -> launch the nth url in `/url list`")
|
||||||
|
weechat.prnt(" or the nth url in the specified channel")
|
||||||
|
weechat.prnt("")
|
||||||
|
|
||||||
|
def urlGrabMain(server, args):
|
||||||
|
largs = args.split(" ")
|
||||||
|
#strip spaces
|
||||||
|
while '' in largs:
|
||||||
|
largs.remove('')
|
||||||
|
while ' ' in largs:
|
||||||
|
largs.remove(' ')
|
||||||
|
if len(largs) == 0:
|
||||||
|
urlGrabHelp()
|
||||||
|
else:
|
||||||
|
if largs[0] == 'help':
|
||||||
|
urlGrabHelp()
|
||||||
|
elif largs[0] == 'list':
|
||||||
|
urlGrabList( largs[1:] )
|
||||||
|
elif largs[0] == 'set':
|
||||||
|
try:
|
||||||
|
if (len(largs) == 1):
|
||||||
|
urlGrabPrint( "Available settings:" )
|
||||||
|
urlGrabSettings.prntall()
|
||||||
|
elif (len(largs) == 2):
|
||||||
|
name = largs[1]
|
||||||
|
urlGrabPrint( "Get %s" % name )
|
||||||
|
urlGrabSettings.prnt( name )
|
||||||
|
elif (len(largs) > 2):
|
||||||
|
name = largs[1]
|
||||||
|
value = None
|
||||||
|
if( largs[2] != "="):
|
||||||
|
value = " ".join(largs[2:])
|
||||||
|
elif( largs > 3 and largs[2] == "=" ):
|
||||||
|
value = " ".join(largs[3:])
|
||||||
|
urlGrabPrint( "set %s = \'%s\'" % (name, value) )
|
||||||
|
if value is not None:
|
||||||
|
try:
|
||||||
|
urlGrabSettings.set( name, value )
|
||||||
|
urlGrabSettings.prnt( name, verbose=False )
|
||||||
|
except ValueError, msg:
|
||||||
|
weechat.prnt( " Failed: %s" % msg )
|
||||||
|
else:
|
||||||
|
weechat.prnt( " Failed: No value given" )
|
||||||
|
except KeyError:
|
||||||
|
weechat.prnt( " Failed: Unrecognized parameter '%s'" % name )
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
no = int(largs[0])
|
||||||
|
if len(largs) > 1:
|
||||||
|
urlGrabOpen(no, largs[1])
|
||||||
|
else:
|
||||||
|
urlGrabOpen(no)
|
||||||
|
except ValueError:
|
||||||
|
urlGrabPrint( "Unknown command '%s'. Try '/url help' for usage" % largs[0])
|
||||||
|
return weechat.PLUGIN_RC_OK
|
||||||
|
|
||||||
|
# Initialize global variables
|
||||||
|
urlGrabSettings = UrlGrabSettings()
|
||||||
|
urlGrab = UrlGrabber( urlGrabSettings.get('historysize') )
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# ==================================================================================================
|
||||||
|
# myuptime.rb (c) April 2006 by David DEMONCHY (fusco) <fusco.spv@gmail.com>
|
||||||
|
#
|
||||||
|
# Licence : GPL v2
|
||||||
|
# Description : Print machine uptime in the current canal
|
||||||
|
# Syntax : /myuptime
|
||||||
|
# => <nick> uptime <hostname> : 00:16:58 up 11:09, 4 users, load average: 0.05, 0.21, 0.29
|
||||||
|
#
|
||||||
|
# ==================================================================================================
|
||||||
|
|
||||||
|
def weechat_init
|
||||||
|
Weechat.register("myuptime", "0.1", "", "Script ruby WeeChat for display my uptime")
|
||||||
|
Weechat.add_command_handler("myuptime", "myuptime")
|
||||||
|
return Weechat::PLUGIN_RC_OK
|
||||||
|
end
|
||||||
|
|
||||||
|
def myuptime(server, args)
|
||||||
|
Weechat.command("/me uptime "+ `hostname`.chomp + ":" + `uptime`.chomp)
|
||||||
|
return Weechat::PLUGIN_RC_OK
|
||||||
|
end
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# wee-now-playing.rb (c) March 2006 by Tassilo Horn <heimdall@uni-koblenz.de>
|
||||||
|
#
|
||||||
|
# Licence : GPL v2
|
||||||
|
# Description : Print what amaroK or moc is playing
|
||||||
|
# Syntax : /np
|
||||||
|
# => <nick> is listening to <Artist> - <Title>
|
||||||
|
# Precond : needs Ruby (1.8) and amaroK or moc (Music on Console)
|
||||||
|
#
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
def get_np_info
|
||||||
|
artist = title = ""
|
||||||
|
catch( :info_available ) do
|
||||||
|
# AMAROK
|
||||||
|
# ======
|
||||||
|
# The dcopfind returns the string "DCOPRef(amarok,)" if amaroK is
|
||||||
|
# running, "" otherwise. So if the string is longer than 0 we can get
|
||||||
|
# the track.
|
||||||
|
if `dcopfind amarok`.length > 0
|
||||||
|
artist = `dcop amarok player artist`.chomp
|
||||||
|
title = `dcop amarok player title`.chomp
|
||||||
|
throw( :info_available )
|
||||||
|
end
|
||||||
|
|
||||||
|
# MOCP
|
||||||
|
# ====
|
||||||
|
# Amarok was not running, so check if mocp plays something!
|
||||||
|
if !`ps -e | grep mocp`.empty?
|
||||||
|
info_string = `mocp -i`
|
||||||
|
if !(info_string =~ /^State: STOP/)
|
||||||
|
info_string.grep(/^Artist:|^SongTitle:/) do |line|
|
||||||
|
if line =~ /^Artist:/
|
||||||
|
artist = line.gsub!(/^Artist:/, '').strip!
|
||||||
|
else
|
||||||
|
title = line.gsub!(/^SongTitle:/, '').strip!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
throw( :info_available )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if !artist.empty? && !title.empty?
|
||||||
|
"#{artist} - #{title}"
|
||||||
|
else
|
||||||
|
""
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def bye(server='', args='')
|
||||||
|
return Weechat::PLUGIN_RC_OK
|
||||||
|
end
|
||||||
|
|
||||||
|
def print_now_playing(server='', args='')
|
||||||
|
np_string = get_np_info
|
||||||
|
if np_string.empty?
|
||||||
|
np_string = "nothing"
|
||||||
|
end
|
||||||
|
Weechat.command( "/me listenes to " + np_string + "." )
|
||||||
|
end
|
||||||
|
|
||||||
|
def weechat_init
|
||||||
|
Weechat.register("wee-now-playing", "0.1", "bye", "print now-playing infos")
|
||||||
|
Weechat.add_command_handler("np", "print_now_playing")
|
||||||
|
return Weechat::PLUGIN_RC_OK
|
||||||
|
end
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2003-2006 FlashCode <flashcode@flashtux.org>
|
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -21,6 +21,8 @@ noinst_LIBRARIES = lib_weechat_main.a
|
|||||||
|
|
||||||
lib_weechat_main_a_SOURCES = weechat.c \
|
lib_weechat_main_a_SOURCES = weechat.c \
|
||||||
weechat.h \
|
weechat.h \
|
||||||
|
alias.c \
|
||||||
|
alias.h \
|
||||||
backtrace.c \
|
backtrace.c \
|
||||||
backtrace.h \
|
backtrace.h \
|
||||||
command.c \
|
command.c \
|
||||||
|
|||||||
@@ -0,0 +1,381 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
|
* See README for License detail, AUTHORS for developers list.
|
||||||
|
*
|
||||||
|
* This program 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 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program 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 this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* alias.c: WeeChat alias */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "weechat.h"
|
||||||
|
#include "alias.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "../irc/irc.h"
|
||||||
|
|
||||||
|
|
||||||
|
t_weechat_alias *weechat_alias = NULL;
|
||||||
|
t_weechat_alias *weechat_last_alias = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_search: search an alias
|
||||||
|
*/
|
||||||
|
|
||||||
|
t_weechat_alias *
|
||||||
|
alias_search (char *alias_name)
|
||||||
|
{
|
||||||
|
t_weechat_alias *ptr_alias;
|
||||||
|
|
||||||
|
for (ptr_alias = weechat_alias; ptr_alias; ptr_alias = ptr_alias->next_alias)
|
||||||
|
{
|
||||||
|
if (ascii_strcasecmp (alias_name, ptr_alias->alias_name) == 0)
|
||||||
|
return ptr_alias;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_find_pos: find position for an alias (for sorting aliases)
|
||||||
|
*/
|
||||||
|
|
||||||
|
t_weechat_alias *
|
||||||
|
alias_find_pos (char *alias_name)
|
||||||
|
{
|
||||||
|
t_weechat_alias *ptr_alias;
|
||||||
|
|
||||||
|
for (ptr_alias = weechat_alias; ptr_alias; ptr_alias = ptr_alias->next_alias)
|
||||||
|
{
|
||||||
|
if (ascii_strcasecmp (alias_name, ptr_alias->alias_name) < 0)
|
||||||
|
return ptr_alias;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_insert_sorted: insert alias into sorted list
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
alias_insert_sorted (t_weechat_alias *alias)
|
||||||
|
{
|
||||||
|
t_weechat_alias *pos_alias;
|
||||||
|
|
||||||
|
pos_alias = alias_find_pos (alias->alias_name);
|
||||||
|
|
||||||
|
if (weechat_alias)
|
||||||
|
{
|
||||||
|
if (pos_alias)
|
||||||
|
{
|
||||||
|
/* insert alias into the list (before alias found) */
|
||||||
|
alias->prev_alias = pos_alias->prev_alias;
|
||||||
|
alias->next_alias = pos_alias;
|
||||||
|
if (pos_alias->prev_alias)
|
||||||
|
pos_alias->prev_alias->next_alias = alias;
|
||||||
|
else
|
||||||
|
weechat_alias = alias;
|
||||||
|
pos_alias->prev_alias = alias;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* add alias to the end */
|
||||||
|
alias->prev_alias = weechat_last_alias;
|
||||||
|
alias->next_alias = NULL;
|
||||||
|
weechat_last_alias->next_alias = alias;
|
||||||
|
weechat_last_alias = alias;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alias->prev_alias = NULL;
|
||||||
|
alias->next_alias = NULL;
|
||||||
|
weechat_alias = alias;
|
||||||
|
weechat_last_alias = alias;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_new: create new alias and add it to alias list
|
||||||
|
*/
|
||||||
|
|
||||||
|
t_weechat_alias *
|
||||||
|
alias_new (char *alias_name, char *alias_command)
|
||||||
|
{
|
||||||
|
t_weechat_alias *new_alias, *ptr_alias;
|
||||||
|
|
||||||
|
while (alias_name[0] == '/')
|
||||||
|
{
|
||||||
|
alias_name++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ascii_strcasecmp (alias_name, "builtin") == 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
ptr_alias = alias_search (alias_name);
|
||||||
|
if (ptr_alias)
|
||||||
|
{
|
||||||
|
if (ptr_alias->alias_command)
|
||||||
|
free (ptr_alias->alias_command);
|
||||||
|
ptr_alias->alias_command = strdup (alias_command);
|
||||||
|
return ptr_alias;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((new_alias = ((t_weechat_alias *) malloc (sizeof (t_weechat_alias)))))
|
||||||
|
{
|
||||||
|
new_alias->alias_name = strdup (alias_name);
|
||||||
|
new_alias->alias_command = (char *) malloc (strlen (alias_command) + 1);
|
||||||
|
new_alias->running = 0;
|
||||||
|
if (new_alias->alias_command)
|
||||||
|
strcpy (new_alias->alias_command, alias_command);
|
||||||
|
alias_insert_sorted (new_alias);
|
||||||
|
return new_alias;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_get_final_command: get final command pointed by an alias
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *
|
||||||
|
alias_get_final_command (t_weechat_alias *alias)
|
||||||
|
{
|
||||||
|
t_weechat_alias *ptr_alias;
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
if (alias->running)
|
||||||
|
{
|
||||||
|
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||||
|
gui_printf (NULL,
|
||||||
|
_("%s circular reference when calling alias \"/%s\"\n"),
|
||||||
|
WEECHAT_ERROR, alias->alias_name);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ptr_alias = alias_search ((alias->alias_command[0] == '/') ?
|
||||||
|
alias->alias_command + 1 : alias->alias_command);
|
||||||
|
if (ptr_alias)
|
||||||
|
{
|
||||||
|
alias->running = 1;
|
||||||
|
result = alias_get_final_command (ptr_alias);
|
||||||
|
alias->running = 0;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return (alias->alias_command[0] == '/') ?
|
||||||
|
alias->alias_command + 1 : alias->alias_command;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_add_word: add word to string and increment length
|
||||||
|
* This function should NOT be called directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
alias_add_word (char **alias, int *length, char *word)
|
||||||
|
{
|
||||||
|
int length_word;
|
||||||
|
|
||||||
|
if (!word)
|
||||||
|
return;
|
||||||
|
|
||||||
|
length_word = strlen (word);
|
||||||
|
if (length_word == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (*alias == NULL)
|
||||||
|
{
|
||||||
|
*alias = (char *) malloc (length_word + 1);
|
||||||
|
strcpy (*alias, word);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*alias = realloc (*alias, strlen (*alias) + length_word + 1);
|
||||||
|
strcat (*alias, word);
|
||||||
|
}
|
||||||
|
*length += length_word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_replace_args: replace arguments ($1, $2, .. or $*) in alias arguments
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *
|
||||||
|
alias_replace_args (char *alias_args, char *user_args)
|
||||||
|
{
|
||||||
|
char **argv, *start, *pos, *res;
|
||||||
|
int argc, length_res, args_count;
|
||||||
|
|
||||||
|
argv = explode_string (user_args, " ", 0, &argc);
|
||||||
|
|
||||||
|
res = NULL;
|
||||||
|
length_res = 0;
|
||||||
|
args_count = 0;
|
||||||
|
start = alias_args;
|
||||||
|
pos = start;
|
||||||
|
while (pos && pos[0])
|
||||||
|
{
|
||||||
|
if ((pos[0] == '\\') && (pos[1] == '$'))
|
||||||
|
{
|
||||||
|
pos[0] = '\0';
|
||||||
|
alias_add_word (&res, &length_res, start);
|
||||||
|
alias_add_word (&res, &length_res, "$");
|
||||||
|
pos[0] = '\\';
|
||||||
|
start = pos + 2;
|
||||||
|
pos = start;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pos[0] == '$')
|
||||||
|
{
|
||||||
|
if (pos[1] == '*')
|
||||||
|
{
|
||||||
|
args_count++;
|
||||||
|
pos[0] = '\0';
|
||||||
|
alias_add_word (&res, &length_res, start);
|
||||||
|
alias_add_word (&res, &length_res, user_args);
|
||||||
|
pos[0] = '$';
|
||||||
|
start = pos + 2;
|
||||||
|
pos = start;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((pos[1] >= '1') && (pos[1] <= '9'))
|
||||||
|
{
|
||||||
|
args_count++;
|
||||||
|
pos[0] = '\0';
|
||||||
|
alias_add_word (&res, &length_res, start);
|
||||||
|
if (pos[1] - '0' <= argc)
|
||||||
|
alias_add_word (&res, &length_res, argv[pos[1] - '1']);
|
||||||
|
pos[0] = '$';
|
||||||
|
start = pos + 2;
|
||||||
|
pos = start;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (start < pos)
|
||||||
|
alias_add_word (&res, &length_res, start);
|
||||||
|
|
||||||
|
if ((args_count == 0) && user_args && user_args[0])
|
||||||
|
{
|
||||||
|
alias_add_word (&res, &length_res, " ");
|
||||||
|
alias_add_word (&res, &length_res, user_args);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argv)
|
||||||
|
free_exploded_string (argv);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_replace_vars: replace special vars ($nick, $channel, $server) in a string
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *
|
||||||
|
alias_replace_vars (char *string)
|
||||||
|
{
|
||||||
|
char *nick, *channel, *server;
|
||||||
|
char empty_string[1] = { '\0' };
|
||||||
|
char *res, *temp;
|
||||||
|
|
||||||
|
nick = (SERVER(gui_current_window->buffer)
|
||||||
|
&& SERVER(gui_current_window->buffer)->nick) ?
|
||||||
|
SERVER(gui_current_window->buffer)->nick : empty_string;
|
||||||
|
channel = (CHANNEL(gui_current_window->buffer)) ?
|
||||||
|
CHANNEL(gui_current_window->buffer)->name : empty_string;
|
||||||
|
server = (SERVER(gui_current_window->buffer)) ?
|
||||||
|
SERVER(gui_current_window->buffer)->name : empty_string;
|
||||||
|
|
||||||
|
/* replace nick */
|
||||||
|
temp = weechat_strreplace (string, "$nick", nick);
|
||||||
|
if (!temp)
|
||||||
|
return NULL;
|
||||||
|
res = temp;
|
||||||
|
|
||||||
|
/* replace channel */
|
||||||
|
temp = weechat_strreplace (res, "$channel", channel);
|
||||||
|
free (res);
|
||||||
|
if (!temp)
|
||||||
|
return NULL;
|
||||||
|
res = temp;
|
||||||
|
|
||||||
|
/* replace server */
|
||||||
|
temp = weechat_strreplace (res, "$server", server);
|
||||||
|
free (res);
|
||||||
|
if (!temp)
|
||||||
|
return NULL;
|
||||||
|
res = temp;
|
||||||
|
|
||||||
|
/* return result */
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_free: free an alias and reomve it from list
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
alias_free (t_weechat_alias *alias)
|
||||||
|
{
|
||||||
|
t_weechat_alias *new_weechat_alias;
|
||||||
|
|
||||||
|
/* remove alias from list */
|
||||||
|
if (weechat_last_alias == alias)
|
||||||
|
weechat_last_alias = alias->prev_alias;
|
||||||
|
if (alias->prev_alias)
|
||||||
|
{
|
||||||
|
(alias->prev_alias)->next_alias = alias->next_alias;
|
||||||
|
new_weechat_alias = weechat_alias;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
new_weechat_alias = alias->next_alias;
|
||||||
|
|
||||||
|
if (alias->next_alias)
|
||||||
|
(alias->next_alias)->prev_alias = alias->prev_alias;
|
||||||
|
|
||||||
|
/* free data */
|
||||||
|
if (alias->alias_name)
|
||||||
|
free (alias->alias_name);
|
||||||
|
if (alias->alias_command)
|
||||||
|
free (alias->alias_command);
|
||||||
|
free (alias);
|
||||||
|
weechat_alias = new_weechat_alias;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* alias_free_all: free all alias
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
alias_free_all ()
|
||||||
|
{
|
||||||
|
while (weechat_alias)
|
||||||
|
alias_free (weechat_alias);
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
|
* See README for License detail, AUTHORS for developers list.
|
||||||
|
*
|
||||||
|
* This program 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 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program 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 this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __WEECHAT_ALIAS_H
|
||||||
|
#define __WEECHAT_ALIAS_H 1
|
||||||
|
|
||||||
|
typedef struct t_weechat_alias t_weechat_alias;
|
||||||
|
|
||||||
|
struct t_weechat_alias
|
||||||
|
{
|
||||||
|
char *alias_name;
|
||||||
|
char *alias_command;
|
||||||
|
int running;
|
||||||
|
t_weechat_alias *prev_alias;
|
||||||
|
t_weechat_alias *next_alias;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern t_weechat_alias *weechat_alias;
|
||||||
|
extern t_weechat_alias *weechat_last_alias;
|
||||||
|
|
||||||
|
extern t_weechat_alias *alias_search (char *);
|
||||||
|
extern t_weechat_alias *alias_new (char *, char *);
|
||||||
|
extern char *alias_get_final_command (t_weechat_alias *);
|
||||||
|
extern char *alias_replace_args (char *, char *);
|
||||||
|
extern char *alias_replace_vars (char *);
|
||||||
|
extern void alias_free (t_weechat_alias *);
|
||||||
|
extern void alias_free_all ();
|
||||||
|
|
||||||
|
#endif /* alias.h */
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@@ -28,7 +28,11 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#ifndef __USE_GNU
|
||||||
#define __USE_GNU
|
#define __USE_GNU
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
#ifdef HAVE_BACKTRACE
|
#ifdef HAVE_BACKTRACE
|
||||||
@@ -38,10 +42,11 @@
|
|||||||
#include "weechat.h"
|
#include "weechat.h"
|
||||||
#include "backtrace.h"
|
#include "backtrace.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* weechat_backtrace_printf: display a backtrage line (on stderr and in WeeChat log)
|
* weechat_backtrace_printf: display a backtrace line (on stderr and in WeeChat log)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -54,7 +59,7 @@ weechat_backtrace_printf (char *message, ...)
|
|||||||
vsnprintf (buffer, sizeof (buffer) - 1, message, argptr);
|
vsnprintf (buffer, sizeof (buffer) - 1, message, argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
|
||||||
fprintf (stderr, "%s", buffer);
|
weechat_iconv_fprintf (stderr, "%s", buffer);
|
||||||
weechat_log_printf ("%s", buffer);
|
weechat_log_printf ("%s", buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,7 +89,7 @@ weechat_backtrace_addr2line (int number, void *address, char *symbol)
|
|||||||
|
|
||||||
addr = address;
|
addr = address;
|
||||||
if (info.dli_fbase >= (const void *) 0x40000000)
|
if (info.dli_fbase >= (const void *) 0x40000000)
|
||||||
addr = (const char *) addr - (unsigned int) info.dli_fbase;
|
addr = (void *)((unsigned long)((const char *) addr) - (unsigned long) info.dli_fbase);
|
||||||
|
|
||||||
snprintf (cmd_line, sizeof (cmd_line),
|
snprintf (cmd_line, sizeof (cmd_line),
|
||||||
"addr2line --functions --demangle -e $(which %s) %p",
|
"addr2line --functions --demangle -e $(which %s) %p",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|||||||
+430
-866
File diff suppressed because it is too large
Load Diff
+1
-20
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@@ -46,31 +46,13 @@ struct t_weechat_command
|
|||||||
/* function called when user enters cmd */
|
/* function called when user enters cmd */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct t_weechat_alias t_weechat_alias;
|
|
||||||
|
|
||||||
struct t_weechat_alias
|
|
||||||
{
|
|
||||||
char *alias_name;
|
|
||||||
char *alias_command;
|
|
||||||
int running;
|
|
||||||
t_weechat_alias *prev_alias;
|
|
||||||
t_weechat_alias *next_alias;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern t_weechat_command weechat_commands[];
|
extern t_weechat_command weechat_commands[];
|
||||||
|
|
||||||
extern t_weechat_alias *weechat_alias;
|
|
||||||
extern t_weelist *index_commands;
|
extern t_weelist *index_commands;
|
||||||
extern t_weelist *last_index_command;
|
extern t_weelist *last_index_command;
|
||||||
|
|
||||||
extern void command_index_build ();
|
extern void command_index_build ();
|
||||||
extern void command_index_free ();
|
extern void command_index_free ();
|
||||||
extern t_weechat_alias *alias_search (char *);
|
|
||||||
extern t_weechat_alias *alias_new (char *, char *);
|
|
||||||
extern char *alias_get_final_command (t_weechat_alias *);
|
|
||||||
extern void alias_free_all ();
|
|
||||||
extern char **explode_string (char *, char *, int, int *);
|
|
||||||
extern void free_exploded_string (char **);
|
|
||||||
extern char **split_multi_command (char *, char);
|
extern char **split_multi_command (char *, char);
|
||||||
extern void free_multi_command (char **);
|
extern void free_multi_command (char **);
|
||||||
extern int exec_weechat_command (t_irc_server *, t_irc_channel *, char *, int);
|
extern int exec_weechat_command (t_irc_server *, t_irc_channel *, char *, int);
|
||||||
@@ -78,7 +60,6 @@ extern void user_command (t_irc_server *, t_irc_channel *, char *, int);
|
|||||||
extern int weechat_cmd_alias (t_irc_server *, t_irc_channel *, char *);
|
extern int weechat_cmd_alias (t_irc_server *, t_irc_channel *, char *);
|
||||||
extern int weechat_cmd_buffer (t_irc_server *, t_irc_channel *, char *);
|
extern int weechat_cmd_buffer (t_irc_server *, t_irc_channel *, char *);
|
||||||
extern int weechat_cmd_builtin (t_irc_server *, t_irc_channel *, char *);
|
extern int weechat_cmd_builtin (t_irc_server *, t_irc_channel *, char *);
|
||||||
extern int weechat_cmd_charset (t_irc_server *, t_irc_channel *, int, char **);
|
|
||||||
extern int weechat_cmd_clear (t_irc_server *, t_irc_channel *, int, char **);
|
extern int weechat_cmd_clear (t_irc_server *, t_irc_channel *, int, char **);
|
||||||
extern int weechat_cmd_connect (t_irc_server *, t_irc_channel *, int, char **);
|
extern int weechat_cmd_connect (t_irc_server *, t_irc_channel *, int, char **);
|
||||||
extern int weechat_cmd_dcc (t_irc_server *, t_irc_channel *, char *);
|
extern int weechat_cmd_dcc (t_irc_server *, t_irc_channel *, char *);
|
||||||
|
|||||||
+162
-46
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@@ -26,9 +26,14 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "weechat.h"
|
#include "weechat.h"
|
||||||
#include "completion.h"
|
#include "completion.h"
|
||||||
|
#include "alias.h"
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "utf8.h"
|
#include "utf8.h"
|
||||||
@@ -60,6 +65,7 @@ completion_init (t_completion *completion, void *server, void *channel)
|
|||||||
completion->position = -1;
|
completion->position = -1;
|
||||||
completion->args = NULL;
|
completion->args = NULL;
|
||||||
completion->direction = 0;
|
completion->direction = 0;
|
||||||
|
completion->add_space = 1;
|
||||||
|
|
||||||
completion->completion_list = NULL;
|
completion->completion_list = NULL;
|
||||||
completion->last_completion = NULL;
|
completion->last_completion = NULL;
|
||||||
@@ -117,7 +123,7 @@ completion_get_command_infos (t_completion *completion,
|
|||||||
char **template, int *max_arg)
|
char **template, int *max_arg)
|
||||||
{
|
{
|
||||||
t_weechat_alias *ptr_alias;
|
t_weechat_alias *ptr_alias;
|
||||||
char *ptr_command;
|
char *ptr_command, *ptr_command2, *pos;
|
||||||
int i;
|
int i;
|
||||||
#ifdef PLUGINS
|
#ifdef PLUGINS
|
||||||
t_weechat_plugin *ptr_plugin;
|
t_weechat_plugin *ptr_plugin;
|
||||||
@@ -136,6 +142,14 @@ completion_get_command_infos (t_completion *completion,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
ptr_command = completion->base_command;
|
ptr_command = completion->base_command;
|
||||||
|
|
||||||
|
ptr_command2 = strdup (ptr_command);
|
||||||
|
if (!ptr_command2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
pos = strchr (ptr_command2, ' ');
|
||||||
|
if (pos)
|
||||||
|
pos[0] = '\0';
|
||||||
|
|
||||||
#ifdef PLUGINS
|
#ifdef PLUGINS
|
||||||
/* look for plugin command handler */
|
/* look for plugin command handler */
|
||||||
@@ -145,12 +159,13 @@ completion_get_command_infos (t_completion *completion,
|
|||||||
for (ptr_handler = ptr_plugin->handlers;
|
for (ptr_handler = ptr_plugin->handlers;
|
||||||
ptr_handler; ptr_handler = ptr_handler->next_handler)
|
ptr_handler; ptr_handler = ptr_handler->next_handler)
|
||||||
{
|
{
|
||||||
if ((ptr_handler->type == HANDLER_COMMAND)
|
if ((ptr_handler->type == PLUGIN_HANDLER_COMMAND)
|
||||||
&& (ascii_strcasecmp (ptr_handler->command,
|
&& (ascii_strcasecmp (ptr_handler->command,
|
||||||
ptr_command) == 0))
|
ptr_command2) == 0))
|
||||||
{
|
{
|
||||||
*template = ptr_handler->completion_template;
|
*template = ptr_handler->completion_template;
|
||||||
*max_arg = MAX_ARGS;
|
*max_arg = MAX_ARGS;
|
||||||
|
free (ptr_command2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,10 +176,11 @@ completion_get_command_infos (t_completion *completion,
|
|||||||
for (i = 0; weechat_commands[i].command_name; i++)
|
for (i = 0; weechat_commands[i].command_name; i++)
|
||||||
{
|
{
|
||||||
if (ascii_strcasecmp (weechat_commands[i].command_name,
|
if (ascii_strcasecmp (weechat_commands[i].command_name,
|
||||||
ptr_command) == 0)
|
ptr_command2) == 0)
|
||||||
{
|
{
|
||||||
*template = weechat_commands[i].completion_template;
|
*template = weechat_commands[i].completion_template;
|
||||||
*max_arg = weechat_commands[i].max_arg;
|
*max_arg = weechat_commands[i].max_arg;
|
||||||
|
free (ptr_command2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -174,14 +190,16 @@ completion_get_command_infos (t_completion *completion,
|
|||||||
{
|
{
|
||||||
if ((irc_commands[i].cmd_function_args || irc_commands[i].cmd_function_1arg)
|
if ((irc_commands[i].cmd_function_args || irc_commands[i].cmd_function_1arg)
|
||||||
&& (ascii_strcasecmp (irc_commands[i].command_name,
|
&& (ascii_strcasecmp (irc_commands[i].command_name,
|
||||||
ptr_command) == 0))
|
ptr_command2) == 0))
|
||||||
{
|
{
|
||||||
*template = irc_commands[i].completion_template;
|
*template = irc_commands[i].completion_template;
|
||||||
*max_arg = irc_commands[i].max_arg;
|
*max_arg = irc_commands[i].max_arg;
|
||||||
|
free (ptr_command2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free (ptr_command2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,8 +288,90 @@ completion_list_add_server_channels (t_completion *completion)
|
|||||||
void
|
void
|
||||||
completion_list_add_filename (t_completion *completion)
|
completion_list_add_filename (t_completion *completion)
|
||||||
{
|
{
|
||||||
/* TODO: add filename completion */
|
char *path_d, *path_b, *p, *d_name;
|
||||||
completion_stop (completion);
|
char *real_prefix, *prefix;
|
||||||
|
char *buffer;
|
||||||
|
int buffer_len;
|
||||||
|
DIR *dp;
|
||||||
|
struct dirent *entry;
|
||||||
|
struct stat statbuf;
|
||||||
|
char home[3] = { '~', DIR_SEPARATOR_CHAR, '\0' };
|
||||||
|
|
||||||
|
buffer_len = PATH_MAX;
|
||||||
|
buffer = (char *) malloc (buffer_len * sizeof (char));
|
||||||
|
if (!buffer)
|
||||||
|
return;
|
||||||
|
|
||||||
|
completion->add_space = 0;
|
||||||
|
|
||||||
|
if ((strncmp (completion->base_word, home, 2) == 0) && getenv("HOME"))
|
||||||
|
{
|
||||||
|
real_prefix = strdup (getenv("HOME"));
|
||||||
|
prefix = strdup (home);
|
||||||
|
}
|
||||||
|
else if ((strncmp (completion->base_word, DIR_SEPARATOR, 1) != 0)
|
||||||
|
|| (strcmp (completion->base_word, "") == 0))
|
||||||
|
{
|
||||||
|
real_prefix = strdup (weechat_home);
|
||||||
|
prefix = strdup ("");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
real_prefix = strdup (DIR_SEPARATOR);
|
||||||
|
prefix = strdup (DIR_SEPARATOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf (buffer, buffer_len, "%s", completion->base_word + strlen (prefix));
|
||||||
|
p = strrchr (buffer, DIR_SEPARATOR_CHAR);
|
||||||
|
if (p)
|
||||||
|
{
|
||||||
|
*p = '\0';
|
||||||
|
path_d = strdup (buffer);
|
||||||
|
p++;
|
||||||
|
path_b = strdup (p);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
path_d = strdup ("");
|
||||||
|
path_b = strdup (buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf (buffer, "%s%s%s", real_prefix, DIR_SEPARATOR, path_d);
|
||||||
|
d_name = strdup (buffer);
|
||||||
|
dp = opendir(d_name);
|
||||||
|
if (dp != NULL)
|
||||||
|
{
|
||||||
|
while((entry = readdir(dp)) != NULL)
|
||||||
|
{
|
||||||
|
if (strncmp (entry->d_name, path_b, strlen(path_b)) == 0) {
|
||||||
|
|
||||||
|
if (strcmp (entry->d_name, ".") == 0 || strcmp (entry->d_name, "..") == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
snprintf(buffer, buffer_len, "%s%s%s",
|
||||||
|
d_name, DIR_SEPARATOR, entry->d_name);
|
||||||
|
if (stat(buffer, &statbuf) == -1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
snprintf(buffer, buffer_len, "%s%s%s%s%s%s",
|
||||||
|
prefix,
|
||||||
|
((strcmp(prefix, "") == 0)
|
||||||
|
|| strchr(prefix, DIR_SEPARATOR_CHAR)) ? "" : DIR_SEPARATOR,
|
||||||
|
path_d,
|
||||||
|
strcmp(path_d, "") == 0 ? "" : DIR_SEPARATOR,
|
||||||
|
entry->d_name,
|
||||||
|
S_ISDIR(statbuf.st_mode) ? DIR_SEPARATOR : "");
|
||||||
|
|
||||||
|
completion_list_add (completion, buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free (d_name);
|
||||||
|
free (prefix);
|
||||||
|
free (real_prefix);
|
||||||
|
free (path_d);
|
||||||
|
free (path_b);
|
||||||
|
free (buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -291,7 +391,7 @@ completion_list_add_plugin_cmd (t_completion *completion)
|
|||||||
for (ptr_handler = ptr_plugin->handlers;
|
for (ptr_handler = ptr_plugin->handlers;
|
||||||
ptr_handler; ptr_handler = ptr_handler->next_handler)
|
ptr_handler; ptr_handler = ptr_handler->next_handler)
|
||||||
{
|
{
|
||||||
if (ptr_handler->type == HANDLER_COMMAND)
|
if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
|
||||||
completion_list_add (completion, ptr_handler->command);
|
completion_list_add (completion, ptr_handler->command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -569,7 +669,7 @@ completion_list_add_servers (t_completion *completion)
|
|||||||
void
|
void
|
||||||
completion_list_add_topic (t_completion *completion)
|
completion_list_add_topic (t_completion *completion)
|
||||||
{
|
{
|
||||||
char *string, *string2;
|
char *string;
|
||||||
|
|
||||||
if (!completion->server || !completion->channel
|
if (!completion->server || !completion->channel
|
||||||
|| !((t_irc_channel *)(completion->channel))->topic
|
|| !((t_irc_channel *)(completion->channel))->topic
|
||||||
@@ -581,16 +681,11 @@ completion_list_add_topic (t_completion *completion)
|
|||||||
string = (char *)gui_color_decode_for_user_entry ((unsigned char *)((t_irc_channel *)(completion->channel))->topic);
|
string = (char *)gui_color_decode_for_user_entry ((unsigned char *)((t_irc_channel *)(completion->channel))->topic);
|
||||||
else
|
else
|
||||||
string = (char *)gui_color_decode ((unsigned char *)((t_irc_channel *)(completion->channel))->topic, 0);
|
string = (char *)gui_color_decode ((unsigned char *)((t_irc_channel *)(completion->channel))->topic, 0);
|
||||||
string2 = channel_iconv_decode ((t_irc_server *)(completion->server),
|
|
||||||
(t_irc_channel *)(completion->channel),
|
|
||||||
(string) ? string : ((t_irc_channel *)(completion->channel))->topic);
|
|
||||||
completion_list_add (completion,
|
completion_list_add (completion,
|
||||||
(string2) ? string2 : ((string) ?
|
(string) ?
|
||||||
string : ((t_irc_channel *)(completion->channel))->topic));
|
string : ((t_irc_channel *)(completion->channel))->topic);
|
||||||
if (string)
|
if (string)
|
||||||
free (string);
|
free (string);
|
||||||
if (string2)
|
|
||||||
free (string2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -773,6 +868,7 @@ completion_build_list_template (t_completion *completion, char *template)
|
|||||||
break;
|
break;
|
||||||
case 'n': /* channel nicks */
|
case 'n': /* channel nicks */
|
||||||
completion_list_add_channel_nicks (completion);
|
completion_list_add_channel_nicks (completion);
|
||||||
|
completion->context = COMPLETION_NICK;
|
||||||
break;
|
break;
|
||||||
case 'N': /* channel nicks and hosts */
|
case 'N': /* channel nicks and hosts */
|
||||||
completion_list_add_channel_nicks_hosts (completion);
|
completion_list_add_channel_nicks_hosts (completion);
|
||||||
@@ -874,7 +970,8 @@ completion_find_context (t_completion *completion, char *buffer, int size, int p
|
|||||||
|
|
||||||
/* look for context */
|
/* look for context */
|
||||||
completion_free (completion);
|
completion_free (completion);
|
||||||
command = (buffer[0] == '/') ? 1 : 0;
|
completion_init (completion, completion->server, completion->channel);
|
||||||
|
command = ((buffer[0] == '/') && (buffer[1] != '/')) ? 1 : 0;
|
||||||
command_arg = 0;
|
command_arg = 0;
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < pos)
|
while (i < pos)
|
||||||
@@ -904,12 +1001,7 @@ completion_find_context (t_completion *completion, char *buffer, int size, int p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
completion->context = COMPLETION_AUTO;
|
||||||
if (completion->channel)
|
|
||||||
completion->context = COMPLETION_NICK;
|
|
||||||
else
|
|
||||||
completion->context = COMPLETION_NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* look for word to complete (base word) */
|
/* look for word to complete (base word) */
|
||||||
completion->base_word_pos = 0;
|
completion->base_word_pos = 0;
|
||||||
@@ -982,29 +1074,14 @@ completion_find_context (t_completion *completion, char *buffer, int size, int p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* nick completion with nothing as base word is disabled,
|
/* auto completion with nothing as base word is disabled,
|
||||||
in order to prevent completion when pasting messages with [tab] inside */
|
in order to prevent completion when pasting messages with [tab] inside */
|
||||||
if ((completion->context == COMPLETION_NICK)
|
if ((completion->context == COMPLETION_AUTO)
|
||||||
&& ((!completion->base_word) || (!completion->base_word[0])))
|
&& ((!completion->base_word) || (!completion->base_word[0])))
|
||||||
{
|
{
|
||||||
completion->context = COMPLETION_NULL;
|
completion->context = COMPLETION_NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!completion->completion_list && completion->channel &&
|
|
||||||
((((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_PRIVATE)
|
|
||||||
|| (((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_DCC_CHAT))
|
|
||||||
&& (completion->context == COMPLETION_NICK))
|
|
||||||
{
|
|
||||||
/* nick completion in private (only other nick and self) */
|
|
||||||
completion->context = COMPLETION_NICK;
|
|
||||||
weelist_add (&completion->completion_list,
|
|
||||||
&completion->last_completion,
|
|
||||||
((t_irc_channel *)(completion->channel))->name);
|
|
||||||
weelist_add (&completion->completion_list,
|
|
||||||
&completion->last_completion,
|
|
||||||
((t_irc_server *)(completion->server))->nick);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1227,6 +1304,8 @@ completion_nick (t_completion *completion)
|
|||||||
if (!completion->channel)
|
if (!completion->channel)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
completion->context = COMPLETION_NICK;
|
||||||
|
|
||||||
if ((((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_PRIVATE)
|
if ((((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_PRIVATE)
|
||||||
|| (((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_DCC_CHAT))
|
|| (((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_DCC_CHAT))
|
||||||
{
|
{
|
||||||
@@ -1310,6 +1389,39 @@ completion_nick (t_completion *completion)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* completion_auto: auto complete: nick, filename or channel
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
completion_auto (t_completion *completion)
|
||||||
|
{
|
||||||
|
/* filename completion */
|
||||||
|
if ((completion->base_word[0] == '/')
|
||||||
|
|| (completion->base_word[0] == '~'))
|
||||||
|
{
|
||||||
|
if (!completion->completion_list)
|
||||||
|
completion_list_add_filename (completion);
|
||||||
|
completion_command_arg (completion, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* channel completion */
|
||||||
|
if (string_is_channel (completion->base_word))
|
||||||
|
{
|
||||||
|
if (!completion->completion_list)
|
||||||
|
completion_list_add_server_channels (completion);
|
||||||
|
completion_command_arg (completion, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* default: nick completion (if channel) */
|
||||||
|
if (completion->channel)
|
||||||
|
completion_nick (completion);
|
||||||
|
else
|
||||||
|
completion->context = COMPLETION_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* completion_search: complete word according to context
|
* completion_search: complete word according to context
|
||||||
*/
|
*/
|
||||||
@@ -1337,10 +1449,7 @@ completion_search (t_completion *completion, int direction,
|
|||||||
/* should never be executed */
|
/* should never be executed */
|
||||||
return;
|
return;
|
||||||
case COMPLETION_NICK:
|
case COMPLETION_NICK:
|
||||||
if (completion->channel)
|
completion_nick (completion);
|
||||||
completion_nick (completion);
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
break;
|
break;
|
||||||
case COMPLETION_COMMAND:
|
case COMPLETION_COMMAND:
|
||||||
completion_command (completion);
|
completion_command (completion);
|
||||||
@@ -1349,7 +1458,13 @@ completion_search (t_completion *completion, int direction,
|
|||||||
if (completion->completion_list)
|
if (completion->completion_list)
|
||||||
completion_command_arg (completion, completion->arg_is_nick);
|
completion_command_arg (completion, completion->arg_is_nick);
|
||||||
else
|
else
|
||||||
completion_nick (completion);
|
{
|
||||||
|
completion->context = COMPLETION_AUTO;
|
||||||
|
completion_auto (completion);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case COMPLETION_AUTO:
|
||||||
|
completion_auto (completion);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (completion->word_found)
|
if (completion->word_found)
|
||||||
@@ -1395,6 +1510,7 @@ completion_print_log (t_completion *completion)
|
|||||||
weechat_log_printf (" position . . . . . . . : %d\n", completion->position);
|
weechat_log_printf (" position . . . . . . . : %d\n", completion->position);
|
||||||
weechat_log_printf (" args . . . . . . . . . : '%s'\n", completion->args);
|
weechat_log_printf (" args . . . . . . . . . : '%s'\n", completion->args);
|
||||||
weechat_log_printf (" direction. . . . . . . : %d\n", completion->direction);
|
weechat_log_printf (" direction. . . . . . . : %d\n", completion->direction);
|
||||||
|
weechat_log_printf (" add_space. . . . . . . : %d\n", completion->add_space);
|
||||||
weechat_log_printf (" completion_list. . . . : 0x%X\n", completion->completion_list);
|
weechat_log_printf (" completion_list. . . . : 0x%X\n", completion->completion_list);
|
||||||
weechat_log_printf (" last_completion. . . . : 0x%X\n", completion->last_completion);
|
weechat_log_printf (" last_completion. . . . : 0x%X\n", completion->last_completion);
|
||||||
weechat_log_printf (" word_found . . . . . . : '%s'\n", completion->word_found);
|
weechat_log_printf (" word_found . . . . . . : '%s'\n", completion->word_found);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@@ -27,6 +27,7 @@
|
|||||||
#define COMPLETION_NICK 1
|
#define COMPLETION_NICK 1
|
||||||
#define COMPLETION_COMMAND 2
|
#define COMPLETION_COMMAND 2
|
||||||
#define COMPLETION_COMMAND_ARG 3
|
#define COMPLETION_COMMAND_ARG 3
|
||||||
|
#define COMPLETION_AUTO 4
|
||||||
|
|
||||||
typedef struct t_completion t_completion;
|
typedef struct t_completion t_completion;
|
||||||
|
|
||||||
@@ -44,6 +45,7 @@ struct t_completion
|
|||||||
int position; /* position where Tab was pressed */
|
int position; /* position where Tab was pressed */
|
||||||
char *args; /* command line args (including base word) */
|
char *args; /* command line args (including base word) */
|
||||||
int direction; /* +1 = search next word, -1 = previous word */
|
int direction; /* +1 = search next word, -1 = previous word */
|
||||||
|
int add_space; /* add space after completion? */
|
||||||
|
|
||||||
/* for command argument completion */
|
/* for command argument completion */
|
||||||
t_weelist *completion_list; /* data list for completion */
|
t_weelist *completion_list; /* data list for completion */
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>
|
* Copyright (c) 2003-2007 by FlashCode <flashcode@flashtux.org>
|
||||||
* See README for License detail, AUTHORS for developers list.
|
* See README for License detail, AUTHORS for developers list.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@@ -76,7 +76,8 @@ hotlist_find_pos (t_weechat_hotlist *new_hotlist)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
hotlist_add (int priority, t_irc_server *server, t_gui_buffer *buffer)
|
hotlist_add (int priority, t_irc_server *server, t_gui_buffer *buffer,
|
||||||
|
int allow_current_buffer)
|
||||||
{
|
{
|
||||||
t_weechat_hotlist *new_hotlist, *pos_hotlist;
|
t_weechat_hotlist *new_hotlist, *pos_hotlist;
|
||||||
|
|
||||||
@@ -84,7 +85,8 @@ hotlist_add (int priority, t_irc_server *server, t_gui_buffer *buffer)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/* do not highlight current buffer */
|
/* do not highlight current buffer */
|
||||||
if (buffer == gui_current_window->buffer)
|
if ((buffer == gui_current_window->buffer)
|
||||||
|
&& (!allow_current_buffer))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((pos_hotlist = hotlist_search (buffer)))
|
if ((pos_hotlist = hotlist_search (buffer)))
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user