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
if lsp_client:supports_method('textDocument/diagnostic') then
vim.keymap.set(
'n',
'<leader>le',
require('fzf-lua').diagnostics_document,
{ buffer = buf, desc = '[L]SP [E]rrors' }
)
vim.keymap.set('n', '<leader>le', function()
require('snacks').picker.diagnostics_buffer()
end, { buffer = buf, desc = '[L]SP [E]rrors' })
end
-- LSP: Diagnostics
@ -48,20 +45,6 @@ vim.api.nvim_create_autocmd('LspAttach', {
id = lsp_client.id,
})
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
-- LSP Action: Inlay Hint
@ -80,12 +63,9 @@ vim.api.nvim_create_autocmd('LspAttach', {
-- LSP Action: Code Actions
if lsp_client:supports_method('textDocument/codeAction') then
vim.keymap.set(
'n',
'<leader>li',
require('fzf-lua').lsp_code_actions,
{ buffer = buf, desc = '[L]SP F[I]xes' }
)
vim.keymap.set('n', '<leader>li', function()
vim.lsp.buf.code_action()
end, { buffer = buf, desc = '[L]SP F[I]xes' })
end
-- 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/definition')
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
-- LSP Action: List Buffer Symbols
if lsp_client:supports_method('textDocument/documentSymbol') then
vim.keymap.set(
'n',
'<leader>ls',
require('fzf-lua').lsp_document_symbols,
{ buffer = buf, desc = '[L]SP [S]ymbols' }
)
vim.keymap.set('n', '<leader>ls', function()
require('snacks').lsp_symbols()
end, { buffer = buf, desc = '[L]SP [S]ymbols' })
end
end,
})

View File

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

View File

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

View File

@ -38,6 +38,7 @@ return {
prompt = 'Enter Jupyter Server URL:',
}, function(input)
if input then
vim.print(input)
vim.cmd(':MoltenInit ' .. input)
end
end)
@ -61,17 +62,17 @@ return {
init = function()
-- Configuration
if vim.g.neovide then
vim.g.molten_image_provider = 'image.nvim'
else
vim.g.molten_image_provider = 'none'
else
vim.g.molten_image_provider = 'image.nvim'
vim.g.molten_image_location = 'float'
end
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_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_virt_lines = false
vim.g.molten_use_border_highlights = true
end,
}

View File

@ -5,6 +5,7 @@ return {
priority = 1000,
keys = {
-- Buffer Management
{
'<c-w>d',
function()
@ -13,7 +14,7 @@ return {
desc = 'Delete Current Buffer',
},
-- UX
-- UX: Zen Mode
--- <leader>u
{
'<leader>ud',
@ -36,6 +37,131 @@ return {
end,
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 = {
@ -48,6 +174,16 @@ return {
-- Dim: Focus on the Active Scope
dim = {},
-- Picker
picker = {
--sources = {
-- ['projections'] = {
-- preview = 'preview',
-- format = "text",
-- },
--},
},
-- Indent: Indentation Guides
indent = {
animate = {

View File

@ -12,26 +12,62 @@ local function store_session()
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
return {
'gnikdroy/projections.nvim',
commit = '889914169fa1f5c00fb8659653b5a8330fb223e6',
lazy = true,
dependencies = {
{
'nyngwang/fzf-lua-projections.nvim',
commit = '411672ab6f7c38d3a4a51916fda1a01c1618ae04',
},
},
--dependencies = {
-- {
-- 'nyngwang/fzf-lua-projections.nvim',
-- commit = '411672ab6f7c38d3a4a51916fda1a01c1618ae04',
-- },
--},
keys = {
{
'<leader>sp',
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,
'n',
desc = '[S]earch [P]rojects',
},
},