feat: switched to snacks picker from fzf-lua

main
Sofus Albert Høgsbro Rose 2025-02-14 10:10:32 +01:00
parent 10643d0b4b
commit d0f06687d1
Signed by: so-rose
GPG Key ID: AD901CB0F3701434
6 changed files with 217 additions and 50 deletions

View File

@ -26,12 +26,9 @@ vim.api.nvim_create_autocmd('LspAttach', {
-- LSP: Diagnostics -- LSP: Diagnostics
if lsp_client:supports_method('textDocument/diagnostic') then if lsp_client:supports_method('textDocument/diagnostic') then
vim.keymap.set( vim.keymap.set('n', '<leader>le', function()
'n', require('snacks').picker.diagnostics_buffer()
'<leader>le', end, { buffer = buf, desc = '[L]SP [E]rrors' })
require('fzf-lua').diagnostics_document,
{ buffer = buf, desc = '[L]SP [E]rrors' }
)
end end
-- LSP: Diagnostics -- LSP: Diagnostics
@ -48,20 +45,6 @@ vim.api.nvim_create_autocmd('LspAttach', {
id = lsp_client.id, id = lsp_client.id,
}) })
end, { buffer = buf, desc = '[L]SP [F]ormat' }) end, { buffer = buf, desc = '[L]SP [F]ormat' })
-- Format the current buffer on save
--- TODO: Only on filetypes w/fast formatters?
--vim.api.nvim_create_autocmd('BufWritePre', {
-- buffer = buf,
-- callback = function()
-- require('conform').format({
-- async = true,
-- bufnr = buf,
-- id = lsp_client.id,
-- })
-- --vim.lsp.buf.format({ bufnr = buf, id = lsp_client.id })
-- end
--})
end end
-- LSP Action: Inlay Hint -- LSP Action: Inlay Hint
@ -80,12 +63,9 @@ vim.api.nvim_create_autocmd('LspAttach', {
-- LSP Action: Code Actions -- LSP Action: Code Actions
if lsp_client:supports_method('textDocument/codeAction') then if lsp_client:supports_method('textDocument/codeAction') then
vim.keymap.set( vim.keymap.set('n', '<leader>li', function()
'n', vim.lsp.buf.code_action()
'<leader>li', end, { buffer = buf, desc = '[L]SP F[I]xes' })
require('fzf-lua').lsp_code_actions,
{ buffer = buf, desc = '[L]SP F[I]xes' }
)
end end
-- LSP Action: Rename -- LSP Action: Rename
@ -104,17 +84,30 @@ vim.api.nvim_create_autocmd('LspAttach', {
or lsp_client:supports_method('textDocument/typeDefinition') or lsp_client:supports_method('textDocument/typeDefinition')
or lsp_client:supports_method('textDocument/definition') or lsp_client:supports_method('textDocument/definition')
then then
vim.keymap.set('n', '<leader>ld', require('fzf-lua').lsp_finder, { buffer = buf, desc = '[L]SP Fin[D]er' }) vim.keymap.set('n', '<leader>ld', function()
require('snacks').picker.smart({
multi = {
'lsp_definitions',
'lsp_references',
'lsp_implementations',
'lsp_type_definitions',
},
format = 'file',
matcher = {
cwd_bonus = true,
frecency = false,
sort_empty = true,
},
transform = 'unique_file',
})
end, { buffer = buf, desc = '[L]SP Fin[D]er' })
end end
-- LSP Action: List Buffer Symbols -- LSP Action: List Buffer Symbols
if lsp_client:supports_method('textDocument/documentSymbol') then if lsp_client:supports_method('textDocument/documentSymbol') then
vim.keymap.set( vim.keymap.set('n', '<leader>ls', function()
'n', require('snacks').lsp_symbols()
'<leader>ls', end, { buffer = buf, desc = '[L]SP [S]ymbols' })
require('fzf-lua').lsp_document_symbols,
{ buffer = buf, desc = '[L]SP [S]ymbols' }
)
end end
end, end,
}) })

View File

