mirror of
https://github.com/weechat/weechat.git
synced 2026-06-14 23:24:47 +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
|
||||
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
|
||||
locales supported by your system for your country by running the command
|
||||
`locale -a | grep '^LL''.
|
||||
locales supported by your system for your language by running the
|
||||
command `locale -a | grep '^LL''.
|
||||
|
||||
Not all programs have translations for all languages. By default, an
|
||||
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
|
||||
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
|
||||
PO files have been submitted to translation coordination, with a
|
||||
translation percentage of at least 50%.
|
||||
@@ -199,7 +199,7 @@ translation percentage of at least 50%.
|
||||
bibshelf | [] |
|
||||
binutils | [] |
|
||||
bison | [] [] |
|
||||
bison-runtime | |
|
||||
bison-runtime | [] |
|
||||
bluez-pin | [] [] [] [] [] |
|
||||
cflow | [] |
|
||||
clisp | [] [] |
|
||||
@@ -225,8 +225,8 @@ translation percentage of at least 50%.
|
||||
gbiff | [] |
|
||||
gcal | [] |
|
||||
gcc | [] |
|
||||
gettext-examples | [] [] [] [] |
|
||||
gettext-runtime | [] [] [] [] |
|
||||
gettext-examples | [] [] [] [] [] |
|
||||
gettext-runtime | [] [] [] [] [] |
|
||||
gettext-tools | [] [] |
|
||||
gimp-print | [] [] [] [] |
|
||||
gip | [] |
|
||||
@@ -303,7 +303,7 @@ translation percentage of at least 50%.
|
||||
libgphoto2 | [] [] |
|
||||
libgphoto2_port | [] [] |
|
||||
libgsasl | |
|
||||
libiconv | |
|
||||
libiconv | [] [] |
|
||||
libidn | [] [] |
|
||||
lifelines | [] () |
|
||||
lilypond | [] |
|
||||
@@ -342,7 +342,7 @@ translation percentage of at least 50%.
|
||||
sp | [] |
|
||||
stardict | [] |
|
||||
system-tools-ba... | [] [] [] [] [] [] [] [] [] |
|
||||
tar | |
|
||||
tar | [] |
|
||||
texinfo | [] [] [] |
|
||||
textutils | [] [] [] |
|
||||
tin | () () |
|
||||
@@ -360,7 +360,7 @@ translation percentage of at least 50%.
|
||||
xpad | [] [] |
|
||||
+----------------------------------------------------+
|
||||
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
|
||||
+--------------------------------------------------+
|
||||
@@ -478,10 +478,10 @@ translation percentage of at least 50%.
|
||||
libextractor | [] |
|
||||
libgpewidget | [] [] [] [] [] |
|
||||
libgpg-error | |
|
||||
libgphoto2 | [] [] |
|
||||
libgphoto2 | [] [] [] |
|
||||
libgphoto2_port | [] [] |
|
||||
libgsasl | [] [] |
|
||||
libiconv | |
|
||||
libiconv | [] |
|
||||
libidn | [] [] |
|
||||
lifelines | () |
|
||||
lilypond | [] |
|
||||
@@ -496,7 +496,7 @@ translation percentage of at least 50%.
|
||||
nano | [] () [] [] [] [] |
|
||||
nano_1_0 | [] [] [] [] [] |
|
||||
opcodes | [] [] [] [] |
|
||||
parted | [] [] [] |
|
||||
parted | [] [] [] [] |
|
||||
pilot-qof | |
|
||||
psmisc | [] [] [] |
|
||||
pwdutils | |
|
||||
@@ -520,11 +520,11 @@ translation percentage of at least 50%.
|
||||
sp | [] |
|
||||
stardict | [] |
|
||||
system-tools-ba... | [] [] [] [] [] [] [] [] |
|
||||
tar | [] [] [] [] [] |
|
||||
tar | [] [] [] [] [] [] |
|
||||
texinfo | [] [] |
|
||||
textutils | [] [] [] [] [] |
|
||||
tin | [] () |
|
||||
tp-robot | [] [] [] |
|
||||
tp-robot | [] [] [] [] |
|
||||
tuxpaint | [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | [] [] |
|
||||
@@ -538,7 +538,7 @@ translation percentage of at least 50%.
|
||||
xpad | [] [] [] |
|
||||
+--------------------------------------------------+
|
||||
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
|
||||
+--------------------------------------------------+
|
||||
@@ -640,14 +640,14 @@ translation percentage of at least 50%.
|
||||
iso_3166_2 | [] |
|
||||
iso_3166_3 | [] |
|
||||
iso_4217 | [] [] [] |
|
||||
iso_639 | [] [] [] |
|
||||
iso_639 | [] [] |
|
||||
jpilot | () () () |
|
||||
jtag | |
|
||||
jwhois | [] |
|
||||
kbd | [] |
|
||||
keytouch | [] |
|
||||
keytouch-editor | |
|
||||
keytouch-keyboa... | [] |
|
||||
keytouch-keyboa... | |
|
||||
latrine | [] |
|
||||
ld | |
|
||||
leafpad | [] [] |
|
||||
@@ -716,7 +716,7 @@ translation percentage of at least 50%.
|
||||
xpad | [] [] [] |
|
||||
+--------------------------------------------------+
|
||||
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
|
||||
+------------------------------------------------------+
|
||||
@@ -758,7 +758,7 @@ translation percentage of at least 50%.
|
||||
gawk | [] [] [] [] |
|
||||
gbiff | [] |
|
||||
gcal | [] |
|
||||
gcc | |
|
||||
gcc | [] |
|
||||
gettext-examples | [] [] [] [] [] [] [] [] |
|
||||
gettext-runtime | [] [] [] [] [] [] [] [] |
|
||||
gettext-tools | [] [] [] [] [] [] [] |
|
||||
@@ -835,7 +835,7 @@ translation percentage of at least 50%.
|
||||
libgpewidget | [] [] [] [] [] [] [] |
|
||||
libgpg-error | [] [] |
|
||||
libgphoto2 | [] |
|
||||
libgphoto2_port | [] [] |
|
||||
libgphoto2_port | [] [] [] |
|
||||
libgsasl | [] [] [] [] |
|
||||
libiconv | |
|
||||
libidn | [] [] () |
|
||||
@@ -894,7 +894,7 @@ translation percentage of at least 50%.
|
||||
xpad | [] [] [] |
|
||||
+------------------------------------------------------+
|
||||
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
|
||||
+---------------------------------------------------+
|
||||
@@ -911,7 +911,7 @@ translation percentage of at least 50%.
|
||||
bibshelf | [] | 7
|
||||
binutils | [] [] [] | 9
|
||||
bison | [] [] [] | 19
|
||||
bison-runtime | [] [] [] | 15
|
||||
bison-runtime | [] [] [] | 16
|
||||
bluez-pin | [] [] [] [] [] [] | 28
|
||||
cflow | [] [] | 4
|
||||
clisp | | 6
|
||||
@@ -936,9 +936,9 @@ translation percentage of at least 50%.
|
||||
gawk | [] [] | 15
|
||||
gbiff | [] | 5
|
||||
gcal | [] | 5
|
||||
gcc | [] [] [] | 5
|
||||
gettext-examples | [] [] [] [] [] | 24
|
||||
gettext-runtime | [] [] [] [] [] | 26
|
||||
gcc | [] [] [] | 6
|
||||
gettext-examples | [] [] [] [] [] [] | 26
|
||||
gettext-runtime | [] [] [] [] [] [] | 28
|
||||
gettext-tools | [] [] [] [] [] | 19
|
||||
gimp-print | [] [] | 12
|
||||
gip | [] [] | 12
|
||||
@@ -996,26 +996,26 @@ translation percentage of at least 50%.
|
||||
iso_3166_2 | | 2
|
||||
iso_3166_3 | [] [] | 9
|
||||
iso_4217 | [] [] | 14
|
||||
iso_639 | [] [] | 16
|
||||
iso_639 | [] | 14
|
||||
jpilot | [] [] [] [] | 7
|
||||
jtag | [] | 3
|
||||
jwhois | [] [] [] | 13
|
||||
kbd | [] [] | 12
|
||||
keytouch | [] | 4
|
||||
keytouch-editor | | 2
|
||||
keytouch-keyboa... | [] | 4
|
||||
keytouch-keyboa... | | 2
|
||||
latrine | [] [] | 8
|
||||
ld | [] [] [] | 7
|
||||
ld | [] [] [] [] | 8
|
||||
leafpad | [] [] [] [] | 23
|
||||
libc | [] [] [] | 23
|
||||
libexif | [] | 4
|
||||
libextractor | [] | 5
|
||||
libgpewidget | [] [] [] | 19
|
||||
libgpg-error | [] | 4
|
||||
libgphoto2 | [] | 7
|
||||
libgphoto2_port | [] [] [] | 10
|
||||
libgphoto2 | [] | 8
|
||||
libgphoto2_port | [] [] [] | 11
|
||||
libgsasl | [] | 8
|
||||
libiconv | | 0
|
||||
libiconv | [] | 4
|
||||
libidn | [] [] | 10
|
||||
lifelines | | 4
|
||||
lilypond | | 2
|
||||
@@ -1030,7 +1030,7 @@ translation percentage of at least 50%.
|
||||
nano | [] [] | 15
|
||||
nano_1_0 | [] [] [] | 18
|
||||
opcodes | [] [] | 10
|
||||
parted | [] [] [] | 9
|
||||
parted | [] [] [] | 10
|
||||
pilot-qof | [] | 3
|
||||
psmisc | [] | 10
|
||||
pwdutils | [] | 3
|
||||
@@ -1038,7 +1038,7 @@ translation percentage of at least 50%.
|
||||
qof | [] | 2
|
||||
radius | [] | 6
|
||||
recode | [] [] [] | 25
|
||||
rpm | [] [] [] | 13
|
||||
rpm | [] [] [] [] | 14
|
||||
screem | [] | 2
|
||||
scrollkeeper | [] [] [] [] | 26
|
||||
sed | [] [] [] | 22
|
||||
@@ -1054,11 +1054,11 @@ translation percentage of at least 50%.
|
||||
sp | [] | 3
|
||||
stardict | [] [] [] [] | 11
|
||||
system-tools-ba... | [] [] [] [] [] [] [] | 37
|
||||
tar | [] [] [] [] | 17
|
||||
tar | [] [] [] [] | 19
|
||||
texinfo | [] [] [] | 15
|
||||
textutils | [] [] [] | 17
|
||||
tin | | 1
|
||||
tp-robot | [] [] [] | 9
|
||||
tp-robot | [] [] [] | 10
|
||||
tuxpaint | [] [] [] | 16
|
||||
unicode-han-tra... | | 0
|
||||
unicode-transla... | | 2
|
||||
@@ -1072,7 +1072,7 @@ translation percentage of at least 50%.
|
||||
xpad | [] [] [] | 14
|
||||
+---------------------------------------------------+
|
||||
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
|
||||
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
|
||||
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
|
||||
matrix with full percentage details can be found at
|
||||
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
||||
|
||||
@@ -9,17 +9,11 @@ Developers:
|
||||
FlashCode <flashcode@flashtux.org>
|
||||
Web : http://weechat.flashtux.org
|
||||
IRC : nick is "FlashCode" @ irc.freenode.net
|
||||
Jabber: flashcode@jabber.org
|
||||
ICQ : 160677660
|
||||
AIM : FlashCode AIM
|
||||
Yahoo : FlashCode_Y
|
||||
|
||||
* Scripts plugins
|
||||
|
||||
Kolter <kolter@openics.org>
|
||||
Web : http://kolter.free.fr
|
||||
kolter <kolter@openics.org>
|
||||
IRC : nick is "kolter" @ irc.freenode.net
|
||||
Jabber: kolter@im.openics.org
|
||||
|
||||
|
||||
Debian packager:
|
||||
@@ -47,7 +41,7 @@ Pavel Shevchuk, IRC: "Stalwart"
|
||||
=====
|
||||
|
||||
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.
|
||||
|
||||
@@ -1,7 +1,81 @@
|
||||
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):
|
||||
* 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
|
||||
* fixed display bug with special char (bug #16732)
|
||||
* added color encoding for some commands like /me
|
||||
* added aspell plugin
|
||||
* renamed plugins names (removed "lib" prefix in name)
|
||||
* 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)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
WeeChat FAQ, 2006-08-19
|
||||
WeeChat FAQ, 2007-01-06
|
||||
=======================
|
||||
|
||||
Intended audience:
|
||||
@@ -75,15 +75,25 @@ A: For help you can type /help. For help about a command, type /help command.
|
||||
|
||||
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?
|
||||
|
||||
A: You have to setup charset used for decoding (ISO and UTF), encoding, and
|
||||
internal WeeChat charset.
|
||||
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?
|
||||
|
||||
@@ -92,7 +102,7 @@ A: Key bindings are customizable with /key command.
|
||||
in input zone.
|
||||
|
||||
|
||||
2.5
|
||||
2.6
|
||||
================================================================================
|
||||
Q: How can I load Perl scripts?
|
||||
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.
|
||||
|
||||
|
||||
2.6
|
||||
2.7
|
||||
================================================================================
|
||||
Q: How can I load Python scripts?
|
||||
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.
|
||||
|
||||
|
||||
2.7
|
||||
2.8
|
||||
================================================================================
|
||||
Q: How can I load Ruby scripts?
|
||||
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.
|
||||
|
||||
|
||||
2.8
|
||||
2.9
|
||||
================================================================================
|
||||
Q: How can I load Lua scripts?
|
||||
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.
|
||||
|
||||
|
||||
2.9
|
||||
2.10
|
||||
================================================================================
|
||||
Q: When I'm using weechat under screen, I have weird chars, when I switch
|
||||
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).
|
||||
|
||||
|
||||
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
|
||||
================================================================================
|
||||
Q: How should I report bugs?
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
WeeChat FAQ, 2006-08-19
|
||||
WeeChat FAQ, 2007-01-06
|
||||
=======================
|
||||
|
||||
Public concerné :
|
||||
@@ -79,16 +79,28 @@ R: Pour obtenir de l'aide tapez /help. Pour de l'aide sur une commande,
|
||||
|
||||
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 ?
|
||||
|
||||
R: Il faut configurer le charset utilisé pour le décodage (ISO et UTF),
|
||||
l'encodage ainsi que le charset interne Ă 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
|
||||
le nom de la locale).
|
||||
n'arrive pas à déterminer votre locale.
|
||||
|
||||
|
||||
2.4
|
||||
2.5
|
||||
================================================================================
|
||||
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.
|
||||
|
||||
|
||||
2.5
|
||||
2.6
|
||||
================================================================================
|
||||
Q: Comment puis-je charger des scripts Perl ?
|
||||
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.
|
||||
|
||||
|
||||
2.6
|
||||
2.7
|
||||
================================================================================
|
||||
Q: Comment puis-je charger les scripts Python ?
|
||||
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.
|
||||
|
||||
|
||||
2.7
|
||||
2.8
|
||||
================================================================================
|
||||
Q: Comment puis-je charger des scripts Ruby ?
|
||||
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.
|
||||
|
||||
|
||||
2.8
|
||||
2.9
|
||||
================================================================================
|
||||
Q: Comment puis-je charger des scripts Lua ?
|
||||
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.
|
||||
|
||||
|
||||
2.9
|
||||
2.10
|
||||
================================================================================
|
||||
Q: Quand j'utilise weechat sous screen, j'ai des caractères bizarres
|
||||
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).
|
||||
|
||||
|
||||
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
|
||||
================================================================================
|
||||
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
|
||||
# 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/copyright debian/compat \
|
||||
debian/rules debian/weechat-common.docs \
|
||||
debian/lintian-override \
|
||||
debian/weechat-common.install debian/weechat-curses.dirs \
|
||||
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
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
@@ -1,8 +1,41 @@
|
||||
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
|
||||
|
||||
WeeChat 0.2.0 released.
|
||||
|
||||
Important release notes:
|
||||
|
||||
- if you upgraded with /upgrade in WeeChat, you should /disconnect and
|
||||
|
||||
@@ -22,7 +22,7 @@ Features
|
||||
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)
|
||||
|
||||
WeeChat is distributed under GPL licence (see COPYING file for complete license):
|
||||
|
||||
+61
-18
@@ -1,20 +1,63 @@
|
||||
#!/bin/sh
|
||||
|
||||
# gettextize updates Makefile.am, configure.in
|
||||
cp configure.in configure.in.old
|
||||
cp Makefile.am Makefile.am.old
|
||||
if test "$1" = "--auto" ; then
|
||||
grep -v 'read dummy < /dev/tty' $(which gettextize) | /bin/sh -s -- --copy --force --intl --no-changelog
|
||||
else
|
||||
gettextize --copy --force --intl --no-changelog
|
||||
fi
|
||||
mv Makefile.am.old Makefile.am
|
||||
mv configure.in.old configure.in
|
||||
libtoolize --automake --force --copy
|
||||
aclocal
|
||||
# autoheader creates config.h.in needed by autoconf
|
||||
autoheader
|
||||
# autoconf creates configure
|
||||
autoconf
|
||||
# automake creates Makefile.in
|
||||
automake --add-missing --copy --gnu
|
||||
###
|
||||
### common stuff
|
||||
###
|
||||
OK="\\033[70G[\\033[1;32mOK\\033[1;00m]"
|
||||
FAIL="\\033[70G[\\033[1;31mFAILED\\033[1;00m]"
|
||||
|
||||
AUTOGEN_LOG=autogen.log
|
||||
|
||||
err ()
|
||||
{
|
||||
echo "-------"
|
||||
echo "Error :"
|
||||
echo "---8<-----------------------------------"
|
||||
cat $AUTOGEN_LOG
|
||||
echo "----------------------------------->8---"
|
||||
exit 1
|
||||
}
|
||||
|
||||
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
|
||||
# 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.
|
||||
|
||||
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])
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AM_INIT_AUTOMAKE([weechat], [0.2.0])
|
||||
AM_INIT_AUTOMAKE([weechat], [0.2.2])
|
||||
|
||||
# Checks for programs
|
||||
AC_PROG_CC
|
||||
AC_PROG_MAKE_SET
|
||||
AC_GNU_SOURCE
|
||||
AM_PROG_LIBTOOL
|
||||
AC_CHECK_PROG(DBLATEX_FOUND, "dblatex", "yes")
|
||||
|
||||
# Add some flags for some OS
|
||||
case "$host_os" in
|
||||
@@ -48,7 +50,8 @@ esac
|
||||
|
||||
# Gettext
|
||||
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
|
||||
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.
|
||||
AC_FUNC_SELECT_ARGTYPES
|
||||
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
|
||||
|
||||
@@ -97,6 +100,7 @@ AH_VERBATIM([PLUGIN_PYTHON], [#undef PLUGIN_PYTHON])
|
||||
AH_VERBATIM([PLUGIN_RUBY], [#undef PLUGIN_RUBY])
|
||||
AH_VERBATIM([PLUGIN_LUA], [#undef PLUGIN_LUA])
|
||||
AH_VERBATIM([PLUGIN_ASPELL], [#undef PLUGIN_ASPELL])
|
||||
AH_VERBATIM([PLUGIN_CHARSET], [#undef PLUGIN_CHARSET])
|
||||
AH_VERBATIM([HAVE_GNUTLS], [#undef HAVE_GNUTLS])
|
||||
AH_VERBATIM([HAVE_FLOCK], [#undef HAVE_FLOCK])
|
||||
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(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(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(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)
|
||||
@@ -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-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(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(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_LFLAGS=""
|
||||
|
||||
AC_CHECK_HEADER(iconv.h,ac_found_iconv_header="yes",ac_found_iconv_header="no")
|
||||
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")
|
||||
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
|
||||
LIBS="$LIBS -liconv"
|
||||
ICONV_LFLAGS="-liconv"
|
||||
LIBS="$LIBS $ICONV_LFLAGS"
|
||||
fi
|
||||
AC_MSG_CHECKING(for iconv usability in programs)
|
||||
AC_TRY_RUN([
|
||||
@@ -237,9 +247,11 @@ if test "x$enable_plugins" != "xyes" ; then
|
||||
enable_ruby="no"
|
||||
enable_lua="no"
|
||||
enable_aspell="no"
|
||||
enable_charset="no"
|
||||
fi
|
||||
|
||||
# ---------------------------------- perl --------------------------------------
|
||||
PERL_VERSION=
|
||||
|
||||
if test "x$enable_perl" = "xyes" ; then
|
||||
enable_plugins="yes"
|
||||
@@ -253,6 +265,7 @@ if test "x$enable_perl" = "xyes" ; then
|
||||
enable_perl="no"
|
||||
not_found="$not_found perl"
|
||||
else
|
||||
PERL_VERSION=`perl -V:version | sed "s/version='\(.*\)';/\1/"`
|
||||
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`
|
||||
@@ -262,7 +275,7 @@ if test "x$enable_perl" = "xyes" ; then
|
||||
AC_MSG_RESULT(found)
|
||||
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`
|
||||
if test "x$PERL_LIB_TEST" = "x0" ; then
|
||||
if test "x$PERL_LIB_TEST" = "x0" ; then
|
||||
PERL_LFLAGS=`$PERL -MExtUtils::Embed -e ldopts`
|
||||
AC_MSG_RESULT(found)
|
||||
else
|
||||
@@ -291,11 +304,12 @@ if test "x$enable_perl" = "xyes" ; then
|
||||
fi
|
||||
|
||||
# --------------------------------- python -------------------------------------
|
||||
PYTHON_VERSION=
|
||||
|
||||
if test "x$enable_python" = "xyes" ; then
|
||||
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
|
||||
AC_MSG_WARN([
|
||||
*** 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
|
||||
|
||||
# ---------------------------------- ruby --------------------------------------
|
||||
RUBY_VERSION=
|
||||
|
||||
if test "x$enable_ruby" = "xyes" ; then
|
||||
enable_plugins="yes"
|
||||
@@ -363,6 +378,7 @@ if test "x$enable_ruby" = "xyes" ; then
|
||||
enable_ruby="no"
|
||||
not_found="$not_found ruby"
|
||||
else
|
||||
RUBY_VERSION=`$RUBY -rrbconfig -e "puts Config::CONFIG[['ruby_version']]"`
|
||||
RUBY_INCLUDE=`$RUBY -rrbconfig -e "puts Config::CONFIG[['archdir']]"`
|
||||
AC_MSG_CHECKING(for Ruby header files)
|
||||
if test -r "$RUBY_INCLUDE/ruby.h"; then
|
||||
@@ -387,6 +403,7 @@ if test "x$enable_ruby" = "xyes" ; then
|
||||
fi
|
||||
|
||||
# ---------------------------------- lua --------------------------------------
|
||||
LUA_VERSION=
|
||||
|
||||
if test "x$enable_lua" = "xyes" ; then
|
||||
enable_plugins="yes"
|
||||
@@ -412,13 +429,18 @@ if test "x$enable_lua" = "xyes" ; then
|
||||
if test "x$PKGCONFIG" != "x"; then
|
||||
AC_MSG_CHECKING(for Lua headers and librairies with pkg-config)
|
||||
echo
|
||||
for l in "$lua_suffix" "" "50" "5.0" "51" "5.1" ; do
|
||||
pkgconfig_lua_found=`$PKGCONFIG --exists lua$l 2>/dev/null && $PKGCONFIG --exists lualib$l 2>/dev/null`
|
||||
for l in "$lua_suffix" "" "51" "5.1" "50" "5.0" ; do
|
||||
pkgconfig_lua_found=`$PKGCONFIG --exists lua$l 2>/dev/null`
|
||||
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 lualib$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
|
||||
fi
|
||||
done
|
||||
@@ -427,12 +449,13 @@ if test "x$enable_lua" = "xyes" ; then
|
||||
|
||||
if test "x$LUA_CFLAGS" = "x" -o "x$LUA_LFLAGS" = "x" ; then
|
||||
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
|
||||
AC_MSG_CHECKING(for Lua headers and librairies with lua-config)
|
||||
echo
|
||||
LUA_CFLAGS=`$LUACONFIG --include`
|
||||
LUA_LFLAGS=`$LUACONFIG --libs`
|
||||
LUA_VERSION="5.0.x"
|
||||
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
|
||||
LUA_CFLAGS="$CFLAGS"
|
||||
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")
|
||||
if test "x$ac_found_lua_lib" = "xyes" ; then
|
||||
LUA_VERSION=">=5.1.0"
|
||||
|
||||
LUA_LFLAGS="$LDFLAGS -llua$l -lm"
|
||||
|
||||
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")
|
||||
if test "x$ac_found_liblua_lib" = "xyes" ; then
|
||||
LUA_VERSION="5.0.x"
|
||||
|
||||
LUA_LFLAGS="$LUA_LFLAGS -llualib$l"
|
||||
|
||||
if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then
|
||||
@@ -470,7 +497,7 @@ if test "x$enable_lua" = "xyes" ; then
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
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`
|
||||
if test "x$LUA_TEST" != "x0" ; then
|
||||
@@ -528,6 +555,19 @@ if test "x$enable_aspell" = "xyes" ; then
|
||||
AC_DEFINE(PLUGIN_ASPELL)
|
||||
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
|
||||
# ------------------------------------------------------------------------------
|
||||
@@ -551,6 +591,7 @@ if test "x$enable_plugins" = "xyes" ; then
|
||||
enable_ruby="no"
|
||||
enable_lua="no"
|
||||
enable_aspell="no"
|
||||
enable_charset="no"
|
||||
not_found="$not_found plugins"
|
||||
fi
|
||||
fi
|
||||
@@ -617,6 +658,12 @@ fi
|
||||
# documentation
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
msg_doc=""
|
||||
|
||||
if test "x$DBLATEX_FOUND" = "xyes"; then
|
||||
msg_doc="pdf $msg_doc"
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(for html/chunk.xsl)
|
||||
DOC_XSL_PREFIX=""
|
||||
|
||||
@@ -633,9 +680,8 @@ for p in $doc_xsl_prefix_path; do
|
||||
fi
|
||||
done
|
||||
|
||||
if test "x$DOC_XSL_PREFIX" == "x"; then
|
||||
if test "x$DOC_XSL_PREFIX" = "x"; then
|
||||
AC_MSG_RESULT(no)
|
||||
enable_doc="no"
|
||||
AC_MSG_WARN([
|
||||
*** Docbook XSL files not found
|
||||
*** WeeChat will be built without documentation.
|
||||
@@ -643,7 +689,7 @@ if test "x$DOC_XSL_PREFIX" == "x"; then
|
||||
else
|
||||
AC_MSG_RESULT($DOC_XSL_PREFIX)
|
||||
AC_SUBST(DOC_XSL_PREFIX)
|
||||
enable_doc="yes"
|
||||
msg_doc="html $msg_doc"
|
||||
fi
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
@@ -736,8 +782,10 @@ AM_CONDITIONAL(PLUGIN_PYTHON, test "$enable_python" = "yes")
|
||||
AM_CONDITIONAL(PLUGIN_RUBY, test "$enable_ruby" = "yes")
|
||||
AM_CONDITIONAL(PLUGIN_LUA, test "$enable_lua" = "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_FLOCK, test "$enable_flock" = "yes")
|
||||
AM_CONDITIONAL(DBLATEX_FOUND, test "$DBLATEX_FOUND" = "yes")
|
||||
|
||||
AC_OUTPUT([Makefile
|
||||
doc/Makefile
|
||||
@@ -756,7 +804,8 @@ AC_OUTPUT([Makefile
|
||||
src/plugins/scripts/python/Makefile
|
||||
src/plugins/scripts/ruby/Makefile
|
||||
src/plugins/scripts/lua/Makefile
|
||||
src/plugins/aspell/Makefile
|
||||
src/plugins/aspell/Makefile
|
||||
src/plugins/charset/Makefile
|
||||
src/gui/Makefile
|
||||
src/gui/curses/Makefile
|
||||
src/gui/wxwidgets/Makefile
|
||||
@@ -804,19 +853,42 @@ if test "x$debug" = "x2" ; then
|
||||
msg_debug_verbose="yes"
|
||||
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 "Interfaces........................ :$listgui"
|
||||
echo "Build with GNUtls support......... : $enable_gnutls"
|
||||
echo "Build with flock support.......... : $enable_flock"
|
||||
echo "Build with Plugin support......... : $enable_plugins"
|
||||
echo " Perl plugin......... : $enable_perl"
|
||||
echo " Python plugin....... : $enable_python"
|
||||
echo " Ruby plugin......... : $enable_ruby"
|
||||
echo " Lua plugin.......... : $enable_lua"
|
||||
echo " Perl plugin......... : $enable_perl $PERL_STATUS"
|
||||
echo " Python plugin....... : $enable_python $PYTHON_STATUS"
|
||||
echo " Ruby plugin......... : $enable_ruby $RUBY_STATUS"
|
||||
echo " Lua plugin.......... : $enable_lua $LUA_STATUS"
|
||||
echo " Aspell plugin....... : $enable_aspell"
|
||||
echo " Charset plugin...... : $enable_charset"
|
||||
echo "Compile with debug info........... : $msg_debug_compiler"
|
||||
echo " Backtrace........... : $enable_backtrace"
|
||||
echo "Build doc..........................: $enable_doc"
|
||||
echo "Build doc..........................: $msg_doc"
|
||||
echo "Print debugging messages.......... : $msg_debug_verbose"
|
||||
echo ""
|
||||
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
|
||||
|
||||
* Remove gnutls Build-Depends introduced in the previous upload
|
||||
|
||||
Vendored
+1
-1
@@ -4,7 +4,7 @@ Priority: optional
|
||||
Maintainer: Sebastien Helleu <flashcode@flashtux.org>
|
||||
Uploaders: Julien Louis <ptitlouis@sysif.net>
|
||||
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
|
||||
|
||||
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 -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
|
||||
# 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
|
||||
|
||||
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
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
#!/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
|
||||
# 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
|
||||
# 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
|
||||
# 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)
|
||||
|
||||
if DBLATEX_FOUND
|
||||
PDF = pdf-stamp
|
||||
endif
|
||||
|
||||
docdir = $(datadir)/doc/$(PACKAGE)
|
||||
|
||||
all-local: html-stamp
|
||||
all-local: html-stamp $(PDF)
|
||||
|
||||
# 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/
|
||||
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-data-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||
$(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||
$(INSTALL_DATA) $(QUICKSTART) $(DESTDIR)$(docdir)/
|
||||
if DBLATEX_FOUND
|
||||
$(INSTALL_DATA) $(BOOK).pdf $(DESTDIR)$(docdir)/
|
||||
endif
|
||||
|
||||
# clean
|
||||
|
||||
clean-local:
|
||||
-rm -f $(BOOK).html $(BOOK).pdf $(BOOK).txt date.xml
|
||||
-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>WeeChat-Slogan (wenn leer, wird keiner benutzt)</entry>
|
||||
</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>
|
||||
<entry><option>look_one_server_buffer</option></entry>
|
||||
<entry>Boolean</entry>
|
||||
@@ -138,6 +110,13 @@
|
||||
<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>
|
||||
</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>
|
||||
<entry><option>look_no_nickname</option></entry>
|
||||
<entry>Zeichenfolge</entry>
|
||||
@@ -320,6 +299,13 @@
|
||||
<entry>'default'</entry>
|
||||
<entry>Textfarbe der Titelleiste</entry>
|
||||
</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>
|
||||
<entry><option>col_title_bg</option></entry>
|
||||
<entry>Farbe</entry>
|
||||
@@ -915,10 +901,17 @@
|
||||
<entry>5</entry>
|
||||
<entry>Maximal-Lag bis zum Trennen der Verbindung (in Minuten - 0: nie trennen)</entry>
|
||||
</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>
|
||||
<entry><option>irc_fifo_pipe</option></entry>
|
||||
<entry>Boolean</entry>
|
||||
<entry>zwischen 0 und 2147483647</entry>
|
||||
<entry>zwischen 0 und 5</entry>
|
||||
<entry>'off'</entry>
|
||||
<entry>Einen FIFO zur Fernsteuerung des Clients von anderen Prozessen öffnen</entry>
|
||||
</row>
|
||||
@@ -943,6 +936,13 @@
|
||||
<entry>'on'</entry>
|
||||
<entry>Erlaube Benutzern, spezielle Codes zu versenden (%B=fett, %Cxx,yy=Farbe, %U=unterstrichen, %R=reverse/umgekehrt)</entry>
|
||||
</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>
|
||||
<entry><option>dcc_auto_accept_files</option></entry>
|
||||
<entry>Boolean</entry>
|
||||
@@ -1207,7 +1207,7 @@
|
||||
<entry>Zeichenfolge</entry>
|
||||
<entry>eine beliebige Zeichenfolge</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>
|
||||
<entry><option>server_command_delay</option></entry>
|
||||
@@ -1235,26 +1235,5 @@
|
||||
<entry>Zeichenfolge</entry>
|
||||
<entry>eine beliebige Zeichenfolge</entry>
|
||||
<entry>''</entry>
|
||||
<entry>Durch Kommata getrennte Liste der Notify-Levels fĂĽr die Channels auf diesem Server (Format: #channel:1,...)</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>
|
||||
<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>
|
||||
|
||||
@@ -42,12 +42,12 @@ Nicknames oder Hosts sperren/verbannen
|
||||
Nickname: zu sperrender User oder Host
|
||||
|
||||
</programlisting>
|
||||
<command>ctcp Nickname Typ [Argumente]</command>
|
||||
<command>ctcp Empfänger Typ [Argumente]</command>
|
||||
<programlisting>
|
||||
CTCP-Nachricht verschicken
|
||||
|
||||
Nickname: User, an den die CTCP-Nachricht geschickt werden soll
|
||||
Typ: Typ der CTCP-Nachricht (z.B. "version", "ping", ...)
|
||||
Empfänger: User, an den die CTCP-Nachricht geschickt werden soll
|
||||
Typ: Typ der CTCP-Nachricht (z.B. "version", "ping", ..)
|
||||
Argumente: Argumente fĂĽr CTCP
|
||||
|
||||
</programlisting>
|
||||
|
||||
@@ -117,6 +117,14 @@
|
||||
<entry><literal>scroll_bottom</literal></entry>
|
||||
<entry>nach ganz unten scrollen</entry>
|
||||
</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>
|
||||
<entry><literal>nick_beginning</literal></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)
|
||||
Argumente: Argumente fĂĽr den Befehl
|
||||
|
||||
</programlisting>
|
||||
<command>wird durch alle Argumente ersetzt.</command>
|
||||
<programlisting>
|
||||
</programlisting>
|
||||
<command>buffer [Aktion [Argumente] | Nummer | [[Server] [Channel]]]</command>
|
||||
<programlisting>
|
||||
@@ -23,6 +26,7 @@ Puffer verwalten
|
||||
close: Puffer schlieĂźen (eine Part-Message kann optional angegeben werden)
|
||||
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)
|
||||
(wenn der Befehl in einem Server Puffer ausgefĂĽhrt wird, setzt er den Default-Notify-Level fĂĽr den ganzen Server)
|
||||
Server
|
||||
Channel: gehe zum Puffer mit Servernamen oder Channelnamen
|
||||
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)
|
||||
|
||||
|
||||
</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>
|
||||
<command>clear [-all]</command>
|
||||
<programlisting>
|
||||
@@ -114,23 +108,28 @@ Bei jedem Argument steht '*' f
|
||||
Ohne Argumente listet /ignore alle definierten /ignore-Regeln auf.
|
||||
|
||||
</programlisting>
|
||||
<command>key [Taste Funktion/Befehl] [unbind Taste] [functions] [reset -yes]</command>
|
||||
<command>key [Taste [Funktion/Befehl]] [unbind Taste] [functions] [reset -yes]</command>
|
||||
<programlisting>
|
||||
belegen/freigeben von Tasten
|
||||
|
||||
Taste: diese Taste mit einer internen Funktion oder einem Befehl, beginnend mit "/", belegen
|
||||
unbind: Tastenbelegung aufheben
|
||||
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>
|
||||
<command>plugin [load Dateiname] | [autoload] | [reload] | [unload]</command>
|
||||
<command>plugin [list [Name]] | [listfull [Name]] | [load Dateiname] | [autoload] | [reload [Name]] | [unload [Name]]</command>
|
||||
<programlisting>
|
||||
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>
|
||||
<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
|
||||
# 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)
|
||||
|
||||
if DBLATEX_FOUND
|
||||
PDF = pdf-stamp
|
||||
endif
|
||||
|
||||
docdir = $(datadir)/doc/$(PACKAGE)
|
||||
|
||||
all-local: html-stamp
|
||||
all-local: html-stamp $(PDF)
|
||||
|
||||
# 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/
|
||||
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-data-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||
$(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||
$(INSTALL_DATA) $(QUICKSTART) $(DESTDIR)$(docdir)/
|
||||
if DBLATEX_FOUND
|
||||
$(INSTALL_DATA) $(BOOK).pdf $(DESTDIR)$(docdir)/
|
||||
endif
|
||||
|
||||
# clean
|
||||
|
||||
clean-local:
|
||||
-rm -f $(BOOK).html $(BOOK).pdf $(BOOK).txt date.xml
|
||||
-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>WeeChat slogan (if empty, slogan is not used)</entry>
|
||||
</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>
|
||||
<entry><option>look_one_server_buffer</option></entry>
|
||||
<entry>boolean</entry>
|
||||
@@ -138,6 +110,13 @@
|
||||
<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>
|
||||
</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>
|
||||
<entry><option>look_no_nickname</option></entry>
|
||||
<entry>string</entry>
|
||||
@@ -320,6 +299,13 @@
|
||||
<entry>'default'</entry>
|
||||
<entry>Color for title bar</entry>
|
||||
</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>
|
||||
<entry><option>col_title_bg</option></entry>
|
||||
<entry>color</entry>
|
||||
@@ -915,6 +901,13 @@
|
||||
<entry>5</entry>
|
||||
<entry>Disconnect after important lag (in minutes, 0 = never disconnect)</entry>
|
||||
</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>
|
||||
<entry><option>irc_fifo_pipe</option></entry>
|
||||
<entry>boolean</entry>
|
||||
@@ -943,6 +936,13 @@
|
||||
<entry>'on'</entry>
|
||||
<entry>Allow user to send colors with special codes (%B=bold, %Cxx,yy=color, %U=underline, %R=reverse)</entry>
|
||||
</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>
|
||||
<entry><option>dcc_auto_accept_files</option></entry>
|
||||
<entry>boolean</entry>
|
||||
@@ -1207,7 +1207,7 @@
|
||||
<entry>string</entry>
|
||||
<entry>any string</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>
|
||||
<entry><option>server_command_delay</option></entry>
|
||||
@@ -1235,26 +1235,5 @@
|
||||
<entry>string</entry>
|
||||
<entry>any string</entry>
|
||||
<entry>''</entry>
|
||||
<entry>Comma separated list of notify levels for channels of this server (format: #channel:1,..)</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>
|
||||
<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>
|
||||
|
||||
@@ -42,11 +42,11 @@ bans nicks or hosts
|
||||
nickname: user or host to ban
|
||||
|
||||
</programlisting>
|
||||
<command>ctcp nickname type [arguments]</command>
|
||||
<command>ctcp receiver type [arguments]</command>
|
||||
<programlisting>
|
||||
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", ..)
|
||||
arguments: arguments for CTCP
|
||||
|
||||
|
||||
@@ -117,6 +117,14 @@
|
||||
<entry><literal>scroll_bottom</literal></entry>
|
||||
<entry>scroll to bottom of buffer</entry>
|
||||
</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>
|
||||
<entry><literal>nick_beginning</literal></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)
|
||||
arguments: arguments for command
|
||||
|
||||
</programlisting>
|
||||
<command>is replaced by all arguments.</command>
|
||||
<programlisting>
|
||||
</programlisting>
|
||||
<command>buffer [action [args] | number | [[server] [channel]]]</command>
|
||||
<programlisting>
|
||||
@@ -23,7 +26,8 @@ manage buffers
|
||||
close: close buffer (optional arg is part message, for a channel)
|
||||
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)
|
||||
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
|
||||
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)
|
||||
|
||||
|
||||
</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>
|
||||
<command>clear [-all]</command>
|
||||
<programlisting>
|
||||
@@ -113,23 +107,28 @@ For each argument, '*' means all.
|
||||
Without argument, /ignore command lists all defined ignore.
|
||||
|
||||
</programlisting>
|
||||
<command>key [key function/command] [unbind key] [functions] [reset -yes]</command>
|
||||
<command>key [key [function/command]] [unbind key] [functions] [reset -yes]</command>
|
||||
<programlisting>
|
||||
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
|
||||
functions: list internal functions for key bindings
|
||||
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
|
||||
|
||||
</programlisting>
|
||||
<command>plugin [load filename] | [autoload] | [reload] | [unload]</command>
|
||||
<command>plugin [list [name]] | [listfull [name]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
|
||||
<programlisting>
|
||||
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>
|
||||
<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
|
||||
# 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)
|
||||
|
||||
if DBLATEX_FOUND
|
||||
PDF = pdf-stamp
|
||||
endif
|
||||
|
||||
docdir = $(datadir)/doc/$(PACKAGE)
|
||||
|
||||
all-local: html-stamp
|
||||
all-local: html-stamp $(PDF)
|
||||
|
||||
# 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/
|
||||
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-data-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||
$(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/$(LANGCODE)/
|
||||
$(INSTALL_DATA) $(QUICKSTART) $(DESTDIR)$(docdir)/
|
||||
if DBLATEX_FOUND
|
||||
$(INSTALL_DATA) $(BOOK).pdf $(DESTDIR)$(docdir)/
|
||||
endif
|
||||
|
||||
# clean
|
||||
|
||||
clean-local:
|
||||
-rm -f $(BOOK).html $(BOOK).pdf $(BOOK).txt date.xml
|
||||
-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>Slogan WeeChat (si vide, le slogan ne sera pas utilisé)</entry>
|
||||
</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>
|
||||
<entry><option>look_one_server_buffer</option></entry>
|
||||
<entry>booléen</entry>
|
||||
@@ -138,6 +110,13 @@
|
||||
<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>
|
||||
</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>
|
||||
<entry><option>look_no_nickname</option></entry>
|
||||
<entry>chaîne</entry>
|
||||
@@ -320,6 +299,13 @@
|
||||
<entry>'default'</entry>
|
||||
<entry>Couleur pour la barre de titre</entry>
|
||||
</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>
|
||||
<entry><option>col_title_bg</option></entry>
|
||||
<entry>couleur</entry>
|
||||
@@ -915,6 +901,13 @@
|
||||
<entry>5</entry>
|
||||
<entry>Déconnexion après un lag important (en minutes, 0 = ne jamais se déconnecter)</entry>
|
||||
</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>
|
||||
<entry><option>irc_fifo_pipe</option></entry>
|
||||
<entry>booléen</entry>
|
||||
@@ -943,6 +936,13 @@
|
||||
<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>
|
||||
</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>
|
||||
<entry><option>dcc_auto_accept_files</option></entry>
|
||||
<entry>booléen</entry>
|
||||
@@ -1207,7 +1207,7 @@
|
||||
<entry>chaîne</entry>
|
||||
<entry>toute chaîne</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>
|
||||
<entry><option>server_command_delay</option></entry>
|
||||
@@ -1235,26 +1235,5 @@
|
||||
<entry>chaîne</entry>
|
||||
<entry>toute chaîne</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>
|
||||
</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>
|
||||
<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>
|
||||
|
||||
@@ -42,11 +42,11 @@ bannit des pseudos ou masques
|
||||
pseudo: pseudo ou masque pour le bannissement
|
||||
|
||||
</programlisting>
|
||||
<command>ctcp pseudo type [arguments]</command>
|
||||
<command>ctcp cible type [arguments]</command>
|
||||
<programlisting>
|
||||
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...)
|
||||
arguments: arguments pour le CTCP
|
||||
|
||||
|
||||
@@ -117,6 +117,14 @@
|
||||
<entry><literal>scroll_bottom</literal></entry>
|
||||
<entry>faire défiler jusqu'à la fin du tampon</entry>
|
||||
</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>
|
||||
<entry><literal>nick_beginning</literal></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)
|
||||
paramètres: paramètres pour la commande
|
||||
|
||||
</programlisting>
|
||||
<command>est remplacé par tous les paramètres.</command>
|
||||
<programlisting>
|
||||
</programlisting>
|
||||
<command>buffer [action [args] | nombre | [[serveur] [canal]]]</command>
|
||||
<programlisting>
|
||||
@@ -23,7 +26,8 @@ gestion des tampons
|
||||
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)
|
||||
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
|
||||
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)
|
||||
|
||||
|
||||
</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>
|
||||
<command>clear [-all]</command>
|
||||
<programlisting>
|
||||
@@ -113,23 +107,28 @@ Pour chaque param
|
||||
Sans paramètres, la commande /ignore liste les ignore définis.
|
||||
|
||||
</programlisting>
|
||||
<command>key [touche fonction/commande] [unbind touche] [functions] [reset -yes]</command>
|
||||
<command>key [touche [fonction/commande]] [unbind touche] [functions] [reset -yes]</command>
|
||||
<programlisting>
|
||||
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
|
||||
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 !)
|
||||
|
||||
</programlisting>
|
||||
<command>plugin [load fichier] | [autoload] | [reload] | [unload]</command>
|
||||
<command>plugin [list [nom]] | [listfull [nom]] | [load fichier] | [autoload] | [reload [nom]] | [unload [nom]]</command>
|
||||
<programlisting>
|
||||
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>
|
||||
<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)
|
||||
-1: saute à la fenêtre précédente
|
||||
+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
|
||||
down: saute Ă la fenĂŞtre au dessous
|
||||
left: saute Ă la fenĂŞtre Ă gauche
|
||||
|
||||
@@ -93,7 +93,7 @@ Guide de d
|
||||
Les extensions sont automatiquement chargées lorsqu'elles sont trouvées.
|
||||
Plusieurs extensions/scripts sont disponibles pour WeeChat, voir ici :
|
||||
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.
|
||||
|
||||
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
|
||||
# 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
|
||||
# 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
|
||||
weechat-curses \- Wee Enhanced Environment for Chat (Curses version)
|
||||
|
||||
+15
-9
@@ -25,8 +25,10 @@ a:hover {
|
||||
}
|
||||
|
||||
.navheader {
|
||||
background-color: #E8E8FF;
|
||||
border: solid 1px #B5B5CC;
|
||||
background-color: #E0E0FF;
|
||||
border: solid 1px #A7A7C4;
|
||||
margin: -10px;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.navheader hr {
|
||||
@@ -34,8 +36,10 @@ a:hover {
|
||||
}
|
||||
|
||||
.navfooter {
|
||||
background-color: #E8E8FF;
|
||||
border: solid 1px #B5B5CC;
|
||||
background-color: #E0E0FF;
|
||||
border: solid 1px #A7A7C4;
|
||||
margin: 20px -10px -10px -10px;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.navfooter hr {
|
||||
@@ -43,9 +47,11 @@ a:hover {
|
||||
}
|
||||
|
||||
.title {
|
||||
background-color: #E5FFE5;
|
||||
border: solid 1px #CCDDCC;
|
||||
padding: 3px;
|
||||
background-color: #EBEBEB;
|
||||
border: solid 1px #CACACA;
|
||||
margin-top: 25px;
|
||||
padding: 6px;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
.informaltable table {
|
||||
@@ -79,8 +85,8 @@ a:hover {
|
||||
|
||||
pre.screen {
|
||||
font-size: 11px;
|
||||
background-color: #F5F5F5;
|
||||
border: solid 1px #CCCCCC;
|
||||
background-color: #FAFAFA;
|
||||
border: dotted 1px #CCCCCC;
|
||||
padding: 4px;
|
||||
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-panel.h
|
||||
./src/gui/gui-window.h
|
||||
./src/common/alias.c
|
||||
./src/common/alias.h
|
||||
./src/common/backtrace.c
|
||||
./src/common/backtrace.h
|
||||
./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
|
||||
# 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
|
||||
# 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 \
|
||||
weechat.h \
|
||||
alias.c \
|
||||
alias.h \
|
||||
backtrace.c \
|
||||
backtrace.h \
|
||||
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.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -28,7 +28,11 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifndef __USE_GNU
|
||||
#define __USE_GNU
|
||||
#endif
|
||||
|
||||
#include <dlfcn.h>
|
||||
|
||||
#ifdef HAVE_BACKTRACE
|
||||
@@ -38,10 +42,11 @@
|
||||
#include "weechat.h"
|
||||
#include "backtrace.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
|
||||
@@ -54,7 +59,7 @@ weechat_backtrace_printf (char *message, ...)
|
||||
vsnprintf (buffer, sizeof (buffer) - 1, message, argptr);
|
||||
va_end (argptr);
|
||||
|
||||
fprintf (stderr, "%s", buffer);
|
||||
weechat_iconv_fprintf (stderr, "%s", buffer);
|
||||
weechat_log_printf ("%s", buffer);
|
||||
}
|
||||
|
||||
@@ -84,7 +89,7 @@ weechat_backtrace_addr2line (int number, void *address, char *symbol)
|
||||
|
||||
addr = address;
|
||||
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),
|
||||
"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.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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 */
|
||||
};
|
||||
|
||||
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_alias *weechat_alias;
|
||||
extern t_weelist *index_commands;
|
||||
extern t_weelist *last_index_command;
|
||||
|
||||
extern void command_index_build ();
|
||||
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 void free_multi_command (char **);
|
||||
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_buffer (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_connect (t_irc_server *, t_irc_channel *, int, 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.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -26,9 +26,14 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <dirent.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "weechat.h"
|
||||
#include "completion.h"
|
||||
#include "alias.h"
|
||||
#include "command.h"
|
||||
#include "log.h"
|
||||
#include "utf8.h"
|
||||
@@ -60,6 +65,7 @@ completion_init (t_completion *completion, void *server, void *channel)
|
||||
completion->position = -1;
|
||||
completion->args = NULL;
|
||||
completion->direction = 0;
|
||||
completion->add_space = 1;
|
||||
|
||||
completion->completion_list = NULL;
|
||||
completion->last_completion = NULL;
|
||||
@@ -117,7 +123,7 @@ completion_get_command_infos (t_completion *completion,
|
||||
char **template, int *max_arg)
|
||||
{
|
||||
t_weechat_alias *ptr_alias;
|
||||
char *ptr_command;
|
||||
char *ptr_command, *ptr_command2, *pos;
|
||||
int i;
|
||||
#ifdef PLUGINS
|
||||
t_weechat_plugin *ptr_plugin;
|
||||
@@ -136,6 +142,14 @@ completion_get_command_infos (t_completion *completion,
|
||||
}
|
||||
else
|
||||
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
|
||||
/* look for plugin command handler */
|
||||
@@ -145,12 +159,13 @@ completion_get_command_infos (t_completion *completion,
|
||||
for (ptr_handler = ptr_plugin->handlers;
|
||||
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,
|
||||
ptr_command) == 0))
|
||||
ptr_command2) == 0))
|
||||
{
|
||||
*template = ptr_handler->completion_template;
|
||||
*max_arg = MAX_ARGS;
|
||||
free (ptr_command2);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -161,10 +176,11 @@ completion_get_command_infos (t_completion *completion,
|
||||
for (i = 0; weechat_commands[i].command_name; i++)
|
||||
{
|
||||
if (ascii_strcasecmp (weechat_commands[i].command_name,
|
||||
ptr_command) == 0)
|
||||
ptr_command2) == 0)
|
||||
{
|
||||
*template = weechat_commands[i].completion_template;
|
||||
*max_arg = weechat_commands[i].max_arg;
|
||||
free (ptr_command2);
|
||||
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)
|
||||
&& (ascii_strcasecmp (irc_commands[i].command_name,
|
||||
ptr_command) == 0))
|
||||
ptr_command2) == 0))
|
||||
{
|
||||
*template = irc_commands[i].completion_template;
|
||||
*max_arg = irc_commands[i].max_arg;
|
||||
free (ptr_command2);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
free (ptr_command2);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -270,8 +288,90 @@ completion_list_add_server_channels (t_completion *completion)
|
||||
void
|
||||
completion_list_add_filename (t_completion *completion)
|
||||
{
|
||||
/* TODO: add filename completion */
|
||||
completion_stop (completion);
|
||||
char *path_d, *path_b, *p, *d_name;
|
||||
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;
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -569,7 +669,7 @@ completion_list_add_servers (t_completion *completion)
|
||||
void
|
||||
completion_list_add_topic (t_completion *completion)
|
||||
{
|
||||
char *string, *string2;
|
||||
char *string;
|
||||
|
||||
if (!completion->server || !completion->channel
|
||||
|| !((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);
|
||||
else
|
||||
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,
|
||||
(string2) ? string2 : ((string) ?
|
||||
string : ((t_irc_channel *)(completion->channel))->topic));
|
||||
(string) ?
|
||||
string : ((t_irc_channel *)(completion->channel))->topic);
|
||||
if (string)
|
||||
free (string);
|
||||
if (string2)
|
||||
free (string2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -773,6 +868,7 @@ completion_build_list_template (t_completion *completion, char *template)
|
||||
break;
|
||||
case 'n': /* channel nicks */
|
||||
completion_list_add_channel_nicks (completion);
|
||||
completion->context = COMPLETION_NICK;
|
||||
break;
|
||||
case 'N': /* channel nicks and hosts */
|
||||
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 */
|
||||
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;
|
||||
i = 0;
|
||||
while (i < pos)
|
||||
@@ -904,12 +1001,7 @@ completion_find_context (t_completion *completion, char *buffer, int size, int p
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (completion->channel)
|
||||
completion->context = COMPLETION_NICK;
|
||||
else
|
||||
completion->context = COMPLETION_NULL;
|
||||
}
|
||||
completion->context = COMPLETION_AUTO;
|
||||
|
||||
/* look for word to complete (base word) */
|
||||
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 */
|
||||
if ((completion->context == COMPLETION_NICK)
|
||||
if ((completion->context == COMPLETION_AUTO)
|
||||
&& ((!completion->base_word) || (!completion->base_word[0])))
|
||||
{
|
||||
completion->context = COMPLETION_NULL;
|
||||
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)
|
||||
return;
|
||||
|
||||
completion->context = COMPLETION_NICK;
|
||||
|
||||
if ((((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_PRIVATE)
|
||||
|| (((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
|
||||
*/
|
||||
@@ -1337,10 +1449,7 @@ completion_search (t_completion *completion, int direction,
|
||||
/* should never be executed */
|
||||
return;
|
||||
case COMPLETION_NICK:
|
||||
if (completion->channel)
|
||||
completion_nick (completion);
|
||||
else
|
||||
return;
|
||||
completion_nick (completion);
|
||||
break;
|
||||
case COMPLETION_COMMAND:
|
||||
completion_command (completion);
|
||||
@@ -1349,7 +1458,13 @@ completion_search (t_completion *completion, int direction,
|
||||
if (completion->completion_list)
|
||||
completion_command_arg (completion, completion->arg_is_nick);
|
||||
else
|
||||
completion_nick (completion);
|
||||
{
|
||||
completion->context = COMPLETION_AUTO;
|
||||
completion_auto (completion);
|
||||
}
|
||||
break;
|
||||
case COMPLETION_AUTO:
|
||||
completion_auto (completion);
|
||||
break;
|
||||
}
|
||||
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 (" args . . . . . . . . . : '%s'\n", completion->args);
|
||||
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 (" last_completion. . . . : 0x%X\n", completion->last_completion);
|
||||
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.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -27,6 +27,7 @@
|
||||
#define COMPLETION_NICK 1
|
||||
#define COMPLETION_COMMAND 2
|
||||
#define COMPLETION_COMMAND_ARG 3
|
||||
#define COMPLETION_AUTO 4
|
||||
|
||||
typedef struct t_completion t_completion;
|
||||
|
||||
@@ -44,6 +45,7 @@ struct t_completion
|
||||
int position; /* position where Tab was pressed */
|
||||
char *args; /* command line args (including base word) */
|
||||
int direction; /* +1 = search next word, -1 = previous word */
|
||||
int add_space; /* add space after completion? */
|
||||
|
||||
/* for command argument 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.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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
|
||||
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;
|
||||
|
||||
@@ -84,7 +85,8 @@ hotlist_add (int priority, t_irc_server *server, t_gui_buffer *buffer)
|
||||
return;
|
||||
|
||||
/* do not highlight current buffer */
|
||||
if (buffer == gui_current_window->buffer)
|
||||
if ((buffer == gui_current_window->buffer)
|
||||
&& (!allow_current_buffer))
|
||||
return;
|
||||
|
||||
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