Skip to content
996 changes: 11 additions & 985 deletions init.lua

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions lua/config/autocmds.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Autocommands configuration
-- See `:help lua-guide-autocommands`

-- Highlight when yanking (copying) text
vim.api.nvim_create_autocmd('TextYankPost', {
desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = function()
vim.hl.on_yank()
end,
})

-- Refresh files if changed outside of Neovim
vim.fn.timer_start(2000, function()
vim.cmd 'silent! checktime'
end, { ['repeat'] = -1 })
27 changes: 27 additions & 0 deletions lua/config/keymaps.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-- Keymaps configuration
-- See `:help vim.keymap.set()`

-- Clear highlights on search when pressing <Esc> in normal mode
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')

-- Diagnostic keymaps
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })

-- Go to first character in line
vim.keymap.set('', '<Leader>h', '^')

-- Go to last character in line
vim.keymap.set('', '<Leader>l', 'g_')

-- Save all files
vim.keymap.set('n', '<leader>w', ':wa <CR>')

-- Exit terminal mode with easier shortcut
vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' })

-- Keybinds to make split navigation easier
-- Use CTRL+<hjkl> to switch between windows
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' })
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
66 changes: 66 additions & 0 deletions lua/config/options.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
-- Options configuration
-- See `:help vim.o` and `:help option-list`

-- Set leader key (must happen before plugins are loaded)
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '

-- Set to true if you have a Nerd Font installed
vim.g.have_nerd_font = true

-- Line numbers
vim.o.number = true
vim.o.relativenumber = true

-- Enable mouse mode
vim.o.mouse = 'a'

-- Don't show mode (already in status line)
vim.o.showmode = false

-- Sync clipboard between OS and Neovim
vim.schedule(function()
vim.o.clipboard = 'unnamedplus'
end)

-- Enable break indent
vim.o.breakindent = true

-- Save undo history
vim.o.undofile = true

-- Case-insensitive searching UNLESS \C or capital letters in search term
vim.o.ignorecase = true
vim.o.smartcase = true

-- Keep signcolumn on by default
vim.o.signcolumn = 'yes'

-- Decrease update time
vim.o.updatetime = 250

-- Decrease mapped sequence wait time
vim.o.timeoutlen = 300

-- Configure how new splits should be opened
vim.o.splitright = true
vim.o.splitbelow = true

-- Sets how neovim will display certain whitespace characters
vim.o.list = true
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }

-- Preview substitutions live, as you type
vim.o.inccommand = 'split'

-- Show which line your cursor is on
vim.o.cursorline = true

-- Minimal number of screen lines to keep above and below the cursor
vim.o.scrolloff = 10

-- Raise dialog for unsaved changes instead of failing
vim.o.confirm = true

-- Auto-read files changed outside of Neovim
vim.opt.autoread = true
25 changes: 24 additions & 1 deletion lua/kickstart/plugins/autopairs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,28 @@
return {
'windwp/nvim-autopairs',
event = 'InsertEnter',
opts = {},
config = function()
require('nvim-autopairs').setup({
check_ts = true,
ts_config = {
lua = { 'string' }, -- it will not add a pair on that treesitter node
javascript = { 'template_string' },
java = false, -- don't check treesitter on java
},
disable_filetype = { 'TelescopePrompt', 'spectre_panel' },
fast_wrap = {
map = '<M-e>',
chars = { '{', '[', '(', '"', "'" },
pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], '%s+', ''),
offset = 0, -- Offset from pattern match
end_key = '$',
keys = 'qwertyuiopzxcvbnmasdfghjkl',
check_comma = true,
highlight = 'PmenuSel',
highlight_grey = 'LineNr',
},
})


end,
}
82 changes: 62 additions & 20 deletions lua/kickstart/plugins/debug.lua
Original file line number Diff line number Diff line change
Expand Up @@ -23,64 +23,106 @@ return {

-- Add your own debuggers here
'leoluz/nvim-dap-go',

'wojciech-kulik/xcodebuild.nvim',
},
keys = {
-- Basic debugging keymaps, feel free to change to your liking!
{
'<F5>',
'<leader>ee',
function()
require('dap').continue()
require('xcodebuild.integrations.dap').build_and_debug()
end,
desc = 'Debug: Start/Continue',
desc = 'Build & Debug',
},
{
'<F1>',
'<leader>dr',
function()
require('dap').step_into()
require('xcodebuild.integrations.dap').debug_without_build()
end,
desc = 'Debug: Step Into',
desc = 'Debug Without Building',
},
{
'<F2>',
'<leader>dt',
function()
require('dap').step_over()
require('xcodebuild.integrations.dap').debug_tests()
end,
desc = 'Debug: Step Over',
desc = 'Debug Tests',
},
{
'<F3>',
'<leader>dT',
function()
require('dap').step_out()
require('xcodebuild.integrations.dap').debug_class_tests()
end,
desc = 'Debug: Step Out',
desc = 'Debug Class Tests',
},
{
'<leader>b',
function()
require('dap').toggle_breakpoint()
require('xcodebuild.integrations.dap').toggle_breakpoint()
end,
desc = 'Debug: Toggle Breakpoint',
desc = 'Toggle Breakpoint',
},
{
'<leader>B',
function()
require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ')
require('xcodebuild.integrations.dap').toggle_message_breakpoint()
end,
desc = 'Debug: Set Breakpoint',
desc = 'Toggle Message Breakpoint',
},
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
{
'<F7>',
'<leader>dx',
function()
require('dapui').toggle()
require('xcodebuild.integrations.dap').terminate_session()
end,
desc = 'Debug: See last session result.',
desc = 'Terminate Debugger',
},
},
config = function()
local dap = require 'dap'
local dapui = require 'dapui'

local xcodebuild = require 'xcodebuild.integrations.dap'

xcodebuild.setup()

local function setupListeners()
local dap = require 'dap'
local areSet = false

dap.listeners.after['event_initialized']['me'] = function()
if not areSet then
areSet = true
vim.keymap.set('n', '<leader>dc', dap.continue, { desc = 'Continue', noremap = true })
vim.keymap.set('n', '<leader>dC', dap.run_to_cursor, { desc = 'Run To Cursor' })
vim.keymap.set('n', '<leader>ds', dap.step_over, { desc = 'Step Over' })
vim.keymap.set('n', '<leader>di', dap.step_into, { desc = 'Step Into' })
vim.keymap.set('n', '<leader>do', dap.step_out, { desc = 'Step Out' })
vim.keymap.set({ 'n', 'v' }, '<Leader>dh', require('dap.ui.widgets').hover, { desc = 'Hover' })
vim.keymap.set({ 'n', 'v' }, '<Leader>de', require('dapui').eval, { desc = 'Eval' })
end
end

dap.listeners.after['event_terminated']['me'] = function()
if areSet then
areSet = false
vim.keymap.del('n', '<leader>dc')
vim.keymap.del('n', '<leader>dC')
vim.keymap.del('n', '<leader>ds')
vim.keymap.del('n', '<leader>di')
vim.keymap.del('n', '<leader>do')
vim.keymap.del({ 'n', 'v' }, '<Leader>dh')
vim.keymap.del({ 'n', 'v' }, '<Leader>de')
end
end
end
setupListeners()
require('dap').defaults.fallback.switchbuf = 'usetab,uselast'
vim.keymap.set('n', '<leader>dx', function()
xcodebuild.terminate_session()
require('dap').listeners.after['event_terminated']['me']()
end, { desc = 'Terminate debugger' })

require('mason-nvim-dap').setup {
-- Makes a best effort to setup the various debuggers with
-- reasonable debug configurations
Expand Down
Loading
Loading