chore: add personal nvim configuration
- Enable relative line numbers for better navigation - Add zsh shell with interactive mode for aliases/functions - Add buffer navigation keymaps (Shift+h/l for prev/next) - Add buffer delete with mini.bufremove - Configure mini.ai with argument textobject (a) - Customize mini.statusline with git branch and sign indicators - Update plugin configurations for debug, gitsigns, and lint This allows syncing nvim config across multiple machines.
This commit is contained in:
parent
cfdc17be3a
commit
454e59b1a6
206
init.lua
206
init.lua
|
|
@ -92,6 +92,10 @@ do
|
||||||
-- Enable faster startup by caching compiled Lua modules
|
-- Enable faster startup by caching compiled Lua modules
|
||||||
vim.loader.enable()
|
vim.loader.enable()
|
||||||
|
|
||||||
|
-- Use zsh interactively so aliases and functions from .zshrc are available
|
||||||
|
vim.o.shell = 'zsh'
|
||||||
|
vim.o.shellcmdflag = '-ic'
|
||||||
|
|
||||||
-- Set <space> as the leader key
|
-- Set <space> as the leader key
|
||||||
-- See `:help mapleader`
|
-- See `:help mapleader`
|
||||||
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
|
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
|
||||||
|
|
@ -110,7 +114,7 @@ do
|
||||||
vim.o.number = true
|
vim.o.number = true
|
||||||
-- You can also add relative line numbers, to help with jumping.
|
-- You can also add relative line numbers, to help with jumping.
|
||||||
-- Experiment for yourself to see if you like it!
|
-- Experiment for yourself to see if you like it!
|
||||||
-- vim.o.relativenumber = true
|
vim.o.relativenumber = true
|
||||||
|
|
||||||
-- Enable mouse mode, can be useful for resizing splits for example!
|
-- Enable mouse mode, can be useful for resizing splits for example!
|
||||||
vim.o.mouse = 'a'
|
vim.o.mouse = 'a'
|
||||||
|
|
@ -205,6 +209,11 @@ do
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
|
||||||
|
|
||||||
|
-- Buffer navigation
|
||||||
|
vim.keymap.set('n', '<S-h>', '<cmd>bprevious<CR>', { desc = 'Previous buffer' })
|
||||||
|
vim.keymap.set('n', '<S-l>', '<cmd>bnext<CR>', { desc = 'Next buffer' })
|
||||||
|
vim.keymap.set('n', '<leader>bd', function() require('mini.bufremove').delete() end, { desc = '[B]uffer [D]elete' })
|
||||||
|
|
||||||
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
|
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
|
||||||
-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
|
-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
|
||||||
-- is not what someone will guess without a bit more experience.
|
-- is not what someone will guess without a bit more experience.
|
||||||
|
|
@ -347,21 +356,6 @@ do
|
||||||
-- since otherwise the icons won't display properly.
|
-- since otherwise the icons won't display properly.
|
||||||
if vim.g.have_nerd_font then vim.pack.add { gh 'nvim-tree/nvim-web-devicons' } end
|
if vim.g.have_nerd_font then vim.pack.add { gh 'nvim-tree/nvim-web-devicons' } end
|
||||||
|
|
||||||
-- Here is a more advanced configuration example that passes options to `gitsigns.nvim`
|
|
||||||
--
|
|
||||||
-- See `:help gitsigns` to understand what each configuration key does.
|
|
||||||
-- Adds git related signs to the gutter, as well as utilities for managing changes
|
|
||||||
vim.pack.add { gh 'lewis6991/gitsigns.nvim' }
|
|
||||||
require('gitsigns').setup {
|
|
||||||
signs = {
|
|
||||||
add = { text = '+' }, ---@diagnostic disable-line: missing-fields
|
|
||||||
change = { text = '~' }, ---@diagnostic disable-line: missing-fields
|
|
||||||
delete = { text = '_' }, ---@diagnostic disable-line: missing-fields
|
|
||||||
topdelete = { text = '‾' }, ---@diagnostic disable-line: missing-fields
|
|
||||||
changedelete = { text = '~' }, ---@diagnostic disable-line: missing-fields
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Useful plugin to show you pending keybinds.
|
-- Useful plugin to show you pending keybinds.
|
||||||
vim.pack.add { gh 'folke/which-key.nvim' }
|
vim.pack.add { gh 'folke/which-key.nvim' }
|
||||||
require('which-key').setup {
|
require('which-key').setup {
|
||||||
|
|
@ -417,6 +411,10 @@ do
|
||||||
inside_next = 'ii',
|
inside_next = 'ii',
|
||||||
},
|
},
|
||||||
n_lines = 500,
|
n_lines = 500,
|
||||||
|
custom_textobjects = {
|
||||||
|
-- `a` = argument: dia, daa, cia, caa, via, vaa
|
||||||
|
a = require('mini.ai').gen_spec.argument(),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Add/delete/replace surroundings (brackets, quotes, etc.)
|
-- Add/delete/replace surroundings (brackets, quotes, etc.)
|
||||||
|
|
@ -430,19 +428,160 @@ do
|
||||||
-- You could remove this setup call if you don't like it,
|
-- You could remove this setup call if you don't like it,
|
||||||
-- and try some other statusline plugin
|
-- and try some other statusline plugin
|
||||||
local statusline = require 'mini.statusline'
|
local statusline = require 'mini.statusline'
|
||||||
-- Set `use_icons` to true if you have a Nerd Font
|
|
||||||
statusline.setup { use_icons = vim.g.have_nerd_font }
|
|
||||||
|
|
||||||
-- You can configure sections in the statusline by overriding their
|
local function section_mode()
|
||||||
-- default behavior. For example, here we set the section for
|
local mode, hl = statusline.section_mode { trunc_width = 120 }
|
||||||
-- cursor location to LINE:COLUMN
|
return mode, hl
|
||||||
---@diagnostic disable-next-line: duplicate-set-field
|
end
|
||||||
statusline.section_location = function() return '%2l:%-2v' end
|
|
||||||
|
local function section_git()
|
||||||
|
local head = vim.b.gitsigns_head
|
||||||
|
if not head or head == '' then return '' end
|
||||||
|
local signs = vim.b.gitsigns_status_dict or {}
|
||||||
|
local added = signs.added or 0
|
||||||
|
local changed = signs.changed or 0
|
||||||
|
local removed = signs.removed or 0
|
||||||
|
local result = ' ' .. head
|
||||||
|
if added > 0 then result = result .. ' %#GitSignsAdd#+' .. added .. '%*' end
|
||||||
|
if changed > 0 then result = result .. ' %#GitSignsChange#~' .. changed .. '%*' end
|
||||||
|
if removed > 0 then result = result .. ' %#GitSignsDelete#-' .. removed .. '%*' end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
local function section_diagnostics()
|
||||||
|
local errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR })
|
||||||
|
local warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN })
|
||||||
|
if errors == 0 and warnings == 0 then return '' end
|
||||||
|
local result = ''
|
||||||
|
if errors > 0 then result = result .. '%#DiagnosticError#E:' .. errors .. '%* ' end
|
||||||
|
if warnings > 0 then result = result .. '%#DiagnosticWarn#W:' .. warnings .. '%*' end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
local function section_debug()
|
||||||
|
local ok, dap = pcall(require, 'dap')
|
||||||
|
if ok and dap.session() then return ' [DEBUG] ' end
|
||||||
|
return ''
|
||||||
|
end
|
||||||
|
|
||||||
|
statusline.setup {
|
||||||
|
use_icons = vim.g.have_nerd_font,
|
||||||
|
content = {
|
||||||
|
active = function()
|
||||||
|
local mode, mode_hl = section_mode()
|
||||||
|
local git = section_git()
|
||||||
|
local diag = section_diagnostics()
|
||||||
|
local dbg = section_debug()
|
||||||
|
local location = '%2l:%-2v'
|
||||||
|
return statusline.combine_groups {
|
||||||
|
{ hl = mode_hl, strings = { mode } },
|
||||||
|
{ hl = 'MiniStatuslineDevinfo', strings = { git } },
|
||||||
|
'%<', -- truncate point
|
||||||
|
{ hl = 'MiniStatuslineFilename', strings = { dbg } },
|
||||||
|
'%=', -- right align
|
||||||
|
{ hl = 'MiniStatuslineDevinfo', strings = { diag } },
|
||||||
|
{ hl = 'MiniStatuslineFileinfo', strings = {} },
|
||||||
|
{ hl = mode_hl, strings = { location } },
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
require('mini.pairs').setup {
|
||||||
|
mappings = {
|
||||||
|
-- Brackets: só fecha automaticamente quando seguido de espaço, newline ou fechamento
|
||||||
|
['('] = { action = 'open', pair = '()', neigh_pattern = '[^\\][%s%)\n]' },
|
||||||
|
['['] = { action = 'open', pair = '[]', neigh_pattern = '[^\\][%s%]\n]' },
|
||||||
|
['{'] = { action = 'open', pair = '{}', neigh_pattern = '[^\\][%s%}\n]' },
|
||||||
|
[')'] = { action = 'close', pair = '()', neigh_pattern = '[^\\].' },
|
||||||
|
[']'] = { action = 'close', pair = '[]', neigh_pattern = '[^\\].' },
|
||||||
|
['}'] = { action = 'close', pair = '{}', neigh_pattern = '[^\\].' },
|
||||||
|
-- Aspas: pula o fechamento se já estiver antes dele
|
||||||
|
['"'] = { action = 'closeopen', pair = '""', neigh_pattern = '[^\\].' },
|
||||||
|
["'"] = { action = 'closeopen', pair = "''", neigh_pattern = '[^%a\\].' },
|
||||||
|
['`'] = { action = 'closeopen', pair = '``', neigh_pattern = '[^\\].' },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Pular qualquer fechamento com <C-l> no modo insert
|
||||||
|
vim.keymap.set('i', '<C-l>', function()
|
||||||
|
local col = vim.api.nvim_win_get_cursor(0)[2]
|
||||||
|
local next_char = vim.api.nvim_get_current_line():sub(col + 1, col + 1)
|
||||||
|
if next_char:match('[%)%]%}\'"`]') then
|
||||||
|
vim.api.nvim_win_set_cursor(0, { vim.api.nvim_win_get_cursor(0)[1], col + 1 })
|
||||||
|
end
|
||||||
|
end, { desc = 'Jump past closing pair' })
|
||||||
|
require('mini.comment').setup()
|
||||||
|
require('mini.bufremove').setup()
|
||||||
|
|
||||||
-- ... and there is more!
|
-- ... and there is more!
|
||||||
-- Check out: https://github.com/nvim-mini/mini.nvim
|
-- Check out: https://github.com/nvim-mini/mini.nvim
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 3.0: SMOOTH SCROLLING
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
vim.pack.add { gh 'karb94/neoscroll.nvim' }
|
||||||
|
require('neoscroll').setup {
|
||||||
|
mappings = { '<C-u>', '<C-d>', '<C-b>', '<C-f>', 'zt', 'zz', 'zb' },
|
||||||
|
hide_cursor = false,
|
||||||
|
stop_eof = true,
|
||||||
|
easing = 'sine',
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 3.1: BUFFERLINE
|
||||||
|
-- Visual tab bar for open buffers
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
vim.pack.add { gh 'akinsho/bufferline.nvim' }
|
||||||
|
require('bufferline').setup {
|
||||||
|
options = {
|
||||||
|
separator_style = 'slant',
|
||||||
|
show_buffer_close_icons = false,
|
||||||
|
show_close_icon = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 3.2: WINDOW PICKER
|
||||||
|
-- Quickly jump to any open window with a letter label
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
vim.pack.add { gh 's1n7ax/nvim-window-picker' }
|
||||||
|
require('window-picker').setup {
|
||||||
|
hint = 'floating-big-letter',
|
||||||
|
filter_rules = {
|
||||||
|
include_current_win = false,
|
||||||
|
autoselect_one = true,
|
||||||
|
bo = {
|
||||||
|
filetype = { 'neo-tree', 'neo-tree-popup', 'notify' },
|
||||||
|
buftype = { 'terminal', 'quickfix' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>w', function()
|
||||||
|
local win = require('window-picker').pick_window()
|
||||||
|
if win then vim.api.nvim_set_current_win(win) end
|
||||||
|
end, { desc = 'Pick [W]indow' })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 3.5: NAVIGATION / JUMP
|
||||||
|
-- flash.nvim for fast cursor jumping
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
vim.pack.add { gh 'folke/flash.nvim' }
|
||||||
|
require('flash').setup {}
|
||||||
|
|
||||||
|
vim.keymap.set({ 'n', 'x', 'o' }, 's', function() require('flash').jump() end, { desc = 'Flash Jump' })
|
||||||
|
vim.keymap.set({ 'n', 'x', 'o' }, 'S', function() require('flash').treesitter() end, { desc = 'Flash Treesitter' })
|
||||||
|
end
|
||||||
|
|
||||||
-- ============================================================
|
-- ============================================================
|
||||||
-- SECTION 4: SEARCH & NAVIGATION
|
-- SECTION 4: SEARCH & NAVIGATION
|
||||||
-- Telescope setup, keymaps, LSP picker mappings
|
-- Telescope setup, keymaps, LSP picker mappings
|
||||||
|
|
@ -526,6 +665,7 @@ do
|
||||||
|
|
||||||
-- Find references for the word under your cursor.
|
-- Find references for the word under your cursor.
|
||||||
vim.keymap.set('n', 'grr', builtin.lsp_references, { buffer = buf, desc = '[G]oto [R]eferences' })
|
vim.keymap.set('n', 'grr', builtin.lsp_references, { buffer = buf, desc = '[G]oto [R]eferences' })
|
||||||
|
vim.keymap.set('n', '<leader>gr', builtin.lsp_references, { buffer = buf, desc = '[G]oto [R]eferences' })
|
||||||
|
|
||||||
-- Jump to the implementation of the word under your cursor.
|
-- Jump to the implementation of the word under your cursor.
|
||||||
-- Useful when your language has ways of declaring types without an actual implementation.
|
-- Useful when your language has ways of declaring types without an actual implementation.
|
||||||
|
|
@ -535,6 +675,7 @@ do
|
||||||
-- This is where a variable was first declared, or where a function is defined, etc.
|
-- This is where a variable was first declared, or where a function is defined, etc.
|
||||||
-- To jump back, press <C-t>.
|
-- To jump back, press <C-t>.
|
||||||
vim.keymap.set('n', 'grd', builtin.lsp_definitions, { buffer = buf, desc = '[G]oto [D]efinition' })
|
vim.keymap.set('n', 'grd', builtin.lsp_definitions, { buffer = buf, desc = '[G]oto [D]efinition' })
|
||||||
|
vim.keymap.set('n', '<F12>', builtin.lsp_definitions, { buffer = buf, desc = '[G]oto [D]efinition' })
|
||||||
|
|
||||||
-- Fuzzy find all the symbols in your current document.
|
-- Fuzzy find all the symbols in your current document.
|
||||||
-- Symbols are things like variables, functions, types, etc.
|
-- Symbols are things like variables, functions, types, etc.
|
||||||
|
|
@ -688,7 +829,7 @@ do
|
||||||
local servers = {
|
local servers = {
|
||||||
-- clangd = {},
|
-- clangd = {},
|
||||||
-- gopls = {},
|
-- gopls = {},
|
||||||
-- pyright = {},
|
pyright = {},
|
||||||
-- rust_analyzer = {},
|
-- rust_analyzer = {},
|
||||||
--
|
--
|
||||||
-- Some languages (like typescript) have entire language plugins that can be useful:
|
-- Some languages (like typescript) have entire language plugins that can be useful:
|
||||||
|
|
@ -753,7 +894,10 @@ do
|
||||||
-- You can press `g?` for help in this menu.
|
-- You can press `g?` for help in this menu.
|
||||||
local ensure_installed = vim.tbl_keys(servers or {})
|
local ensure_installed = vim.tbl_keys(servers or {})
|
||||||
vim.list_extend(ensure_installed, {
|
vim.list_extend(ensure_installed, {
|
||||||
-- You can add other tools here that you want Mason to install
|
'black',
|
||||||
|
'isort',
|
||||||
|
'debugpy',
|
||||||
|
'ruff',
|
||||||
})
|
})
|
||||||
|
|
||||||
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
||||||
|
|
@ -792,7 +936,7 @@ do
|
||||||
formatters_by_ft = {
|
formatters_by_ft = {
|
||||||
-- rust = { 'rustfmt' },
|
-- rust = { 'rustfmt' },
|
||||||
-- Conform can also run multiple formatters sequentially
|
-- Conform can also run multiple formatters sequentially
|
||||||
-- python = { "isort", "black" },
|
python = { 'isort', 'black' },
|
||||||
--
|
--
|
||||||
-- You can use 'stop_after_first' to run the first available formatter from the list
|
-- You can use 'stop_after_first' to run the first available formatter from the list
|
||||||
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
||||||
|
|
@ -846,7 +990,7 @@ do
|
||||||
-- <c-k>: Toggle signature help
|
-- <c-k>: Toggle signature help
|
||||||
--
|
--
|
||||||
-- See `:help blink-cmp-config-keymap` for defining your own keymap
|
-- See `:help blink-cmp-config-keymap` for defining your own keymap
|
||||||
preset = 'default',
|
preset = 'enter',
|
||||||
|
|
||||||
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
|
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
|
||||||
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
|
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
|
||||||
|
|
@ -960,12 +1104,12 @@ do
|
||||||
-- Here are some example plugins that I've included in the Kickstart repository.
|
-- Here are some example plugins that I've included in the Kickstart repository.
|
||||||
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
|
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
|
||||||
--
|
--
|
||||||
-- require 'kickstart.plugins.debug'
|
require 'kickstart.plugins.debug'
|
||||||
-- require 'kickstart.plugins.indent_line'
|
-- require 'kickstart.plugins.indent_line'
|
||||||
-- require 'kickstart.plugins.lint'
|
require 'kickstart.plugins.lint'
|
||||||
-- require 'kickstart.plugins.autopairs'
|
-- require 'kickstart.plugins.autopairs'
|
||||||
-- require 'kickstart.plugins.neo-tree'
|
require 'kickstart.plugins.neo-tree'
|
||||||
-- require 'kickstart.plugins.gitsigns' -- adds gitsigns recommended keymaps
|
require 'kickstart.plugins.gitsigns' -- adds gitsigns recommended keymaps
|
||||||
|
|
||||||
-- NOTE: You can add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
|
-- NOTE: You can add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
|
||||||
--
|
--
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ vim.pack.add {
|
||||||
'https://github.com/nvim-neotest/nvim-nio',
|
'https://github.com/nvim-neotest/nvim-nio',
|
||||||
'https://github.com/mason-org/mason.nvim',
|
'https://github.com/mason-org/mason.nvim',
|
||||||
'https://github.com/jay-babu/mason-nvim-dap.nvim',
|
'https://github.com/jay-babu/mason-nvim-dap.nvim',
|
||||||
'https://github.com/leoluz/nvim-dap-go',
|
'https://github.com/mfussenegger/nvim-dap-python',
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Basic debugging keymaps, feel free to change to your liking!
|
-- Basic debugging keymaps, feel free to change to your liking!
|
||||||
|
|
@ -20,10 +20,10 @@ vim.keymap.set('n', '<F5>', function() require('dap').continue() end, { desc = '
|
||||||
vim.keymap.set('n', '<F1>', function() require('dap').step_into() end, { desc = 'Debug: Step Into' })
|
vim.keymap.set('n', '<F1>', function() require('dap').step_into() end, { desc = 'Debug: Step Into' })
|
||||||
vim.keymap.set('n', '<F2>', function() require('dap').step_over() end, { desc = 'Debug: Step Over' })
|
vim.keymap.set('n', '<F2>', function() require('dap').step_over() end, { desc = 'Debug: Step Over' })
|
||||||
vim.keymap.set('n', '<F3>', function() require('dap').step_out() end, { desc = 'Debug: Step Out' })
|
vim.keymap.set('n', '<F3>', function() require('dap').step_out() end, { desc = 'Debug: Step Out' })
|
||||||
vim.keymap.set('n', '<leader>b', function() require('dap').toggle_breakpoint() end, { desc = 'Debug: Toggle Breakpoint' })
|
vim.keymap.set('n', '<leader>db', function() require('dap').toggle_breakpoint() end, { desc = '[D]ebug: Toggle [B]reakpoint' })
|
||||||
vim.keymap.set('n', '<leader>B', function() require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') end, { desc = 'Debug: Set Breakpoint' })
|
vim.keymap.set('n', '<leader>dB', function() require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') end, { desc = '[D]ebug: Set Conditional [B]reakpoint' })
|
||||||
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
|
vim.keymap.set('n', '<leader>dc', function() require('dap').continue() end, { desc = '[D]ebug: [C]ontinue' })
|
||||||
vim.keymap.set('n', '<F7>', function() require('dapui').toggle() end, { desc = 'Debug: See last session result.' })
|
vim.keymap.set('n', '<leader>du', function() require('dapui').toggle() end, { desc = '[D]ebug: Toggle [U]I' })
|
||||||
|
|
||||||
local dap = require 'dap'
|
local dap = require 'dap'
|
||||||
local dapui = require 'dapui'
|
local dapui = require 'dapui'
|
||||||
|
|
@ -40,8 +40,7 @@ require('mason-nvim-dap').setup {
|
||||||
-- You'll need to check that you have the required things installed
|
-- You'll need to check that you have the required things installed
|
||||||
-- online, please don't ask me how to install them :)
|
-- online, please don't ask me how to install them :)
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
-- Update this to ensure that you have the debuggers for the langs you want
|
'debugpy',
|
||||||
'delve',
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -69,27 +68,35 @@ dapui.setup {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Change breakpoint icons
|
-- Highlight da linha atual em execução (fundo amarelo escuro)
|
||||||
-- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' })
|
vim.api.nvim_set_hl(0, 'DapStoppedLine', { bg = '#3d3400' })
|
||||||
-- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' })
|
vim.fn.sign_define('DapStopped', { text = '▶', texthl = 'DiagnosticWarn', linehl = 'DapStoppedLine', numhl = 'DiagnosticWarn' })
|
||||||
-- local breakpoint_icons = vim.g.have_nerd_font
|
vim.fn.sign_define('DapBreakpoint', { text = '●', texthl = 'DiagnosticError', numhl = 'DiagnosticError' })
|
||||||
-- and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' }
|
vim.fn.sign_define('DapBreakpointCondition', { text = '◉', texthl = 'DiagnosticWarn', numhl = 'DiagnosticWarn' })
|
||||||
-- or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' }
|
|
||||||
-- for type, icon in pairs(breakpoint_icons) do
|
|
||||||
-- local tp = 'Dap' .. type
|
|
||||||
-- local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak'
|
|
||||||
-- vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl })
|
|
||||||
-- end
|
|
||||||
|
|
||||||
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
|
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
|
||||||
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
|
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
|
||||||
dap.listeners.before.event_exited['dapui_config'] = dapui.close
|
dap.listeners.before.event_exited['dapui_config'] = dapui.close
|
||||||
|
|
||||||
-- Install golang specific config
|
-- Install Python specific config
|
||||||
require('dap-go').setup {
|
-- O adapter sempre usa o python do Mason (que tem debugpy instalado).
|
||||||
delve = {
|
-- O python do projeto (venv) é usado apenas para rodar o script debugado.
|
||||||
-- On Windows delve must be run attached or it crashes.
|
local mason_python = vim.fn.stdpath 'data' .. '/mason/packages/debugpy/venv/bin/python'
|
||||||
-- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring
|
|
||||||
detached = vim.fn.has 'win32' == 0,
|
local function get_project_python()
|
||||||
},
|
local venv = os.getenv 'VIRTUAL_ENV' or os.getenv 'CONDA_PREFIX'
|
||||||
}
|
if venv then return venv .. '/bin/python' end
|
||||||
|
local cwd_venv = vim.fn.getcwd() .. '/.venv/bin/python'
|
||||||
|
if vim.fn.executable(cwd_venv) == 1 then return cwd_venv end
|
||||||
|
return mason_python
|
||||||
|
end
|
||||||
|
|
||||||
|
require('dap-python').setup(mason_python)
|
||||||
|
require('dap-python').test_runner = 'pytest'
|
||||||
|
|
||||||
|
-- Patch all Python configurations to use project venv and integrated terminal
|
||||||
|
for _, config in ipairs(dap.configurations.python or {}) do
|
||||||
|
config.pythonPath = get_project_python
|
||||||
|
config.justMyCode = true
|
||||||
|
config.console = 'integratedTerminal'
|
||||||
|
end
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,11 @@
|
||||||
|
|
||||||
vim.pack.add { 'https://github.com/lewis6991/gitsigns.nvim' }
|
vim.pack.add { 'https://github.com/lewis6991/gitsigns.nvim' }
|
||||||
|
|
||||||
|
-- Cores distintas para cada tipo de mudança
|
||||||
|
vim.api.nvim_set_hl(0, 'GitSignsAdd', { fg = '#57c464' }) -- verde
|
||||||
|
vim.api.nvim_set_hl(0, 'GitSignsChange', { fg = '#e5c07b' }) -- amarelo
|
||||||
|
vim.api.nvim_set_hl(0, 'GitSignsDelete', { fg = '#e06c75' }) -- vermelho
|
||||||
|
|
||||||
require('gitsigns').setup {
|
require('gitsigns').setup {
|
||||||
on_attach = function(bufnr)
|
on_attach = function(bufnr)
|
||||||
local gitsigns = require 'gitsigns'
|
local gitsigns = require 'gitsigns'
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ vim.pack.add { 'https://github.com/mfussenegger/nvim-lint' }
|
||||||
local lint = require 'lint'
|
local lint = require 'lint'
|
||||||
lint.linters_by_ft = {
|
lint.linters_by_ft = {
|
||||||
markdown = { 'markdownlint' }, -- Make sure to install `markdownlint` via mason / npm
|
markdown = { 'markdownlint' }, -- Make sure to install `markdownlint` via mason / npm
|
||||||
|
python = { 'ruff' },
|
||||||
}
|
}
|
||||||
|
|
||||||
-- To allow other plugins to add linters to require('lint').linters_by_ft,
|
-- To allow other plugins to add linters to require('lint').linters_by_ft,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue