Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a6393b4
burza's initial config
Feb 15, 2025
d18a7f8
Merge branch 'nvim-lua:master' into master
marcinburzynski Mar 29, 2025
ca0335f
add sqls and tailwind support
marcinburzynski Apr 5, 2025
62533af
added basic sqls support
marcinburzynski Apr 10, 2025
c5b4fc8
added emmet
marcinburzynski May 10, 2025
caeea3e
added comment plugin
marcinburzynski Jun 27, 2025
4d7fdc1
set default indent, update deps
marcinburzynski Aug 21, 2025
62fe73b
lazy update
marcinburzynski Nov 7, 2025
488ce91
fix: minor misspellings (#1450)
dasvh Apr 9, 2025
b1424c9
Change LSP Keybindings to Match the Default `gr` Bindings Introduced …
theopn Apr 9, 2025
b30ef08
Remove Telescope `0.1` branch lock (#1448)
vaporif Apr 9, 2025
ea409d5
feat: switch nvim-cmp for blink.cmp (#1426)
saghen Apr 9, 2025
1f6203b
Change to Mason's new address (#1516)
guru245 May 9, 2025
92a56bf
feat: switch vim-sleuth for guess-indent.nvim (#1512)
guru245 May 11, 2025
325214d
Replace vim.opt with vim.o (#1495)
oriori1703 May 11, 2025
1f7ed30
don't lazy-load neo-tree so netrw hijacking on startup works (#1489)
pynappo May 11, 2025
31f8db2
README: mention fd-find in requirements (#1477)
dam9000 May 11, 2025
906fd64
fix: rename vim.highlight.on_yank to vim.hl.on_yank (#1482)
omrisarig13 May 11, 2025
fd3bf8e
Update remaining Mason's old address (#1530)
carloscalla May 22, 2025
09e5b4f
add sqls and tailwind support
marcinburzynski Apr 5, 2025
b19a4e8
set default indent, update deps
marcinburzynski Aug 21, 2025
36efa20
fix deprecated config
marcinburzynski Nov 7, 2025
fee1f7d
changed telescope path display
marcinburzynski Dec 10, 2025
530e218
fix tab issues
marcinburzynski Jan 25, 2026
2bb39d6
Fix indent 2 attempt
marcinburzynski Jan 25, 2026
5c2a095
Merge remote-tracking branch 'upstream/master' into sync_with_12.1
marcinburzynski Apr 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
203 changes: 106 additions & 97 deletions init.lua
Original file line number Diff line number Diff line change
@@ -1,97 +1,9 @@
--[[

=====================================================================
==================== READ THIS BEFORE CONTINUING ====================
=====================================================================
======== .-----. ========
======== .----------------------. | === | ========
======== |.-""""""""""""""""""-.| |-----| ========
======== || || | === | ========
======== || KICKSTART.NVIM || |-----| ========
======== || || | === | ========
======== || || |-----| ========
======== ||:Tutor || |:::::| ========
======== |'-..................-'| |____o| ========
======== `"")----------------(""` ___________ ========
======== /::::::::::| |::::::::::\ \ no mouse \ ========
======== /:::========| |==hjkl==:::\ \ required \ ========
======== '""""""""""""' '""""""""""""' '""""""""""' ========
======== ========
=====================================================================
=====================================================================

What is Kickstart?

Kickstart.nvim is *not* a distribution.

Kickstart.nvim is a starting point for your own configuration.
The goal is that you can read every line of code, top-to-bottom, understand
what your configuration is doing, and modify it to suit your needs.

Once you've done that, you can start exploring, configuring and tinkering to
make Neovim your own! That might mean leaving Kickstart just the way it is for a while
or immediately breaking it into modular pieces. It's up to you!

If you don't know anything about Lua, I recommend taking some time to read through
a guide. One possible example which will only take 10-15 minutes:
- https://learnxinyminutes.com/docs/lua/

After understanding a bit more about Lua, you can use `:help lua-guide` as a
reference for how Neovim integrates Lua.
- :help lua-guide
- (or HTML version): https://neovim.io/doc/user/lua-guide.html

Kickstart Guide:

TODO: The very first thing you should do is to run the command `:Tutor` in Neovim.

If you don't know what this means, type the following:
- <escape key>
- :
- Tutor
- <enter key>

(If you already know the Neovim basics, you can skip this step.)

Once you've completed that, you can continue working through **AND READING** the rest
of the kickstart init.lua.

Next, run AND READ `:help`.
This will open up a help window with some basic information
about reading, navigating and searching the builtin help documentation.

This should be the first place you go to look when you're stuck or confused
with something. It's one of my favorite Neovim features.

MOST IMPORTANTLY, we provide a keymap "<space>sh" to [s]earch the [h]elp documentation,
which is very useful when you're not exactly sure of what you're looking for.

I have left several `:help X` comments throughout the init.lua
These are hints about where to find more information about the relevant settings,
plugins or Neovim features used in Kickstart.

NOTE: Look for lines like this

Throughout the file. These are for you, the reader, to help you understand what is happening.
Feel free to delete them once you know what you're doing, but they should serve as a guide
for when you are first encountering a few different constructs in your Neovim config.

If you experience any errors while trying to install kickstart, run `:checkhealth` for more info.

I hope you enjoy your Neovim journey,
- TJ

P.S. You can delete this when you're done too. It's your config now! :)
--]]

-- Set <space> as the leader key
-- See `:help mapleader`
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '

-- Set to true if you have a Nerd Font installed and selected in the terminal
vim.g.have_nerd_font = false
vim.g.have_nerd_font = true

-- [[ Setting options ]]
-- See `:help vim.o`
Expand Down Expand Up @@ -163,6 +75,10 @@ vim.o.scrolloff = 10
-- instead raise a dialog asking if you wish to save the current file(s)
-- See `:help 'confirm'`
vim.o.confirm = true
vim.opt.expandtab = true
vim.opt.shiftwidth = 4
vim.opt.tabstop = 4
vim.opt.softtabstop = 4

-- [[ Basic Keymaps ]]
-- See `:help vim.keymap.set()`
Expand Down Expand Up @@ -212,6 +128,19 @@ vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right win
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' })

-- LuaSnip snippet navigation
vim.keymap.set({ 'i', 's' }, '<C-l>', function()
if require('luasnip').jumpable(1) then
require('luasnip').jump(1)
end
end, { desc = 'Jump to next snippet placeholder' })

vim.keymap.set({ 'i', 's' }, '<C-h>', function()
if require('luasnip').jumpable(-1) then
require('luasnip').jump(-1)
end
end, { desc = 'Jump to previous snippet placeholder' })

-- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes
-- vim.keymap.set("n", "<C-S-h>", "<C-w>H", { desc = "Move window to the left" })
-- vim.keymap.set("n", "<C-S-l>", "<C-w>L", { desc = "Move window to the right" })
Expand Down Expand Up @@ -243,6 +172,8 @@ end
local rtp = vim.opt.rtp
rtp:prepend(lazypath)

vim.env.ESLINT_D_PPID = vim.fn.getpid()

-- [[ Configure and install plugins ]]
--
-- To check the current status of your plugins, run
Expand Down Expand Up @@ -394,6 +325,9 @@ require('lazy').setup({
-- },
-- },
-- pickers = {}
defaults = {
path_display = { 'smart' },
},
extensions = {
['ui-select'] = { require('telescope.themes').get_dropdown() },
},
Expand Down Expand Up @@ -497,9 +431,12 @@ require('lazy').setup({
-- Maps LSP server names between nvim-lspconfig and Mason package names.
'mason-org/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',

-- Useful status updates for LSP.
{ 'j-hui/fidget.nvim', opts = {} },

-- Allows extra capabilities provided by blink.cmp
'saghen/blink.cmp',
'yioneko/nvim-vtsls',
},
config = function()
-- Brief aside: **What is LSP?**
Expand Down Expand Up @@ -552,6 +489,18 @@ require('lazy').setup({
-- or a suggestion from your LSP for this to activate.
map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' })

-- Find references for the word under your cursor.
map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')

-- Jump to the implementation of the word under your cursor.
-- Useful when your language has ways of declaring types without an actual implementation.
map('gri', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')

-- Jump to the definition of the word under your cursor.
-- This is where a variable was first declared, or where a function is defined, etc.
-- To jump back, press <C-t>.
map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')

-- WARN: This is not Goto Definition, this is Goto Declaration.
-- For example, in C this would take you to the header.
map('grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
Expand Down Expand Up @@ -592,6 +541,11 @@ require('lazy').setup({
if client and client:supports_method('textDocument/inlayHint', event.buf) then
map('<leader>th', function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) end, '[T]oggle Inlay [H]ints')
end

if client then
client.server_capabilities.documentFormattingProvider = false
client.server_capabilities.documentRangeFormattingProvider = false
end
end,
})

Expand All @@ -601,16 +555,28 @@ require('lazy').setup({
---@type table<string, vim.lsp.Config>
local servers = {
-- clangd = {},
-- gopls = {},
-- pyright = {},
gopls = {},
pyright = {},
-- rust_analyzer = {},
--
-- Some languages (like typescript) have entire language plugins that can be useful:
-- https://github.com/pmizio/typescript-tools.nvim
--
-- But for many setups, the LSP (`ts_ls`) will work just fine
-- ts_ls = {},

vtsls = {},
dockerls = {},
docker_compose_language_service = {},
css_variables = {},
cssls = {},
dotls = {},
eslint = {},
html = {},
mdx_analyzer = {},
nextls = {},
-- nginx_language_server = {},
sqls = {},
tailwindcss = {},
stylua = {}, -- Used to format Lua code

-- Special Lua Config, as recommended by neovim help docs
Expand Down Expand Up @@ -696,6 +662,8 @@ require('lazy').setup({
end,
formatters_by_ft = {
lua = { 'stylua' },
javascript = {},
typescript = {},
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
Expand Down Expand Up @@ -732,9 +700,24 @@ require('lazy').setup({
-- end,
-- },
},
opts = {},
opts = {
history = true,
region_check_events = 'InsertEnter',
delete_check_events = 'TextChanged,InsertLeave',
},
},
},

config = function(_, opts)
require('luasnip').setup {
history = true,
region_check_events = 'InsertEnter',
delete_check_events = 'TextChanged,InsertLeave',
}

require('blink.cmp').setup(opts)
end,

---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
Expand Down Expand Up @@ -762,6 +745,27 @@ require('lazy').setup({
-- See :h blink-cmp-config-keymap for defining your own keymap
preset = 'default',

['<Tab>'] = {
function(cmp)
if cmp.is_visible() then
return cmp.select_next()
end
end,
'fallback',
},

['<S-Tab>'] = {
function(cmp)
if cmp.is_visible() then
return cmp.select_prev()
end
end,
'fallback',
},

['<CR>'] = { 'accept', 'fallback' },
['<C-Space>'] = { 'show', 'show_documentation', 'hide_documentation' },
['<C-e>'] = { 'hide' },
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
},
Expand Down Expand Up @@ -935,10 +939,15 @@ require('lazy').setup({
--
-- require 'kickstart.plugins.debug',
-- require 'kickstart.plugins.indent_line',
-- require 'kickstart.plugins.lint',
require 'kickstart.plugins.lint',
-- require 'kickstart.plugins.autopairs',
-- require 'kickstart.plugins.neo-tree',
-- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommended keymaps
require 'kickstart.plugins.neo-tree',
require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
require 'kickstart.plugins.lazygit',
require 'kickstart.plugins.trouble',
require 'kickstart.plugins.harpoon',
require 'kickstart.plugins.emmet',
require 'kickstart.plugins.comment',

-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
-- This is the easiest way to modularize your config.
Expand Down
Loading
Loading