-- Miscellaneous plugins return { -- Database client { 'kristijanhusak/vim-dadbod-ui', dependencies = { { 'tpope/vim-dadbod', lazy = true }, { 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql', 'plsql' }, lazy = true }, }, cmd = { 'DBUI', 'DBUIToggle', 'DBUIAddConnection', 'DBUIFindBuffer' }, init = function() vim.g.db_ui_use_nerd_fonts = 1 end, }, -- Wiki/notes { 'lervag/wiki.vim', init = function() vim.g.wiki_root = '~/Documents/Developer/' end, }, -- Import picker { 'piersolenski/import.nvim', dependencies = { 'nvim-telescope/telescope.nvim' }, opts = { picker = 'telescope' }, keys = { { 'i', function() require('import').pick() end, desc = 'Import' }, }, }, -- Type hierarchy viewer { 'retran/meow.yarn.nvim', dependencies = { 'MunifTanjim/nui.nvim' }, config = function() require('meow.yarn').setup {} vim.keymap.set('n', 'yS', 'MeowYarn type super', { desc = 'Yarn: Super Types' }) vim.keymap.set('n', 'ys', 'MeowYarn type sub', { desc = 'Yarn: Sub Types' }) vim.keymap.set('n', 'yC', 'MeowYarn call callers', { desc = 'Yarn: Callers' }) vim.keymap.set('n', 'yc', 'MeowYarn call callees', { desc = 'Yarn: Callees' }) end, }, -- Xcode development { 'wojciech-kulik/xcodebuild.nvim', dependencies = { 'MunifTanjim/nui.nvim', 'nvim-treesitter/nvim-treesitter', }, config = function() require('xcodebuild').setup {} vim.keymap.set('n', 'X', 'XcodebuildPicker', { desc = 'Show Xcodebuild Actions' }) vim.keymap.set('n', 'xf', 'XcodebuildProjectManager', { desc = 'Show Project Manager Actions' }) vim.keymap.set('n', 'xb', 'XcodebuildBuild', { desc = 'Build Project' }) vim.keymap.set('n', 'xB', 'XcodebuildBuildForTesting', { desc = 'Build For Testing' }) vim.keymap.set('n', 'xr', 'XcodebuildBuildRun', { desc = 'Build & Run Project' }) vim.keymap.set('n', 'xt', 'XcodebuildTest', { desc = 'Run Tests' }) vim.keymap.set('v', 'xt', 'XcodebuildTestSelected', { desc = 'Run Selected Tests' }) vim.keymap.set('n', 'xT', 'XcodebuildTestClass', { desc = 'Run Current Test Class' }) vim.keymap.set('n', 'x.', 'XcodebuildTestRepeat', { desc = 'Repeat Last Test Run' }) vim.keymap.set('n', 'xl', 'XcodebuildToggleLogs', { desc = 'Toggle Xcodebuild Logs' }) vim.keymap.set('n', 'xc', 'XcodebuildToggleCodeCoverage', { desc = 'Toggle Code Coverage' }) vim.keymap.set('n', 'xC', 'XcodebuildShowCodeCoverageReport', { desc = 'Show Code Coverage Report' }) vim.keymap.set('n', 'xe', 'XcodebuildTestExplorerToggle', { desc = 'Toggle Test Explorer' }) vim.keymap.set('n', 'xs', 'XcodebuildFailingSnapshots', { desc = 'Show Failing Snapshots' }) vim.keymap.set('n', 'xp', 'XcodebuildPreviewGenerateAndShow', { desc = 'Generate Preview' }) vim.keymap.set('n', 'x', 'XcodebuildPreviewToggle', { desc = 'Toggle Preview' }) vim.keymap.set('n', 'xd', 'XcodebuildSelectDevice', { desc = 'Select Device' }) vim.keymap.set('n', 'xq', 'Telescope quickfix', { desc = 'Show QuickFix List' }) vim.keymap.set('n', 'xa', 'XcodebuildCodeActions', { desc = 'Show Code Actions' }) end, }, -- OpenCode AI assistant { 'NickvanDyke/opencode.nvim', dependencies = { { 'folke/snacks.nvim', opts = { input = { enabled = true } } }, }, ---@type opencode.Opts opts = {}, config = function() vim.keymap.set({ 'n', 'x' }, 'oa', function() require('opencode').ask('@this: ', { submit = true }) end, { desc = 'Ask opencode' }) vim.keymap.set({ 'n', 'x' }, 'os', function() require('opencode').select() end, { desc = 'Execute opencode action…' }) vim.keymap.set({ 'n', 'x' }, 'ga', function() require('opencode').prompt '@this' end, { desc = 'Add to opencode' }) vim.keymap.set({ 'n', 't' }, 'ot', function() require('opencode').toggle() end, { desc = 'Toggle opencode' }) vim.keymap.set('n', '', function() require('opencode').command 'session.half.page.up' end, { desc = 'opencode half page up' }) vim.keymap.set('n', '', function() require('opencode').command 'session.half.page.down' end, { desc = 'opencode half page down' }) end, }, }