migration complete
This commit is contained in:
parent
c0c1148fde
commit
88d84fee4c
34 changed files with 4641 additions and 281 deletions
|
|
@ -358,7 +358,7 @@ return {
|
|||
-- ========================================================================
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
pattern = 'dart',
|
||||
callback = function()
|
||||
callback = function(event)
|
||||
local opts = { buffer = true, silent = true }
|
||||
|
||||
-- ========================================================================
|
||||
|
|
@ -402,51 +402,9 @@ return {
|
|||
)
|
||||
vim.keymap.set('n', '<leader>fl', '<cmd>FlutterLspRestart<cr>', vim.tbl_extend('force', opts, { desc = '[F]lutter [L]SP Restart' }))
|
||||
|
||||
-- ========================================================================
|
||||
-- DEBUG KEYMAPS - Available only in Dart files
|
||||
-- ========================================================================
|
||||
-- Function key shortcuts (standard debugging)
|
||||
vim.keymap.set('n', '<F5>', function()
|
||||
require('dap').continue()
|
||||
end, vim.tbl_extend('force', opts, { desc = 'Debug: Start/Continue' }))
|
||||
|
||||
vim.keymap.set('n', '<F10>', function()
|
||||
require('dap').step_over()
|
||||
end, vim.tbl_extend('force', opts, { desc = 'Debug: Step Over' }))
|
||||
|
||||
vim.keymap.set('n', '<F11>', function()
|
||||
require('dap').step_into()
|
||||
end, vim.tbl_extend('force', opts, { desc = 'Debug: Step Into' }))
|
||||
|
||||
vim.keymap.set('n', '<F12>', function()
|
||||
require('dap').step_out()
|
||||
end, vim.tbl_extend('force', opts, { desc = 'Debug: Step Out' }))
|
||||
|
||||
-- Leader-based debug commands
|
||||
vim.keymap.set('n', '<leader>db', function()
|
||||
require('dap').toggle_breakpoint()
|
||||
end, vim.tbl_extend('force', opts, { desc = '[D]ebug: Toggle [B]reakpoint' }))
|
||||
|
||||
vim.keymap.set('n', '<leader>dB', function()
|
||||
require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ')
|
||||
end, vim.tbl_extend('force', opts, { desc = '[D]ebug: Set Conditional [B]reakpoint' }))
|
||||
|
||||
vim.keymap.set('n', '<leader>dc', function()
|
||||
require('dap').continue()
|
||||
end, vim.tbl_extend('force', opts, { desc = '[D]ebug: [C]ontinue' }))
|
||||
|
||||
vim.keymap.set('n', '<leader>dt', function()
|
||||
require('dap').terminate()
|
||||
end, vim.tbl_extend('force', opts, { desc = '[D]ebug: [T]erminate' }))
|
||||
|
||||
vim.keymap.set('n', '<leader>du', function()
|
||||
require('dapui').toggle()
|
||||
end, vim.tbl_extend('force', opts, { desc = '[D]ebug: Toggle [U]I' }))
|
||||
|
||||
-- Register groups with which-key
|
||||
-- Register which-key group for Flutter
|
||||
require('which-key').add {
|
||||
{ '<leader>f', group = '[F]lutter', mode = 'n' },
|
||||
{ '<leader>d', group = '[D]ebug', mode = 'n' },
|
||||
{ '<leader>f', group = ' flutter', mode = 'n', buffer = event.buf },
|
||||
}
|
||||
end,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -173,4 +173,54 @@ return {
|
|||
return opts
|
||||
end,
|
||||
},
|
||||
|
||||
-- Python keymaps (loaded only for Python files)
|
||||
{
|
||||
'nvim-lspconfig',
|
||||
ft = 'python',
|
||||
config = function()
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
pattern = 'python',
|
||||
callback = function(event)
|
||||
local bufnr = event.buf
|
||||
|
||||
-- Register which-key group for Python
|
||||
require('which-key').add {
|
||||
{ '<leader>p', group = ' python', buffer = bufnr },
|
||||
}
|
||||
|
||||
-- Run current file
|
||||
vim.keymap.set('n', '<leader>pr', function()
|
||||
vim.cmd('!python3 %')
|
||||
end, { buffer = bufnr, desc = 'Run file' })
|
||||
|
||||
-- Run with arguments
|
||||
vim.keymap.set('n', '<leader>pR', function()
|
||||
local args = vim.fn.input 'Arguments: '
|
||||
vim.cmd('!python3 % ' .. args)
|
||||
end, { buffer = bufnr, desc = 'Run with args' })
|
||||
|
||||
-- Select virtual environment
|
||||
vim.keymap.set('n', '<leader>pe', function()
|
||||
vim.cmd 'PythonSelectVenv'
|
||||
end, { buffer = bufnr, desc = 'Select venv' })
|
||||
|
||||
-- Restart Python LSP
|
||||
vim.keymap.set('n', '<leader>pl', function()
|
||||
vim.cmd 'PythonRestart'
|
||||
end, { buffer = bufnr, desc = 'Restart LSP' })
|
||||
|
||||
-- Import organization (via Ruff)
|
||||
vim.keymap.set('n', '<leader>pi', function()
|
||||
require('conform').format { formatters = { 'ruff_organize_imports' } }
|
||||
end, { buffer = bufnr, desc = 'Organize imports' })
|
||||
|
||||
-- Format with Ruff
|
||||
vim.keymap.set('n', '<leader>pf', function()
|
||||
require('conform').format { formatters = { 'ruff_format' } }
|
||||
end, { buffer = bufnr, desc = 'Format code' })
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
272
lua/plugins/lang/rust.lua
Normal file
272
lua/plugins/lang/rust.lua
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
-- Rust Development Configuration
|
||||
-- Loaded only for Rust files (*.rs)
|
||||
|
||||
return {
|
||||
-- Rust Tools - Enhanced rust-analyzer integration
|
||||
{
|
||||
'mrcjkb/rustaceanvim',
|
||||
version = '^5',
|
||||
lazy = false, -- Already lazy-loaded by filetype
|
||||
ft = { 'rust' },
|
||||
opts = {
|
||||
server = {
|
||||
on_attach = function(client, bufnr)
|
||||
-- Register which-key group for Rust
|
||||
require('which-key').add {
|
||||
{ '<leader>r', group = ' rust', buffer = bufnr },
|
||||
}
|
||||
|
||||
-- Hover actions
|
||||
vim.keymap.set('n', '<leader>rh', function()
|
||||
vim.cmd.RustLsp { 'hover', 'actions' }
|
||||
end, { buffer = bufnr, desc = 'Hover actions' })
|
||||
|
||||
-- Code actions
|
||||
vim.keymap.set('n', '<leader>ra', function()
|
||||
vim.cmd.RustLsp('codeAction')
|
||||
end, { buffer = bufnr, desc = 'Code actions' })
|
||||
|
||||
-- Explain error
|
||||
vim.keymap.set('n', '<leader>re', function()
|
||||
vim.cmd.RustLsp('explainError')
|
||||
end, { buffer = bufnr, desc = 'Explain error' })
|
||||
|
||||
-- Open Cargo.toml
|
||||
vim.keymap.set('n', '<leader>rC', function()
|
||||
vim.cmd.RustLsp('openCargo')
|
||||
end, { buffer = bufnr, desc = 'Open Cargo.toml' })
|
||||
|
||||
-- Parent module
|
||||
vim.keymap.set('n', '<leader>rp', function()
|
||||
vim.cmd.RustLsp('parentModule')
|
||||
end, { buffer = bufnr, desc = 'Parent module' })
|
||||
|
||||
-- Join lines
|
||||
vim.keymap.set('n', '<leader>rj', function()
|
||||
vim.cmd.RustLsp('joinLines')
|
||||
end, { buffer = bufnr, desc = 'Join lines' })
|
||||
|
||||
-- Runnables
|
||||
vim.keymap.set('n', '<leader>rr', function()
|
||||
vim.cmd.RustLsp('runnables')
|
||||
end, { buffer = bufnr, desc = 'Runnables' })
|
||||
|
||||
-- Debuggables
|
||||
vim.keymap.set('n', '<leader>rd', function()
|
||||
vim.cmd.RustLsp('debuggables')
|
||||
end, { buffer = bufnr, desc = 'Debuggables' })
|
||||
|
||||
-- Expand macro
|
||||
vim.keymap.set('n', '<leader>rm', function()
|
||||
vim.cmd.RustLsp('expandMacro')
|
||||
end, { buffer = bufnr, desc = 'Expand macro' })
|
||||
end,
|
||||
default_settings = {
|
||||
-- rust-analyzer language server configuration
|
||||
['rust-analyzer'] = {
|
||||
cargo = {
|
||||
allFeatures = true,
|
||||
loadOutDirsFromCheck = true,
|
||||
buildScripts = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
-- Add clippy lints for Rust
|
||||
checkOnSave = {
|
||||
allFeatures = true,
|
||||
command = 'clippy',
|
||||
extraArgs = { '--no-deps' },
|
||||
},
|
||||
procMacro = {
|
||||
enable = true,
|
||||
ignored = {
|
||||
['async-trait'] = { 'async_trait' },
|
||||
['napi-derive'] = { 'napi' },
|
||||
['async-recursion'] = { 'async_recursion' },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
-- DAP configuration
|
||||
dap = {
|
||||
adapter = {
|
||||
type = 'executable',
|
||||
command = 'lldb-vscode', -- or 'lldb-dap' on newer versions
|
||||
name = 'lldb',
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
vim.g.rustaceanvim = vim.tbl_deep_extend('keep', vim.g.rustaceanvim or {}, opts or {})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Crates.io integration
|
||||
{
|
||||
'saecki/crates.nvim',
|
||||
event = { 'BufRead Cargo.toml' },
|
||||
opts = {
|
||||
completion = {
|
||||
cmp = {
|
||||
enabled = true,
|
||||
},
|
||||
},
|
||||
lsp = {
|
||||
enabled = true,
|
||||
actions = true,
|
||||
completion = true,
|
||||
hover = true,
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
local crates = require 'crates'
|
||||
crates.setup(opts)
|
||||
|
||||
-- Crates keymaps (only in Cargo.toml)
|
||||
vim.api.nvim_create_autocmd('BufRead', {
|
||||
pattern = 'Cargo.toml',
|
||||
callback = function()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
|
||||
-- Register which-key group for Rust Crates
|
||||
require('which-key').add {
|
||||
{ '<leader>rc', group = ' crates', buffer = bufnr },
|
||||
}
|
||||
|
||||
vim.keymap.set('n', '<leader>rct', function()
|
||||
crates.toggle()
|
||||
end, { buffer = bufnr, desc = 'Toggle crates' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcr', function()
|
||||
crates.reload()
|
||||
end, { buffer = bufnr, desc = 'Reload crates' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcv', function()
|
||||
crates.show_versions_popup()
|
||||
end, { buffer = bufnr, desc = 'Show versions' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcf', function()
|
||||
crates.show_features_popup()
|
||||
end, { buffer = bufnr, desc = 'Show features' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcd', function()
|
||||
crates.show_dependencies_popup()
|
||||
end, { buffer = bufnr, desc = 'Show dependencies' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcu', function()
|
||||
crates.update_crate()
|
||||
end, { buffer = bufnr, desc = 'Update crate' })
|
||||
|
||||
vim.keymap.set('v', '<leader>rcu', function()
|
||||
crates.update_crates()
|
||||
end, { buffer = bufnr, desc = 'Update selected' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rca', function()
|
||||
crates.update_all_crates()
|
||||
end, { buffer = bufnr, desc = 'Update all' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcU', function()
|
||||
crates.upgrade_crate()
|
||||
end, { buffer = bufnr, desc = 'Upgrade crate' })
|
||||
|
||||
vim.keymap.set('v', '<leader>rcU', function()
|
||||
crates.upgrade_crates()
|
||||
end, { buffer = bufnr, desc = 'Upgrade selected' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcA', function()
|
||||
crates.upgrade_all_crates()
|
||||
end, { buffer = bufnr, desc = 'Upgrade all' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rce', function()
|
||||
crates.expand_plain_crate_to_inline_table()
|
||||
end, { buffer = bufnr, desc = 'Expand to inline' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcE', function()
|
||||
crates.extract_crate_into_table()
|
||||
end, { buffer = bufnr, desc = 'Extract to table' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcH', function()
|
||||
crates.open_homepage()
|
||||
end, { buffer = bufnr, desc = 'Open homepage' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcR', function()
|
||||
crates.open_repository()
|
||||
end, { buffer = bufnr, desc = 'Open repository' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcD', function()
|
||||
crates.open_documentation()
|
||||
end, { buffer = bufnr, desc = 'Open documentation' })
|
||||
|
||||
vim.keymap.set('n', '<leader>rcC', function()
|
||||
crates.open_crates_io()
|
||||
end, { buffer = bufnr, desc = 'Open crates.io' })
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Mason tool installations for Rust
|
||||
{
|
||||
'williamboman/mason.nvim',
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = opts.ensure_installed or {}
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
'rust-analyzer',
|
||||
'codelldb', -- For debugging
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Treesitter for Rust
|
||||
{
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = opts.ensure_installed or {}
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
'rust',
|
||||
'ron', -- Rusty Object Notation
|
||||
'toml', -- For Cargo.toml
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- DAP configuration for Rust
|
||||
{
|
||||
'mfussenegger/nvim-dap',
|
||||
optional = true,
|
||||
opts = function()
|
||||
local dap = require 'dap'
|
||||
|
||||
dap.configurations.rust = {
|
||||
{
|
||||
name = 'Launch',
|
||||
type = 'codelldb',
|
||||
request = 'launch',
|
||||
program = function()
|
||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/target/debug/', 'file')
|
||||
end,
|
||||
cwd = '${workspaceFolder}',
|
||||
stopOnEntry = false,
|
||||
args = {},
|
||||
},
|
||||
{
|
||||
name = 'Attach to process',
|
||||
type = 'codelldb',
|
||||
request = 'attach',
|
||||
pid = require('dap.utils').pick_process,
|
||||
args = {},
|
||||
},
|
||||
}
|
||||
|
||||
dap.adapters.codelldb = {
|
||||
type = 'server',
|
||||
port = '${port}',
|
||||
executable = {
|
||||
command = vim.fn.exepath 'codelldb',
|
||||
args = { '--port', '${port}' },
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
|
@ -180,4 +180,48 @@ return {
|
|||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- ========================================================================
|
||||
-- SVELTE-SPECIFIC KEYMAPS
|
||||
-- ========================================================================
|
||||
-- Additional Svelte-specific settings and keymaps
|
||||
-- ========================================================================
|
||||
{
|
||||
'nvim-lspconfig',
|
||||
ft = 'svelte',
|
||||
config = function()
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
pattern = 'svelte',
|
||||
callback = function(event)
|
||||
local bufnr = event.buf
|
||||
|
||||
-- Register which-key group for Svelte
|
||||
require('which-key').add {
|
||||
{ '<leader>v', group = ' svelte', buffer = bufnr },
|
||||
}
|
||||
|
||||
-- Format with Prettier
|
||||
vim.keymap.set('n', '<leader>vf', function()
|
||||
require('conform').format { formatters = { 'prettier' } }
|
||||
end, { buffer = bufnr, desc = 'Format with prettier' })
|
||||
|
||||
-- Restart Svelte LSP
|
||||
vim.keymap.set('n', '<leader>vl', function()
|
||||
vim.cmd 'LspRestart svelte'
|
||||
end, { buffer = bufnr, desc = 'Restart LSP' })
|
||||
|
||||
-- Restart TypeScript LSP (often needed in Svelte projects)
|
||||
vim.keymap.set('n', '<leader>vt', function()
|
||||
vim.cmd 'LspRestart ts_ls'
|
||||
end, { buffer = bufnr, desc = 'Restart TypeScript LSP' })
|
||||
|
||||
-- Open component in split
|
||||
vim.keymap.set('n', '<leader>vo', function()
|
||||
local word = vim.fn.expand '<cfile>'
|
||||
vim.cmd('split ' .. word)
|
||||
end, { buffer = bufnr, desc = 'Open component in split' })
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue