Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
a26816c
sync
jyono Jul 17, 2025
e1aee4b
things
jyono Jul 24, 2025
9bae26d
init lua
jyono Jul 24, 2025
868feb4
gd
jyono Jul 24, 2025
e214fab
add nvim-tree
jyono Aug 1, 2025
e224bba
thangs
jyono Aug 4, 2025
81f2e7c
gitsigns
jyono Aug 4, 2025
47be054
thing
jyono Aug 5, 2025
2bddc42
neotree
jyono Aug 12, 2025
ce74176
lock and load
jyono Aug 18, 2025
2f46976
update
jyono Sep 2, 2025
903b0c8
blame
jyono Sep 12, 2025
37a2b56
blame
jyono Sep 12, 2025
cd9f5a7
blame
jyono Sep 12, 2025
3fb64a9
paste no yank
jyono Sep 19, 2025
99decc9
add
jyono Oct 8, 2025
427af21
add
jyono Oct 8, 2025
5f7f4fa
add gopls
jyono Oct 8, 2025
c81ec87
trhing
jyono Oct 8, 2025
a1f1968
ts configgy
jyono Oct 9, 2025
70d8b82
more treesitting
jyono Oct 13, 2025
d2edadc
fix
jyono Oct 13, 2025
b44766b
yayaya
jyono Oct 17, 2025
c577052
nerd font
jyono Oct 20, 2025
1c6512d
no write
jyono Oct 21, 2025
e01be2e
Merge branch 'master' of https://github.com/jyono/kickstart.nvim
jyono Oct 21, 2025
6bd14e2
updates
jyono Oct 28, 2025
f3cadfa
woo
jyono Oct 28, 2025
a8a1533
changes
jyono Nov 4, 2025
357bbdb
adding val
jyono Nov 20, 2025
b3b3270
hidden greps
jyono Nov 20, 2025
68a8adb
move h to a
jyono Nov 21, 2025
fb6a5bb
add sql-formatter
jyono Nov 21, 2025
1bd862e
fixing formatter
jyono Nov 21, 2025
fea500c
fix formatter
jyono Nov 21, 2025
819633a
better naming
jyono Nov 23, 2025
10c0f99
moar
jyono Dec 16, 2025
7005b04
links
jyono Dec 17, 2025
9b06a7c
gitty
jyono Dec 17, 2025
d54396f
autoread external
jyono Feb 6, 2026
3236f48
json fmt
jyono Feb 26, 2026
f68d07c
update
jyono Mar 5, 2026
c5e4e5c
tags
jyono Mar 5, 2026
1df4c34
more lua
jyono Mar 17, 2026
4782828
fix
jyono Mar 17, 2026
afdb4a3
fix
jyono Mar 20, 2026
ffa39ac
things
jyono Mar 27, 2026
12c5456
Merge pull request #1 from jyono/jyono-more-gitsigns
jyono Mar 27, 2026
128a67d
save
jyono Apr 1, 2026
fc04e4a
Merge upstream kickstart; resolve conflicts favoring local config
jyono Apr 28, 2026
8744577
fix overrides
jyono Apr 30, 2026
9738cf2
fix
jyono May 5, 2026
bdca899
split and test
jyono May 5, 2026
ddba445
thing
jyono May 5, 2026
6d7ac09
thing
jyono May 5, 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
996 changes: 11 additions & 985 deletions init.lua

Large diffs are not rendered by default.

55 changes: 55 additions & 0 deletions lua/custom/git_links.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
--[[
Path: lua/custom/git_links.lua
Module: custom.git_links

Purpose
Opens the current buffer’s file on GitHub (or compatible origin) in the
browser, including a line or range anchor from Normal or Visual mode.

Rationale
Small, focused utility used by `plugins.kickstart.keymaps` (`<leader>go`).
Kept under `custom/` so it stays clearly “yours” vs. generated plugin specs.

Dependencies: git(1), xdg-open (Linux); file must be tracked by git.
]]

local M = {}

M.open_github = function()
-- Get current file path relative to the git project root
local file_path = vim.fn.systemlist('git ls-files --full-name ' .. vim.fn.expand '%')[1]
if not file_path or file_path == '' then
print 'File not tracked by git.'
return
end

-- Get remote URL and clean it up (handles HTTPS and SSH)
local remote = vim.fn.system('git config --get remote.origin.url'):gsub('\n', ''):gsub('%.git$', '')
if remote:match '^git@' then
remote = remote:gsub(':', '/'):gsub('git@', 'https://')
end

-- Get current branch
local branch = vim.fn.system('git rev-parse --abbrev-ref HEAD'):gsub('\n', '')

-- Get line numbers (handles single line or visual selection)
local line_start = vim.fn.line 'v'
local line_end = vim.fn.line '.'
if line_start > line_end then
line_start, line_end = line_end, line_start
end

local line_anchor = 'L' .. line_end
if vim.fn.mode():match '[vV]' then
line_anchor = 'L' .. line_start .. '-L' .. line_end
end

-- Build and open the URL
local url = string.format('%s/blob/%s/%s#%s', remote, branch, file_path, line_anchor)

-- Linux only: using xdg-open in the background to avoid freezing Neovim
vim.fn.jobstart({ 'xdg-open', url }, { detach = true })
print 'Opened in GitHub'
end

return M
36 changes: 31 additions & 5 deletions lua/custom/plugins/init.lua
Original file line number Diff line number Diff line change
@@ -1,8 +1,34 @@
-- You can add your own plugins here or in other files in this directory!
-- I promise not to create any merge conflicts in this directory :)
--
-- See the kickstart.nvim README for more information
--[[
Path: lua/custom/plugins/init.lua
Module: custom.plugins

Purpose
Lazy.nvim specs for plugins that are not part of the main `plugins.kickstart`
tree (e.g. HTTP client, experimental additions).

Rationale
`plugins.kickstart.plugins.spec` appends this module last so your personal
plugins stay merge-friendly and easy to find. Neo-tree and core stack live
under `plugins.kickstart.plugins` instead.

See `:help lazy.nvim-plugin-spec`.
]]

---@module 'lazy'
---@type LazySpec
return {}
return {
{
'mistweaverco/kulala.nvim',
keys = {
{ '<leader>Rs', desc = 'Send request' },
{ '<leader>Ra', desc = 'Send all requests' },
{ '<leader>Rb', desc = 'Open scratchpad' },
},
ft = { 'http', 'rest' },
opts = {
global_keymaps = false,
global_keymaps_prefix = '<leader>R',
kulala_keymaps_prefix = '',
},
},
}
10 changes: 0 additions & 10 deletions lua/kickstart/plugins/autopairs.lua

This file was deleted.

63 changes: 0 additions & 63 deletions lua/kickstart/plugins/gitsigns.lua

This file was deleted.

13 changes: 0 additions & 13 deletions lua/kickstart/plugins/indent_line.lua

This file was deleted.

29 changes: 0 additions & 29 deletions lua/kickstart/plugins/neo-tree.lua

This file was deleted.

28 changes: 28 additions & 0 deletions lua/plugins/kickstart/autocmds.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--[[
Path: lua/plugins/kickstart/autocmds.lua
Module: plugins.kickstart.autocmds

Purpose
Small, global autocommand hooks: yank highlight feedback and safer defaults
for Markdown buffers (modelines off in untrusted README-style files).

Rationale
Autocommands belong next to options/keymaps so “editor shell” behavior is
grouped separately from per-plugin `config = function()` blocks.

See `:help autocmd`, `:help vim.hl.on_yank()`, `:help 'modeline'`.
]]

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,
})

vim.api.nvim_create_autocmd('FileType', {
group = vim.api.nvim_create_augroup('kickstart-markdown-safe-read', { clear = true }),
pattern = 'markdown',
callback = function()
vim.opt_local.modeline = false
end,
})
41 changes: 41 additions & 0 deletions lua/plugins/kickstart/diagnostics.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
--[[
Path: lua/plugins/kickstart/diagnostics.lua
Module: plugins.kickstart.diagnostics

Purpose
One global `vim.diagnostic.config` for how LSP diagnostics render: signs,
virtual text, floating previews, underline, and sort order.

Rationale
A single module avoids conflicting `vim.diagnostic.config` calls (e.g. one
at startup and another inside LSP setup) overwriting each other.

See `:help vim.diagnostic.config()`, `:help diagnostic-signs`.
]]

vim.diagnostic.config {
severity_sort = true,
float = { border = 'rounded', source = 'if_many' },
underline = true,
signs = vim.g.have_nerd_font and {
text = {
[vim.diagnostic.severity.ERROR] = '󰅚 ',
[vim.diagnostic.severity.WARN] = '󰀪 ',
[vim.diagnostic.severity.INFO] = '󰋽 ',
[vim.diagnostic.severity.HINT] = '󰌶 ',
},
} or {},
virtual_text = {
source = 'if_many',
spacing = 2,
format = function(diagnostic)
local diagnostic_message = {
[vim.diagnostic.severity.ERROR] = diagnostic.message,
[vim.diagnostic.severity.WARN] = diagnostic.message,
[vim.diagnostic.severity.INFO] = diagnostic.message,
[vim.diagnostic.severity.HINT] = diagnostic.message,
}
return diagnostic_message[diagnostic.severity]
end,
},
}
19 changes: 13 additions & 6 deletions lua/kickstart/health.lua → lua/plugins/kickstart/health.lua
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
--[[
--
-- This file is not required for your own configuration,
-- but helps people determine if their system is setup correctly.
--
--]]
Path: lua/plugins/kickstart/health.lua
Module: plugins.kickstart.health

Purpose
Optional `:checkhealth` provider: Neovim version gate, common CLI tools
(git, make, unzip, rg), and contextual notes for Mason-related warnings.

Rationale
Health checks catch environment issues before debugging “mystery” plugin
failures. Safe to ignore if you do not run `:checkhealth`; harmless if loaded.

See `:help health-dev`, `:checkhealth`.
]]

local check_version = function()
local verstr = tostring(vim.version())
Expand All @@ -20,7 +28,6 @@ local check_version = function()
end

local check_external_reqs = function()
-- Basic utils: `git`, `make`, `unzip`
for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do
local is_executable = vim.fn.executable(exe) == 1
if is_executable then
Expand Down
27 changes: 27 additions & 0 deletions lua/plugins/kickstart/init.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
--[[
Path: lua/plugins/kickstart/init.lua
Module: plugins.kickstart

Purpose
Orchestrates core editor setup: globals, options, keymaps, autocommands,
diagnostics, then installs and loads third-party plugins via lazy.nvim.

Load order
1. Leader keys and UI flags must be set before lazy.nvim (plugin keymaps).
2. Options, keymaps, autocommands, and diagnostics run before plugins so
baseline behavior exists even if a plugin fails to load.
3. `lazy.lua` runs last and pulls in the full Lazy plugin spec list.

See `:help mapleader`, `:help vim.g`, `:help lazy.nvim.txt`.
]]

vim.g.mapleader = ' '
vim.g.maplocalleader = ' '

vim.g.have_nerd_font = true

require 'plugins.kickstart.options'
require 'plugins.kickstart.keymaps'
require 'plugins.kickstart.autocmds'
require 'plugins.kickstart.diagnostics'
require 'plugins.kickstart.lazy'
39 changes: 39 additions & 0 deletions lua/plugins/kickstart/keymaps.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
--[[
Path: lua/plugins/kickstart/keymaps.lua
Module: plugins.kickstart.keymaps

Purpose
Non-plugin (or minimally coupled) normal-mode maps: search, diagnostics
quickfix, terminal escape, window navigation, GitHub “open in browser,”
Neo-tree toggles, and visual paste without clobbering a register.

Rationale
Keeping these maps here avoids scattering `vim.keymap.set` across plugin
config files and ensures they exist even before lazy.nvim finishes loading.

See `:help vim.keymap.set()`, `:help diagnostic-loclist`.
]]

vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')

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

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

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' })

vim.keymap.set('n', '<leader>th', ':split | terminal<CR>', { desc = 'Terminal horizontal split' })
vim.keymap.set('n', '<leader>tv', ':vsplit | terminal<CR>', { desc = 'Terminal vertical split' })
vim.keymap.set('n', '<leader>tt', ':tabnew | terminal<CR>', { desc = 'Terminal in new tab' })
vim.keymap.set('n', '<leader>tf', ':ToggleTerm<CR>', { desc = 'Toggle floating terminal' })

vim.keymap.set('x', 'p', '"_dP', { noremap = true, silent = true })

local git_links = require 'custom.git_links'
vim.keymap.set({ 'n', 'v' }, '<leader>go', git_links.open_github, { desc = 'Open in GitHub' })

vim.keymap.set('n', '<leader>x', '<cmd>Neotree toggle<cr>', { desc = 'NeoTree Toggle' })
vim.keymap.set('n', '<leader>z', '<cmd>Neotree reveal<cr>', { desc = 'NeoTree Reveal' })
Loading
Loading