@@ -21,9 +21,19 @@ import {
2121 loadPickerSession ,
2222 savePickerSession ,
2323} from "../session.ts" ;
24+ import type { Detail as SessionDetail } from "../extension/source/session.ts" ;
25+ import { session as sessionSource } from "../extension/source/session.ts" ;
26+ import { session as sessionRenderer } from "../extension/renderer/session.ts" ;
27+ import { session as sessionPreviewer } from "../extension/previewer/session.ts" ;
28+ import { defaultSessionActions } from "../extension/action/session.ts" ;
2429
2530let zindex = 50 ;
2631
32+ const SESSION_EXCLUDE_SOURCES = [
33+ "@action" ,
34+ "@session" ,
35+ ] ;
36+
2737export const main : Entrypoint = ( denops ) => {
2838 denops . dispatcher = {
2939 ...denops . dispatcher ,
@@ -74,6 +84,30 @@ export const main: Entrypoint = (denops) => {
7484 } ) ;
7585 } ,
7686 ) ,
87+ "picker:session:command" : withHandleError ( denops , async ( ) => {
88+ await loadUserCustom ( denops ) ;
89+ const { substring } = await import (
90+ "jsr:@vim-fall/std@^0.10.0/builtin/matcher/substring"
91+ ) ;
92+ const setting = getSetting ( ) ;
93+ const sessionPickerParams = {
94+ name : "@session" ,
95+ source : sessionSource ( ) ,
96+ matchers : [ substring ( ) ] as const ,
97+ sorters : [ ] ,
98+ renderers : [ sessionRenderer ( ) ] ,
99+ previewers : [ sessionPreviewer ( ) ] ,
100+ actions : defaultSessionActions ,
101+ defaultAction : "resume" ,
102+ ...setting ,
103+ } as PickerParams < SessionDetail , string > ;
104+ await startPicker (
105+ denops ,
106+ [ ] ,
107+ sessionPickerParams ,
108+ { signal : denops . interrupted } ,
109+ ) ;
110+ } ) ,
77111 "picker:resume:command:complete" : withHandleError (
78112 denops ,
79113 async ( arglead , cmdline , cursorpos ) => {
@@ -179,8 +213,12 @@ async function startPicker<T extends Detail>(
179213 zindex -= Picker . ZINDEX_ALLOCATION ;
180214 } ) ;
181215 stack . defer ( async ( ) => {
216+ const name = pickerParams . name ;
217+ if ( SESSION_EXCLUDE_SOURCES . includes ( name ) ) {
218+ return ;
219+ }
182220 await savePickerSession ( {
183- name : pickerParams . name ,
221+ name,
184222 args,
185223 context : itemPicker . context ,
186224 } ) ;
0 commit comments