@ -36,7 +36,7 @@ require('lazy').setup({
-- Search: telescope (for now) -- Search: telescope (for now)
--- Keys: <leader>s --- Keys: <leader>s
require('plugins/search/fzf-lua'), --require('plugins/search/fzf-lua'),
-- Version Control: git -- Version Control: git
---- Keys: <leader>g ---- Keys: <leader>g
@ -76,7 +76,6 @@ require('lazy').setup({
-- Workflow -- Workflow
require('plugins/workflow/projections'), require('plugins/workflow/projections'),
require('plugins/workflow/mini-files'),
--require('plugins/workflow/git-dev'), --require('plugins/workflow/git-dev'),
--require('plugins/workflow/sad'), --require('plugins/workflow/sad'),

View File

@ -249,7 +249,9 @@ return {
-- Use Treesitter as the Folding Method -- Use Treesitter as the Folding Method
--vim.opt.foldmethod = "expr" --vim.opt.foldmethod = "expr"
--vim.opt.foldexpr = "nvim_treesitter#foldexpr()" --vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
--
-- Suppress Concealment of ```
--- See https://github.com/nvim-treesitter/nvim-treesitter/issues/5751
require('vim.treesitter.query').set( require('vim.treesitter.query').set(
'markdown', 'markdown',
'highlights', 'highlights',

View File

@ -38,6 +38,7 @@ return {
prompt = 'Enter Jupyter Server URL:', prompt = 'Enter Jupyter Server URL:',
}, function(input) }, function(input)
if input then if input then
vim.print(input)
vim.cmd(':MoltenInit ' .. input) vim.cmd(':MoltenInit ' .. input)
end end
end) end)
@ -61,17 +62,17 @@ return {
init = function() init = function()
-- Configuration -- Configuration
if vim.g.neovide then if vim.g.neovide then
vim.g.molten_image_provider = 'image.nvim'
else
vim.g.molten_image_provider = 'none' vim.g.molten_image_provider = 'none'
else
vim.g.molten_image_provider = 'image.nvim'
vim.g.molten_image_location = 'float'
end end
vim.g.molten_output_win_max_height = 12 vim.g.molten_output_win_max_height = 12
--vim.g.molten_auto_open_output = false vim.g.molten_auto_open_output = false
vim.g.molten_auto_init_behavior = 'raise' vim.g.molten_auto_init_behavior = 'raise'
vim.g.molten_virt_text_output = true vim.g.molten_virt_text_output = true
vim.g.molten_image_location = 'float' vim.g.molten_virt_lines_off_by_1 = true
--vim.g.molten_output_show_more = true --vim.g.molten_output_show_more = true
vim.g.molten_output_virt_lines = false
vim.g.molten_use_border_highlights = true vim.g.molten_use_border_highlights = true
end, end,
} }

View File

@ -5,6 +5,7 @@ return {
priority = 1000, priority = 1000,
keys = { keys = {
-- Buffer Management
{ {
'<c-w>d', '<c-w>d',
function() function()
@ -13,7 +14,7 @@ return {
desc = 'Delete Current Buffer', desc = 'Delete Current Buffer',
}, },
-- UX -- UX: Zen Mode
--- <leader>u --- <leader>u
{ {
'<leader>ud', '<leader>ud',
@ -36,6 +37,131 @@ return {
end, end,
desc = '[U]I [Z]en Mode', desc = '[U]I [Z]en Mode',
}, },
-- Picker
--- Accessibility
{
'<leader>s?',
function()
require('snacks').picker.pickers()
end,
'n',
desc = '[S]earch Pickers',
},
{
'<leader>sh',
function()
require('snacks').picker.help()
end,
'n',
desc = '[S]earch [H]elp Tags',
},
{
'<leader>sk',
function()
require('snacks').picker.keymaps()
end,
'n',
desc = '[S]earch [K]eymaps',
},
{
'<leader>sc',
function()
require('snacks').picker.commands()
end,
'n',
desc = '[S]earch [C]ommands',
},
{
'<leader>sm',
function()
require('snacks').picker.man()
end,
'n',
desc = '[S]earch [M]anpages',
},
--- Grep
{
'<leader>sg',
function()
require('snacks').picker.grep()
end,
'n',
desc = '[S]earch w/[G]rep',
},
--- Buffer / File Search
{
'<leader>sb',
function()
require('snacks').picker.buffers()
end,
'n',
desc = '[S]earch [B]uffers',
},
{
'<leader>sf',
function()
require('snacks').picker.files()
end,
'n',
desc = '[S]earch [F]iles',
},
{
'<leader>st',
function()
require('snacks').explorer()
end,
'n',
desc = '[S]earch File[T]ree',
},
--- Git: "VCS" -> "v"
{
'<leader>svd',
function()
require('snacks').picker.git_diff()
end,
'n',
desc = '[S]earch Git [L]og',
},
{
'<leader>svl',
function()
require('snacks').picker.git_log_file()
end,
'n',
desc = '[S]earch Git [L]og',
},
{
'<leader>svs',
function()
require('snacks').picker.git_status()
end,
'n',
desc = '[S]earch Git [S]tatus',
},
--- Debug
{
'<leader>sd',
function()
require('snacks').picker.diagnostics_buffer()
end,
'n',
desc = '[S]earch [D]iagnostics',
},
--- Vim
{
"<leader>s'",
function()
require('snacks').picker.registers()
end,
'n',
desc = '[S]earch Vim Registers',
},
}, },
opts = { opts = {
@ -48,6 +174,16 @@ return {
-- Dim: Focus on the Active Scope -- Dim: Focus on the Active Scope
dim = {}, dim = {},
-- Picker
picker = {
--sources = {
-- ['projections'] = {
-- preview = 'preview',
-- format = "text",
-- },
--},
},
-- Indent: Indentation Guides -- Indent: Indentation Guides
indent = { indent = {
animate = { animate = {

View File

@ -12,26 +12,62 @@ local function store_session()
end end
end end
local function get_projects_table()
local workspaces = require('projections.workspace').get_workspaces()
local projects = {}
for _, ws in ipairs(workspaces) do
for _, project in ipairs(ws:projects()) do
table.insert(projects, {
text = tostring(project.name),
project_name = tostring(project.name),
project_path = tostring(project:path()),
})
end
end
return projects
end
-- Plugin -- Plugin
return { return {
'gnikdroy/projections.nvim', 'gnikdroy/projections.nvim',
commit = '889914169fa1f5c00fb8659653b5a8330fb223e6', commit = '889914169fa1f5c00fb8659653b5a8330fb223e6',
lazy = true, lazy = true,
dependencies = { --dependencies = {
{ -- {
'nyngwang/fzf-lua-projections.nvim', -- 'nyngwang/fzf-lua-projections.nvim',
commit = '411672ab6f7c38d3a4a51916fda1a01c1618ae04', -- commit = '411672ab6f7c38d3a4a51916fda1a01c1618ae04',
}, -- },
}, --},
keys = { keys = {
{ {
'<leader>sp', '<leader>sp',
function() function()
require('fzf-lua-p').projects() require('snacks.picker.core.picker').new({
title = 'Projects',
items = get_projects_table(),
preview = 'preview',
layout = {
preview = false,
--preset = 'select',
},
format = 'text',
confirm = function(picker, item)
picker:close()
if item then
vim.schedule(function()
store_session()
require('projections.switcher').switch(item.project_path)
end)
end
end,
})
end, end,
'n', desc = '[S]earch [P]rojects',
}, },
}, },