@@ -261,107 +261,19 @@ local function list_or_jump(action, title, funname, params, opts)
261
261
end )
262
262
end
263
263
264
- --- @param item table
265
- --- @param opts table
266
- local function jump (item , opts )
267
- if opts .curr_filepath ~= item .filename then
268
- local cmd
269
- if opts .jump_type == " tab" then
270
- cmd = " tabedit"
271
- elseif opts .jump_type == " split" then
272
- cmd = " new"
273
- elseif opts .jump_type == " vsplit" then
274
- cmd = " vnew"
275
- elseif opts .jump_type == " tab drop" then
276
- cmd = " tab drop"
277
- end
278
-
279
- if cmd then
280
- vim .cmd (string.format (" %s %s" , cmd , item .filename ))
281
- end
282
- end
283
-
284
- local b = item .bufnr or vim .fn .bufadd (item .filename )
285
- vim .bo [b ].buflisted = true
286
- local w = opts .reuse_win and vim .fn .win_findbuf (b )[1 ] or opts .winnr
287
- vim .api .nvim_win_set_buf (w , b )
288
- vim .api .nvim_win_set_cursor (w , { item .lnum , item .col - 1 })
289
- vim ._with ({ win = w }, function ()
290
- -- Open folds under the cursor
291
- vim .cmd " normal! zv"
292
- end )
293
- end
294
-
295
- local function on_list_pick_or_jump (opts )
296
- opts .reuse_win = vim .F .if_nil (opts .reuse_win , false )
297
- opts .curr_filepath = vim .api .nvim_buf_get_name (opts .bufnr )
298
-
299
- --- @param res vim.lsp.LocationOpts.OnList
300
- return function (res )
301
- if opts .action_handler then
302
- res .items = opts .action_handler (res .items , opts )
303
- end
304
-
305
- if # res .items == 1 and opts .jump_type ~= " never" then
306
- jump (res .items [1 ], opts )
307
- return
308
- end
309
-
310
- pickers
311
- .new (opts , {
312
- finder = finders .new_table {
313
- results = res .items ,
314
- entry_maker = opts .entry_maker or make_entry .gen_from_quickfix (opts ),
315
- },
316
- previewer = conf .qflist_previewer (opts ),
317
- sorter = conf .generic_sorter (opts ),
318
- push_cursor_on_edit = true ,
319
- push_tagstack_on_edit = true ,
320
- })
321
- :find ()
322
- end
323
- end
324
-
325
- local function references (opts )
326
- opts .prompt_title = vim .F .if_nil (opts .prompt_title , " LSP References" )
327
-
328
- if not opts .include_current_line then
329
- opts .action_handler = function (items , ctx )
330
- local lnum = vim .api .nvim_win_get_cursor (ctx .winnr )[1 ]
331
- items = vim .tbl_filter (function (v )
332
- return not (v .filename == ctx .curr_filepath and v .lnum == lnum )
333
- end , items )
334
- return items
335
- end
336
- end
337
-
338
- local ctx = { includeDeclaration = vim .F .if_nil (opts .include_declaration , true ) }
339
- vim .lsp .buf .references (ctx , { on_list = on_list_pick_or_jump (opts ) })
340
- end
341
-
342
- local function references_legacy (opts )
264
+ lsp .references = function (opts )
343
265
opts .include_current_line = vim .F .if_nil (opts .include_current_line , false )
344
266
local params = vim .lsp .util .make_position_params (opts .winnr )
345
267
params .context = { includeDeclaration = vim .F .if_nil (opts .include_declaration , true ) }
346
268
return list_or_jump (" textDocument/references" , " LSP References" , " builtin.lsp_references" , params , opts )
347
269
end
348
270
349
- local function definitions (opts )
350
- opts .prompt_title = vim .F .if_nil (opts .prompt_title , " LSP Definitions" )
351
- vim .lsp .buf .definition { on_list = on_list_pick_or_jump (opts ) }
352
- end
353
-
354
- local function definitions_legacy (opts )
271
+ lsp .definitions = function (opts )
355
272
local params = vim .lsp .util .make_position_params (opts .winnr )
356
273
return list_or_jump (" textDocument/definition" , " LSP Definitions" , " builtin.lsp_definitions" , params , opts )
357
274
end
358
275
359
- local function type_definitions (opts )
360
- opts .prompt_title = vim .F .if_nil (opts .prompt_title , " LSP Type Definitions" )
361
- vim .lsp .buf .type_definition { on_list = on_list_pick_or_jump (opts ) }
362
- end
363
-
364
- local function type_definitions_legacy (opts )
276
+ lsp .type_definitions = function (opts )
365
277
local params = vim .lsp .util .make_position_params (opts .winnr )
366
278
return list_or_jump (
367
279
" textDocument/typeDefinition" ,
@@ -372,28 +284,11 @@ local function type_definitions_legacy(opts)
372
284
)
373
285
end
374
286
375
- local function implementations (opts )
376
- opts .prompt_title = vim .F .if_nil (opts .prompt_title , " LSP Implementations" )
377
- vim .lsp .buf .implementation { on_list = on_list_pick_or_jump (opts ) }
378
- end
379
-
380
- local function implementations_legacy (opts )
287
+ lsp .implementations = function (opts )
381
288
local params = vim .lsp .util .make_position_params (opts .winnr )
382
289
return list_or_jump (" textDocument/implementation" , " LSP Implementations" , " builtin.lsp_implementations" , params , opts )
383
290
end
384
291
385
- if vim .fn .has " 0.11" then
386
- lsp .references = references
387
- lsp .definitions = definitions
388
- lsp .type_definitions = type_definitions
389
- lsp .implementations = implementations
390
- else
391
- lsp .references = references_legacy
392
- lsp .definitions = definitions_legacy
393
- lsp .type_definitions = type_definitions_legacy
394
- lsp .implementations = implementations_legacy
395
- end
396
-
397
292
local symbols_sorter = function (symbols )
398
293
if vim .tbl_isempty (symbols ) then
399
294
return symbols
0 commit comments