diff --git a/matrix/config.py b/matrix/config.py index a073959..2d8c0ac 100644 --- a/matrix/config.py +++ b/matrix/config.py @@ -22,9 +22,9 @@ from matrix.plugin_options import ( ServerBufferType ) -from matrix.globals import W, OPTIONS, CONFIG +from matrix.globals import W, OPTIONS, CONFIG, SERVERS from matrix.utf import utf8_decode -from matrix.utils import key_from_value +from matrix.utils import key_from_value, server_buffer_merge from matrix.commands import hook_page_up @@ -39,13 +39,19 @@ def matrix_config_change_cb(data, option): if option_name == "redactions": OPTIONS.redaction_type = RedactType(W.config_integer(option)) + elif option_name == "server_buffer": OPTIONS.look_server_buf = ServerBufferType( W.config_integer(option)) + for server in SERVERS.values(): + server_buffer_merge(server.server_buffer) + elif option_name == "max_initial_sync_events": OPTIONS.sync_limit = W.config_integer(option) + elif option_name == "max_backlog_sync_events": OPTIONS.backlog_limit = W.config_integer(option) + elif option_name == "fetch_backlog_on_pgup": OPTIONS.enable_backlog = W.config_boolean(option) diff --git a/matrix/utils.py b/matrix/utils.py index 749600e..f057a5d 100644 --- a/matrix/utils.py +++ b/matrix/utils.py @@ -18,13 +18,10 @@ from __future__ import unicode_literals import time -import matrix.globals +from matrix.globals import W, SERVERS, OPTIONS from matrix.plugin_options import ServerBufferType -W = matrix.globals.W -GLOBAL_OPTIONS = matrix.globals.OPTIONS - def key_from_value(dictionary, value): # type: (Dict[str, Any], Any) -> str @@ -32,7 +29,7 @@ def key_from_value(dictionary, value): def prnt_debug(debug_type, server, message): - if debug_type in GLOBAL_OPTIONS.debug: + if debug_type in OPTIONS.debug: W.prnt(server.server_buffer, message) @@ -77,13 +74,23 @@ def create_server_buffer(server): W.buffer_set(server.server_buffer, "localvar_set_server", server.name) W.buffer_set(server.server_buffer, "localvar_set_channel", server.name) - # TODO merge without core - if GLOBAL_OPTIONS.look_server_buf == ServerBufferType.MERGE_CORE: - W.buffer_merge(server.server_buffer, W.buffer_search_main()) - elif GLOBAL_OPTIONS.look_server_buf == ServerBufferType.MERGE: - pass + server_buffer_merge(server.server_buffer) + + +def server_buffer_merge(buffer): + if OPTIONS.look_server_buf == ServerBufferType.MERGE_CORE: + num = W.buffer_get_integer(W.buffer_search_main(), "number") + W.buffer_unmerge(buffer, num + 1) + W.buffer_merge(buffer, W.buffer_search_main()) + elif OPTIONS.look_server_buf == ServerBufferType.MERGE: + if SERVERS: + first = list(SERVERS.values())[0].server_buffer + num = W.buffer_get_integer(W.buffer_search_main(), "number") + W.buffer_unmerge(buffer, num + 1) + W.buffer_merge(buffer, first) else: - pass + num = W.buffer_get_integer(W.buffer_search_main(), "number") + W.buffer_unmerge(buffer, num + 1) def server_buffer_set_title(server):