1- # -*- coding: utf-8 -*-
21#
3- # Copyright (c) 2013-2018 by nils_2 <[email protected] >, Filip H.F. "FiXato" Slagter <[email protected] > 2+ # SPDX-FileCopyrightText: 2013-2025 Nils Görs <[email protected] > 3+ # SPDX-FileCopyrightText: 2017 Filip H.F. 'FiXato' Slagter <[email protected] > 44#
5- # save and restore query buffers after /quit
5+ # SPDX-License-Identifier: GPL-3.0-or-later
66#
7- # This program is free software; you can redistribute it and/or modify
8- # it under the terms of the GNU General Public License as published by
9- # the Free Software Foundation; either version 3 of the License, or
10- # (at your option) any later version.
7+ # Save and restore query buffers after /quit.
118#
12- # This program is distributed in the hope that it will be useful,
13- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15- # GNU General Public License for more details.
9+ # Idea by lasers@freenode.#weechat
1610#
17- # You should have received a copy of the GNU General Public License
18- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19- #
20- # idea by lasers@freenode.#weechat
11+ # 2025-10-02: nils_2 (libera.#weechat)
12+ # 0.7 : fix a ValueError in config file, when using dcc. localvar "server", is missing for dcc buffer (reported by roughnecks)
13+ # : add some more DEBUG() text
2114#
2215# 2023-08-01: nils_2 (libera.#weechat)
2316# 0.6.1 : fix a timing problem when joining autojoin-channels (reported by thecdnhermit)
6255
6356SCRIPT_NAME = 'queryman'
6457SCRIPT_AUTHOR = 'nils_2 <[email protected] >' 65- SCRIPT_VERSION = '0.6.1 '
58+ SCRIPT_VERSION = '0.7 '
6659SCRIPT_LICENSE = 'GPL'
6760SCRIPT_DESC = 'save and restore query buffers after /quit and on open/close of queries'
6861DEBUG = False
@@ -106,6 +99,7 @@ def irc_pv_opened_cb(data, signal, signal_data):
10699 server_name = weechat .buffer_get_string (signal_data , 'localvar_server' )
107100 channel_name = weechat .buffer_get_string (signal_data , 'localvar_channel' )
108101 add_channel_to_stored_list (server_name , channel_name )
102+ debug_print ("signal: irc_pv_opened server: %s query: %s" % (server_name , channel_name ))
109103 save_stored_query_buffers_to_file ()
110104 return weechat .WEECHAT_RC_OK
111105
@@ -114,6 +108,7 @@ def remove_server_from_servers_closing_cb(data, signal, signal_data):
114108 global servers_closing
115109 if signal_data in servers_closing :
116110 servers_closing .remove (signal_data )
111+ debug_print ("signal: irc_server_closing" )
117112 return weechat .WEECHAT_RC_OK
118113
119114# signal_data = buffer pointer
@@ -122,6 +117,7 @@ def irc_server_opened_cb(data, signal, signal_data):
122117
123118 server_name = weechat .buffer_get_string (signal_data , 'localvar_server' )
124119 servers_opening .add (server_name )
120+ debug_print ("signal: irc_server_opened %s" % server_name )
125121 return weechat .WEECHAT_RC_OK
126122
127123# signal_data = servername
@@ -132,6 +128,7 @@ def irc_server_connected_signal_cb(data, signal, signal_data):
132128 if signal_data in servers_opening :
133129 open_stored_query_buffers_for_server (signal_data )
134130 servers_opening .remove (signal_data )
131+ debug_print ("signal: irc_server_connected" )
135132
136133 return weechat .WEECHAT_RC_OK
137134
@@ -152,9 +149,11 @@ def get_stored_list_of_query_buffers():
152149 if os .path .isfile (filename ):
153150 f = open (filename , 'r' )
154151 for line in f :
155- server_name ,nick = line .strip ().split (' ' )
156- stored_query_buffers_per_server .setdefault (server_name , set ([]))
157- stored_query_buffers_per_server [server_name ].add (nick )
152+ parts = line .strip ().split ()
153+ if len (parts ) == 2 :
154+ server_name , nick = parts
155+ stored_query_buffers_per_server .setdefault (server_name , set ([]))
156+ stored_query_buffers_per_server [server_name ].add (nick )
158157 f .close ()
159158 else :
160159 debug_print ('Error loading query buffer from "%s"' % filename )
@@ -182,6 +181,8 @@ def open_query_buffer(server_name, nick):
182181 switch_autojoin = weechat .config_get ("irc.look.buffer_switch_autojoin" )
183182 if not weechat .config_boolean (switch_autojoin ):
184183 noswitch = "-noswitch"
184+
185+ debug_print ("opening query buffer: %s on server %s" % (nick , server_name ))
185186 weechat .command ('' ,'/wait 1 /query %s -server %s %s' % ( noswitch , server_name , nick ))
186187 weechat .buffer_set (starting_buffer , 'display' , 'auto' )
187188
@@ -190,6 +191,7 @@ def open_stored_query_buffers_for_server(server_connected):
190191
191192 if server_connected in stored_query_buffers_per_server :
192193 for nick in stored_query_buffers_per_server [server_connected ].copy ():
194+ debug_print ("going to open query buffer: %s on connected server %s" % (nick , server_connected ))
193195 open_query_buffer (server_connected , nick )
194196
195197def get_current_query_buffers ():
@@ -276,10 +278,10 @@ def hook_command_cb(data, buffer, args):
276278 open_stored_query_buffers_for_server (server_name )
277279
278280 stored_query_buffers_per_server .setdefault (server_name , set ([]))
279- debug_print ("Already have %s channels for server %s: %s" % (len (stored_query_buffers_per_server [server_name ]), server_name , ',' .join (stored_query_buffers_per_server [server_name ])))
281+ debug_print ("Already have %s queries for server %s: %s" % (len (stored_query_buffers_per_server [server_name ]), server_name , ',' .join (stored_query_buffers_per_server [server_name ])))
280282 debug_print ("Adding: %s" % channels )
281283 stored_query_buffers_per_server [server_name ].update (channels )
282- debug_print ("Now have %s channels for server %s: %s" % (len (stored_query_buffers_per_server [server_name ]), server_name , ',' .join (stored_query_buffers_per_server [server_name ])))
284+ debug_print ("Now have %s queries for server %s: %s" % (len (stored_query_buffers_per_server [server_name ]), server_name , ',' .join (stored_query_buffers_per_server [server_name ])))
283285 save_stored_query_buffers_to_file ()
284286 weechat .hook_signal ('quit' , 'quit_signal_cb' , '' )
285287# weechat.hook_signal('relay_client_disconnected', 'quit_signal_cb', '')
0 commit comments