summaryrefslogtreecommitdiff
path: root/doc/en/weechat_plugin_api.en.adoc
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2022-10-22 15:27:06 +0200
committerSébastien Helleu <flashcode@flashtux.org>2022-12-11 15:13:31 +0100
commitebc63d1b8303a479c9ed347c1152448984fffa67 (patch)
tree0f881dd620a7100d460f795f2644365f231b9b62 /doc/en/weechat_plugin_api.en.adoc
parent1bfc8b9cf8771c1f979f20baffa20c1fe7671726 (diff)
downloadweechat-ebc63d1b8303a479c9ed347c1152448984fffa67.zip
scripts: Send null values to config section callbacks
The callback_read and callback_create_option functions in the scripting APIs always get the value as a string, never as null. This means that if the value is null, there is no way for the script to distinguish this from an empty string for string options. This makes it impossible to properly make options with fallback values, like the irc server and server_default options, as far as I can see. All the scripting languages except Tcl use that language's equivalent for null. For JavaScript which has both null and undefined, null is used. For Tcl, the magic null string defined in commit 197a7a01e is used and the documentation is updated to describe that. I tested this with these scripts: https://gist.github.com/trygveaa/2d49c609addf9773d2ed16e15d1e3447 You can load all of those scripts and see the result with this command (assuming you have the scripts in the current directory): weechat -t -r "/filter add script * * script; /script load $(echo script_config.*)"
Diffstat (limited to 'doc/en/weechat_plugin_api.en.adoc')
-rw-r--r--doc/en/weechat_plugin_api.en.adoc4
1 files changed, 2 insertions, 2 deletions
diff --git a/doc/en/weechat_plugin_api.en.adoc b/doc/en/weechat_plugin_api.en.adoc
index a26241688..5475efa8b 100644
--- a/doc/en/weechat_plugin_api.en.adoc
+++ b/doc/en/weechat_plugin_api.en.adoc
@@ -6451,7 +6451,7 @@ def config_new_section(config_file: str, name: str,
callback_delete_option: str, callback_delete_option_data: str) -> str: ...
# example
-def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: str) -> int:
+def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
# ...
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
@@ -6466,7 +6466,7 @@ def my_section_write_default_cb(data: str, config_file: str, section_name: str)
# ...
return weechat.WEECHAT_CONFIG_WRITE_OK
-def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: str) -> int:
+def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
# ...
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE