@@ -7,6 +7,7 @@ local Glance = {}
7
7
local glance = {}
8
8
Glance .__index = Glance
9
9
local initialized = false
10
+ local last_session = nil
10
11
11
12
--- @param opts ? GlanceOpts
12
13
function Glance .setup (opts )
@@ -336,12 +337,10 @@ Glance.actions = {
336
337
--- @param method GlanceMethod
337
338
--- @param opts ? { hooks : GlanceHooks }
338
339
open = function (method , opts )
340
+ local commands = vim .tbl_keys (require (' glance.lsp' ).methods )
341
+ table.insert (commands , ' resume' )
339
342
vim .validate ({
340
- method = utils .valid_enum (
341
- method ,
342
- vim .tbl_keys (require (' glance.lsp' ).methods ),
343
- false
344
- ),
343
+ method = utils .valid_enum (method , commands , false ),
345
344
})
346
345
-- Manually call the setup in case user hasn't initialized the plugin
347
346
-- It will only run once
@@ -380,6 +379,23 @@ Glance.actions = {
380
379
close_fold = function ()
381
380
glance :toggle_fold (false )
382
381
end ,
382
+ resume = function ()
383
+ if not last_session then
384
+ return utils .info (' No previous Glance session to resume' )
385
+ end
386
+
387
+ -- Create new Glance instance with stored state
388
+ create (
389
+ last_session .results ,
390
+ vim .api .nvim_get_current_buf (),
391
+ vim .api .nvim_get_current_win (),
392
+ vim .lsp .util .make_position_params (),
393
+ last_session .method ,
394
+ last_session .offset_encoding
395
+ )
396
+
397
+ -- TODO: Restore cursor position
398
+ end ,
383
399
}
384
400
385
401
function Glance :create (opts )
@@ -403,6 +419,14 @@ function Glance:create(opts)
403
419
preview_bufnr = list :get_current_item ().bufnr ,
404
420
})
405
421
422
+ -- Used for restoring the previous session
423
+ last_session = {
424
+ results = opts .results ,
425
+ position_params = opts .params ,
426
+ method = opts .method ,
427
+ offset_encoding = opts .offset_encoding ,
428
+ }
429
+
406
430
local scope = {
407
431
list = list ,
408
432
preview = preview ,
@@ -535,6 +559,7 @@ function Glance:close()
535
559
end
536
560
537
561
vim .api .nvim_del_augroup_by_name (' Glance' )
562
+
538
563
self .list :close ()
539
564
self .preview :close ()
540
565
0 commit comments