hexchat-plugin 0.2.11

Lets you write HexChat plugins in Rust

Write hexchat plugins in Rust!

This library provides safe API bindings for hexchat, but doesn't attempt to fix hexchat's own bugs. It makes no effort to stop you from unloading your own code while it's still running, for example.

When using this library, it's strongly recommended to avoid heap-allocated statics (static mutexes, lazy_static, etc). This is because it's currently impossible to deallocate those on plugin unload. This can be worked around by placing those statics as fields in your plugin struct.

This caveat does not apply to static assets (static FOO: &'static str, for example), but it does apply to thread-local storage.


extern crate hexchat_plugin;

use std::sync::Mutex;
use hexchat_plugin::{Plugin, PluginHandle, CommandHookHandle};

struct MyPlugin {
cmd: Mutex<Option<CommandHookHandle>>

impl Plugin for MyPlugin {
fn init(&self, ph: &mut PluginHandle, arg: Option<&str>) -> bool {
ph.register("myplugin", "0.1.0", "my simple plugin");
*self.cmd.lock().unwrap() = Some(ph.hook_command("hello-world", |ph, arg, arg_eol| {
ph.print("Hello, World!");
}, hexchat_plugin::PRI_NORM, Some("prints 'Hello, World!'")));


# fn main() { } // satisfy the compiler, we can't actually run the code