From 912622fbe4a11798f0a4e6054bbdaa8c8b82f5c3 Mon Sep 17 00:00:00 2001 From: Kohei Okumura Date: Fri, 19 Dec 2025 08:20:30 +0900 Subject: [PATCH 01/23] inital commit --- .gitignore | 1 - lazy-lock.json | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 lazy-lock.json diff --git a/.gitignore b/.gitignore index 005b535b606..8a192cab54d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ test.sh nvim spell/ -lazy-lock.json diff --git a/lazy-lock.json b/lazy-lock.json new file mode 100644 index 00000000000..8b7758966e8 --- /dev/null +++ b/lazy-lock.json @@ -0,0 +1,23 @@ +{ + "LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" }, + "blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" }, + "conform.nvim": { "branch": "master", "commit": "9b8fa5e0b78168f68bee9bf886dc20f287c61e02" }, + "fidget.nvim": { "branch": "main", "commit": "e32b672d8fd343f9d6a76944fedb8c61d7d8111a" }, + "gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" }, + "guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "3b3571b4dadbcb464804466e9872e7246c316af7" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, + "mason.nvim": { "branch": "main", "commit": "57e5a8addb8c71fb063ee4acda466c7cf6ad2800" }, + "mini.nvim": { "branch": "main", "commit": "a995fe9cd4193fb492b5df69175a351a74b3d36b" }, + "nvim-lspconfig": { "branch": "master", "commit": "c4f67bf85b01a57e3c130352c0a0e453ab8cd5b9" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, + "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, + "telescope.nvim": { "branch": "master", "commit": "3d757e586ff0bfc85bdb7b46c9d3d932147a0cde" }, + "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, + "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" }, + "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } +} From b7899a5892021a152412b69ab4ac5b73329fea09 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 07:48:29 +0900 Subject: [PATCH 02/23] feat: add obsidian and added some config --- init.lua | 3 +- lazy-lock.json | 5 +- lua/custom/plugins/obsidian-nvim.lua | 133 +++++++++++++++++++++++++++ 3 files changed, 138 insertions(+), 3 deletions(-) create mode 100644 lua/custom/plugins/obsidian-nvim.lua diff --git a/init.lua b/init.lua index b98ffc6198a..e9c258bba50 100644 --- a/init.lua +++ b/init.lua @@ -344,6 +344,7 @@ require('lazy').setup({ -- Document existing key chains spec = { + { 'o', group = '[O]bsidian' }, { 's', group = '[S]earch' }, { 't', group = '[T]oggle' }, { 'h', group = 'Git [H]unk', mode = { 'n', 'v' } }, @@ -984,7 +985,7 @@ require('lazy').setup({ -- This is the easiest way to modularize your config. -- -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. - -- { import = 'custom.plugins' }, + { import = 'custom.plugins' }, -- -- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec` -- Or use telescope! diff --git a/lazy-lock.json b/lazy-lock.json index 8b7758966e8..75e700d1e68 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -5,14 +5,15 @@ "fidget.nvim": { "branch": "main", "commit": "e32b672d8fd343f9d6a76944fedb8c61d7d8111a" }, "gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" }, "guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" }, - "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "3b3571b4dadbcb464804466e9872e7246c316af7" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, "mason.nvim": { "branch": "main", "commit": "57e5a8addb8c71fb063ee4acda466c7cf6ad2800" }, "mini.nvim": { "branch": "main", "commit": "a995fe9cd4193fb492b5df69175a351a74b3d36b" }, "nvim-lspconfig": { "branch": "master", "commit": "c4f67bf85b01a57e3c130352c0a0e453ab8cd5b9" }, - "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-treesitter": { "branch": "main", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "obsidian.nvim": { "branch": "main", "commit": "f6b241fa08d157701b9b0850b1251d98f86b122e" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, diff --git a/lua/custom/plugins/obsidian-nvim.lua b/lua/custom/plugins/obsidian-nvim.lua new file mode 100644 index 00000000000..3e20745918a --- /dev/null +++ b/lua/custom/plugins/obsidian-nvim.lua @@ -0,0 +1,133 @@ +return { + "obsidian-nvim/obsidian.nvim", + version = "*", -- use latest release, remove to use latest commit + ft = "markdown", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-telescope/telescope.nvim", + }, + ---@module 'obsidian' + ---@type obsidian.config + opts = { + legacy_commands = false, -- this will be removed in the next major release + workspaces = { + { + name = "main", + path = "~/Documents/obsidian_git/Obsidian_vault/", + }, + }, + daily_notes = { + folder = "Journals", + date_format = "%Y%m%d", + }, + }, + config = function(_, opts) + require("obsidian").setup(opts) + + local vault_path = vim.fn.expand("~/Documents/obsidian_git/Obsidian_vault/") + + -- Custom function to search by alias + local function search_by_alias() + local pickers = require("telescope.pickers") + local finders = require("telescope.finders") + local conf = require("telescope.config").values + local actions = require("telescope.actions") + local action_state = require("telescope.actions.state") + + -- Collect all files with their aliases + local entries = {} + local scandir = require("plenary.scandir") + local files = scandir.scan_dir(vault_path, { hidden = false, depth = 10, add_dirs = false }) + + for _, file in ipairs(files) do + if file:match("%.md$") then + local f = io.open(file, "r") + if f then + local content = f:read("*a") + f:close() + + -- Parse YAML frontmatter + local frontmatter = content:match("^%-%-%-\n(.-)\n%-%-%-") + if frontmatter then + -- Extract aliases (supports both list and inline formats) + local aliases = {} + + -- Match "aliases: [alias1, alias2]" format + local inline_aliases = frontmatter:match("aliases:%s*%[(.-)%]") + if inline_aliases then + for alias in inline_aliases:gmatch("[^,]+") do + alias = alias:match("^%s*(.-)%s*$") -- trim + alias = alias:gsub('^"(.-)"$', "%1"):gsub("^'(.-)'$", "%1") -- remove quotes + if alias ~= "" then + table.insert(aliases, alias) + end + end + end + + -- Match YAML list format: + -- aliases: + -- - alias1 + -- - alias2 + local list_section = frontmatter:match("aliases:%s*\n(.-)\n%w") + or frontmatter:match("aliases:%s*\n(.-)$") + if list_section then + for alias in list_section:gmatch("%s*%-%s*([^\n]+)") do + alias = alias:match("^%s*(.-)%s*$") + alias = alias:gsub('^"(.-)"$', "%1"):gsub("^'(.-)'$", "%1") + if alias ~= "" then + table.insert(aliases, alias) + end + end + end + + -- Add entries for each alias + local rel_path = file:gsub(vault_path, "") + local filename = vim.fn.fnamemodify(file, ":t:r") + for _, alias in ipairs(aliases) do + table.insert(entries, { + alias = alias, + filename = filename, + path = file, + display = alias .. " -> " .. rel_path, + }) + end + end + end + end + end + + pickers + .new({}, { + prompt_title = "Search Obsidian Aliases", + finder = finders.new_table({ + results = entries, + entry_maker = function(entry) + return { + value = entry, + display = entry.display, + ordinal = entry.alias .. " " .. entry.filename, + path = entry.path, + } + end, + }), + sorter = conf.generic_sorter({}), + previewer = conf.file_previewer({}), + attach_mappings = function(prompt_bufnr, map) + actions.select_default:replace(function() + actions.close(prompt_bufnr) + local selection = action_state.get_selected_entry() + if selection then + vim.cmd("edit " .. vim.fn.fnameescape(selection.path)) + end + end) + return true + end, + }) + :find() + end + + -- Set up keymaps + vim.keymap.set("n", "oa", search_by_alias, { desc = "[O]bsidian search by [A]lias" }) + vim.keymap.set("n", "od", "Obsidian today", { desc = "[O]bsidian [D]aily note (today)" }) + end, +} From 8df9533a7b01c6e259add9ccbed33f17921c9a34 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 13:49:58 +0900 Subject: [PATCH 03/23] feat: update init.lua --- init.lua | 61 +------------------------------------------------------- 1 file changed, 1 insertion(+), 60 deletions(-) diff --git a/init.lua b/init.lua index e9c258bba50..9611c254ee2 100644 --- a/init.lua +++ b/init.lua @@ -19,79 +19,20 @@ ======== ======== ===================================================================== ===================================================================== - -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: - - - - : - - Tutor - - - - (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 "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 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` From 20035ad333f29f9374b3e874922a3c0c9a45c513 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 13:56:06 +0900 Subject: [PATCH 04/23] show only currnet line number --- init.lua | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/init.lua b/init.lua index 9611c254ee2..debf9711bd7 100644 --- a/init.lua +++ b/init.lua @@ -39,11 +39,9 @@ vim.g.have_nerd_font = true -- NOTE: You can change these options as you wish! -- For more options, you can see `:help option-list` --- Make line numbers default +-- Only show line number on current line vim.o.number = true --- You can also add relative line numbers, to help with jumping. --- Experiment for yourself to see if you like it! --- vim.o.relativenumber = true +vim.o.statuscolumn = '%{v:relnum == 0 ? v:lnum : ""}' -- Enable mouse mode, can be useful for resizing splits for example! vim.o.mouse = 'a' @@ -635,8 +633,9 @@ require('lazy').setup({ completion = { callSnippet = 'Replace', }, - -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings - -- diagnostics = { disable = { 'missing-fields' } }, + diagnostics = { + globals = { 'vim' }, + }, }, }, }, From 46d6755b1e604d8a2fc046ac0e471c774dd762b6 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 13:59:16 +0900 Subject: [PATCH 05/23] update options --- init.lua | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/init.lua b/init.lua index debf9711bd7..bdc101de01c 100644 --- a/init.lua +++ b/init.lua @@ -46,44 +46,25 @@ vim.o.statuscolumn = '%{v:relnum == 0 ? v:lnum : ""}' -- Enable mouse mode, can be useful for resizing splits for example! vim.o.mouse = 'a' --- Don't show the mode, since it's already in the status line vim.o.showmode = false - --- Sync clipboard between OS and Neovim. --- Schedule the setting after `UiEnter` because it can increase startup-time. --- Remove this option if you want your OS clipboard to remain independent. --- See `:help 'clipboard'` 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 one or more capital letters in the 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 in the editor. --- See `:help 'list'` --- and `:help 'listchars'` --- -- Notice listchars is set using `vim.opt` instead of `vim.o`. -- It is very similar to `vim.o` but offers an interface for conveniently interacting with tables. -- See `:help lua-options` @@ -93,9 +74,7 @@ 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 +vim.o.cursorline = false -- Minimal number of screen lines to keep above and below the cursor. vim.o.scrolloff = 10 From efc03671344cd4d5d6c5d778bc1acd1a386a60ff Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 17:16:21 +0900 Subject: [PATCH 06/23] remove comments --- init.lua | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/init.lua b/init.lua index bdc101de01c..1325a842db2 100644 --- a/init.lua +++ b/init.lua @@ -81,14 +81,10 @@ vim.o.scrolloff = 10 -- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`), -- instead raise a dialog asking if you wish to save the current file(s) --- See `:help 'confirm'` vim.o.confirm = true -- [[ Basic Keymaps ]] --- See `:help vim.keymap.set()` - -- Clear highlights on search when pressing in normal mode --- See `:help hlsearch` vim.keymap.set('n', '', 'nohlsearch') -- Diagnostic keymaps @@ -102,33 +98,15 @@ vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagn -- or just use to exit terminal mode vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) --- TIP: Disable arrow keys in normal mode --- vim.keymap.set('n', '', 'echo "Use h to move!!"') --- vim.keymap.set('n', '', 'echo "Use l to move!!"') --- vim.keymap.set('n', '', 'echo "Use k to move!!"') --- vim.keymap.set('n', '', 'echo "Use j to move!!"') - -- Keybinds to make split navigation easier. --- Use CTRL+ to switch between windows --- --- See `:help wincmd` for a list of all window commands vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) --- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes --- vim.keymap.set("n", "", "H", { desc = "Move window to the left" }) --- vim.keymap.set("n", "", "L", { desc = "Move window to the right" }) --- vim.keymap.set("n", "", "J", { desc = "Move window to the lower" }) --- vim.keymap.set("n", "", "K", { desc = "Move window to the upper" }) - -- [[ Basic Autocommands ]] --- See `:help lua-guide-autocommands` - -- Highlight when yanking (copying) text -- Try it with `yap` in normal mode --- See `:help vim.hl.on_yank()` vim.api.nvim_create_autocmd('TextYankPost', { desc = 'Highlight when yanking (copying) text', group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), @@ -138,7 +116,6 @@ vim.api.nvim_create_autocmd('TextYankPost', { }) -- [[ Install `lazy.nvim` plugin manager ]] --- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' if not (vim.uv or vim.loop).fs_stat(lazypath) then local lazyrepo = 'https://github.com/folke/lazy.nvim.git' @@ -153,7 +130,6 @@ local rtp = vim.opt.rtp rtp:prepend(lazypath) -- [[ Configure and install plugins ]] --- -- To check the current status of your plugins, run -- :Lazy -- From 7ff5edea946d2936aa87be89802c36bfd10dfd52 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 17:24:38 +0900 Subject: [PATCH 07/23] update plugins --- init.lua | 16 +--------------- lazy-lock.json | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/init.lua b/init.lua index 1325a842db2..601a09f0a12 100644 --- a/init.lua +++ b/init.lua @@ -837,21 +837,7 @@ require('lazy').setup({ { -- Highlight, edit, and navigate code 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate', - main = 'nvim-treesitter.configs', -- Sets main module to use for opts - -- [[ Configure Treesitter ]] See `:help nvim-treesitter` - opts = { - ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }, - -- Autoinstall languages that are not installed - auto_install = true, - highlight = { - enable = true, - -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. - -- If you are experiencing weird indenting issues, add the language to - -- the list of additional_vim_regex_highlighting and disabled languages for indent. - additional_vim_regex_highlighting = { 'ruby' }, - }, - indent = { enable = true, disable = { 'ruby' } }, - }, + -- Install parsers with :TSInstall -- There are additional nvim-treesitter modules that you can use to interact -- with nvim-treesitter. You should go explore a few and see what interests you: -- diff --git a/lazy-lock.json b/lazy-lock.json index 75e700d1e68..8e98db9171b 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,23 +1,24 @@ { "LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" }, "blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" }, - "conform.nvim": { "branch": "master", "commit": "9b8fa5e0b78168f68bee9bf886dc20f287c61e02" }, - "fidget.nvim": { "branch": "main", "commit": "e32b672d8fd343f9d6a76944fedb8c61d7d8111a" }, - "gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" }, + "conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" }, + "fidget.nvim": { "branch": "main", "commit": "7fa433a83118a70fe24c1ce88d5f0bd3453c0970" }, + "gitsigns.nvim": { "branch": "main", "commit": "abf82a65f185bd54adc0679f74b7d6e1ada690c9" }, "guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" }, - "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "3b3571b4dadbcb464804466e9872e7246c316af7" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "80c0130c5f16b551865a69e832f1feadeedb5fbe" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, - "mason.nvim": { "branch": "main", "commit": "57e5a8addb8c71fb063ee4acda466c7cf6ad2800" }, - "mini.nvim": { "branch": "main", "commit": "a995fe9cd4193fb492b5df69175a351a74b3d36b" }, - "nvim-lspconfig": { "branch": "master", "commit": "c4f67bf85b01a57e3c130352c0a0e453ab8cd5b9" }, - "nvim-treesitter": { "branch": "main", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, + "mini.nvim": { "branch": "main", "commit": "c163117900c17d4abf30bc09452a261c8536060c" }, + "nvim-lspconfig": { "branch": "master", "commit": "92ee7d42320edfbb81f3cad851314ab197fa324a" }, + "nvim-treesitter": { "branch": "main", "commit": "ec034813775d7e2974c7551c8c34499a828963f8" }, + "nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" }, "obsidian.nvim": { "branch": "main", "commit": "f6b241fa08d157701b9b0850b1251d98f86b122e" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "master", "commit": "3d757e586ff0bfc85bdb7b46c9d3d932147a0cde" }, + "telescope.nvim": { "branch": "master", "commit": "0d8b6eaa0b5ae6bb3d9785f7a3ba4a4c6c1b1af2" }, "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } From 59cba2369436ed6bb292c28a90c739bfa69bd541 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 17:50:04 +0900 Subject: [PATCH 08/23] remvoe comments --- init.lua | 105 ------------------------------------------------------- 1 file changed, 105 deletions(-) diff --git a/init.lua b/init.lua index 601a09f0a12..a75b3e7a246 100644 --- a/init.lua +++ b/init.lua @@ -132,39 +132,8 @@ rtp:prepend(lazypath) -- [[ Configure and install plugins ]] -- To check the current status of your plugins, run -- :Lazy --- --- You can press `?` in this menu for help. Use `:q` to close the window --- --- To update plugins you can run --- :Lazy update --- --- NOTE: Here is where you install your plugins. require('lazy').setup({ - -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). 'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically - - -- NOTE: Plugins can also be added by using a table, - -- with the first argument being the link and the following - -- keys can be used to configure plugin behavior/loading/etc. - -- - -- Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded. - -- - - -- Alternatively, use `config = function() ... end` for full control over the configuration. - -- If you prefer to call `setup` explicitly, use: - -- { - -- 'lewis6991/gitsigns.nvim', - -- config = function() - -- require('gitsigns').setup({ - -- -- Your gitsigns configuration here - -- }) - -- end, - -- } - -- - -- Here is a more advanced example where we pass configuration - -- options to `gitsigns.nvim`. - -- - -- See `:help gitsigns` to understand what the configuration keys do { -- Adds git related signs to the gutter, as well as utilities for managing changes 'lewis6991/gitsigns.nvim', opts = { @@ -177,33 +146,13 @@ require('lazy').setup({ }, }, }, - - -- NOTE: Plugins can also be configured to run Lua code when they are loaded. - -- - -- This is often very useful to both group configuration, as well as handle - -- lazy loading plugins that don't need to be loaded immediately at startup. - -- - -- For example, in the following configuration, we use: - -- event = 'VimEnter' - -- - -- which loads which-key before all the UI elements are loaded. Events can be - -- normal autocommands events (`:help autocmd-events`). - -- - -- Then, because we use the `opts` key (recommended), the configuration runs - -- after the plugin has been loaded as `require(MODULE).setup(opts)`. - { -- Useful plugin to show you pending keybinds. 'folke/which-key.nvim', event = 'VimEnter', -- Sets the loading event to 'VimEnter' opts = { - -- delay between pressing a key and opening which-key (milliseconds) - -- this setting is independent of vim.o.timeoutlen delay = 0, icons = { - -- set icon mappings to true if you have a Nerd Font mappings = vim.g.have_nerd_font, - -- If you are using a Nerd Font: set icons.keys to an empty table which will use the - -- default which-key.nvim defined Nerd Font icons, otherwise define a string table keys = vim.g.have_nerd_font and {} or { Up = ' ', Down = ' ', @@ -236,7 +185,6 @@ require('lazy').setup({ }, }, - -- Document existing key chains spec = { { 'o', group = '[O]bsidian' }, { 's', group = '[S]earch' }, @@ -245,14 +193,6 @@ require('lazy').setup({ }, }, }, - - -- NOTE: Plugins can specify dependencies. - -- - -- The dependencies are proper plugin specifications as well - anything - -- you do for a plugin at the top level, you can do for a dependency. - -- - -- Use the `dependencies` key to specify the dependencies of a particular plugin - { -- Fuzzy Finder (files, lsp, etc) 'nvim-telescope/telescope.nvim', event = 'VimEnter', @@ -260,54 +200,16 @@ require('lazy').setup({ 'nvim-lua/plenary.nvim', { -- If encountering errors, see telescope-fzf-native README for installation instructions 'nvim-telescope/telescope-fzf-native.nvim', - - -- `build` is used to run some command when the plugin is installed/updated. - -- This is only run then, not every time Neovim starts up. build = 'make', - - -- `cond` is a condition used to determine whether this plugin should be - -- installed and loaded. cond = function() return vim.fn.executable 'make' == 1 end, }, { 'nvim-telescope/telescope-ui-select.nvim' }, - - -- Useful for getting pretty icons, but requires a Nerd Font. { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font }, }, config = function() - -- Telescope is a fuzzy finder that comes with a lot of different things that - -- it can fuzzy find! It's more than just a "file finder", it can search - -- many different aspects of Neovim, your workspace, LSP, and more! - -- - -- The easiest way to use Telescope, is to start by doing something like: - -- :Telescope help_tags - -- - -- After running this command, a window will open up and you're able to - -- type in the prompt window. You'll see a list of `help_tags` options and - -- a corresponding preview of the help. - -- - -- Two important keymaps to use while in Telescope are: - -- - Insert mode: - -- - Normal mode: ? - -- - -- This opens a window that shows you all of the keymaps for the current - -- Telescope picker. This is really useful to discover what Telescope can - -- do as well as how to actually do it! - - -- [[ Configure Telescope ]] - -- See `:help telescope` and `:help telescope.setup()` require('telescope').setup { - -- You can put your default mappings / updates / etc. in here - -- All the info you're looking for is in `:help telescope.setup()` - -- - -- defaults = { - -- mappings = { - -- i = { [''] = 'to_fuzzy_refine' }, - -- }, - -- }, - -- pickers = {} extensions = { ['ui-select'] = { require('telescope.themes').get_dropdown(), @@ -315,11 +217,9 @@ require('lazy').setup({ }, } - -- Enable Telescope extensions if they are installed pcall(require('telescope').load_extension, 'fzf') pcall(require('telescope').load_extension, 'ui-select') - -- See `:help telescope.builtin` local builtin = require 'telescope.builtin' vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) @@ -332,17 +232,13 @@ require('lazy').setup({ vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) - -- Slightly advanced example of overriding default behavior and theme vim.keymap.set('n', '/', function() - -- You can pass additional configuration to Telescope to change the theme, layout, etc. builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { winblend = 10, previewer = false, }) end, { desc = '[/] Fuzzily search in current buffer' }) - -- It's also possible to pass additional configuration options. - -- See `:help telescope.builtin.live_grep()` for information about particular keys vim.keymap.set('n', 's/', function() builtin.live_grep { grep_open_files = true, @@ -350,7 +246,6 @@ require('lazy').setup({ } end, { desc = '[S]earch [/] in Open Files' }) - -- Shortcut for searching your Neovim configuration files vim.keymap.set('n', 'sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' }) From 803aba23c5c53d2cc5d27c5f98257f67e1078704 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 18:01:06 +0900 Subject: [PATCH 09/23] read more --- init.lua | 32 +------------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/init.lua b/init.lua index a75b3e7a246..c67c6364939 100644 --- a/init.lua +++ b/init.lua @@ -269,54 +269,24 @@ require('lazy').setup({ -- Main LSP Configuration 'neovim/nvim-lspconfig', dependencies = { - -- Automatically install LSPs and related tools to stdpath for Neovim - -- Mason must be loaded before its dependents so we need to set it up here. - -- NOTE: `opts = {}` is the same as calling `require('mason').setup({})` { 'mason-org/mason.nvim', opts = {} }, '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', }, config = function() - -- Brief aside: **What is LSP?** - -- - -- LSP is an initialism you've probably heard, but might not understand what it is. - -- - -- LSP stands for Language Server Protocol. It's a protocol that helps editors - -- and language tooling communicate in a standardized fashion. - -- - -- In general, you have a "server" which is some tool built to understand a particular - -- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers - -- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone - -- processes that communicate with some "client" - in this case, Neovim! - -- - -- LSP provides Neovim with features like: - -- - Go to definition - -- - Find references - -- - Autocompletion - -- - Symbol Search - -- - and more! - -- -- Thus, Language Servers are external tools that must be installed separately from -- Neovim. This is where `mason` and related plugins come into play. -- - -- If you're wondering about lsp vs treesitter, you can check out the wonderfully - -- and elegantly composed help section, `:help lsp-vs-treesitter` - -- This function gets run when an LSP attaches to a particular buffer. -- That is to say, every time a new file is opened that is associated with -- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this -- function will be executed to configure the current buffer + vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }), callback = function(event) - -- NOTE: Remember that Lua is a real programming language, and as such it is possible - -- to define small helper and utility functions so you don't have to repeat yourself. -- -- In this case, we create a function that lets us more easily define mappings specific -- for LSP related items. It sets the mode, buffer and description for us each time. From 25d4c3ced32f6cf78ce1803a1d29cbc32844bc7d Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 18:11:46 +0900 Subject: [PATCH 10/23] update comment --- init.lua | 57 -------------------------------------------------------- 1 file changed, 57 deletions(-) diff --git a/init.lua b/init.lua index c67c6364939..f7ce8e0ad8a 100644 --- a/init.lua +++ b/init.lua @@ -420,29 +420,16 @@ require('lazy').setup({ -- When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities. -- So, we create new capabilities with blink.cmp, and then broadcast that to the servers. local capabilities = require('blink.cmp').get_lsp_capabilities() - - -- Enable the following language servers - -- Feel free to add/remove any LSPs that you want here. They will automatically be installed. - -- - -- Add any additional override configuration in the following tables. Available keys are: - -- - cmd (table): Override the default command used to start the server - -- - filetypes (table): Override the default list of associated filetypes for the server - -- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features. - -- - settings (table): Override the default settings passed when initializing the server. - -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ local servers = { -- clangd = {}, -- gopls = {}, -- pyright = {}, -- rust_analyzer = {}, -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs - -- -- 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 = {}, - -- lua_ls = { -- cmd = { ... }, @@ -460,20 +447,6 @@ require('lazy').setup({ }, }, } - - -- Ensure the servers and tools above are installed - -- - -- To check the current status of installed tools and/or manually install - -- other tools, you can run - -- :Mason - -- - -- You can press `g?` for help in this menu. - -- - -- `mason` had to be setup earlier: to configure its options see the - -- `dependencies` table for `nvim-lspconfig` above. - -- - -- You can add other tools here that you want Mason to install - -- for you, so that they are available from within Neovim. local ensure_installed = vim.tbl_keys(servers or {}) vim.list_extend(ensure_installed, { 'stylua', -- Used to format Lua code @@ -575,42 +548,12 @@ require('lazy').setup({ --- @type blink.cmp.Config opts = { keymap = { - -- 'default' (recommended) for mappings similar to built-in completions - -- to accept ([y]es) the completion. - -- This will auto-import if your LSP supports it. - -- This will expand snippets if the LSP sent a snippet. - -- 'super-tab' for tab to accept - -- 'enter' for enter to accept - -- 'none' for no mappings - -- - -- For an understanding of why the 'default' preset is recommended, - -- you will need to read `:help ins-completion` - -- - -- No, but seriously. Please read `:help ins-completion`, it is really good! - -- - -- All presets have the following mappings: - -- /: move to right/left of your snippet expansion - -- : Open menu or open docs if already open - -- / or /: Select next/previous item - -- : Hide menu - -- : Toggle signature help - -- - -- See :h blink-cmp-config-keymap for defining your own keymap preset = 'default', - - -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: - -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps }, - appearance = { - -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' - -- Adjusts spacing to ensure icons are aligned nerd_font_variant = 'mono', }, - completion = { - -- By default, you may press `` to show the documentation. - -- Optionally, set `auto_show = true` to show the documentation after a delay. documentation = { auto_show = false, auto_show_delay_ms = 500 }, }, From 6dd1865154030ce0dbb8eeeb425fcfa103d1371c Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 18:33:25 +0900 Subject: [PATCH 11/23] fin init.lua and add catpuccin --- init.lua | 63 ++++++++------------------------------------------ lazy-lock.json | 2 +- 2 files changed, 10 insertions(+), 55 deletions(-) diff --git a/init.lua b/init.lua index f7ce8e0ad8a..5c716e7cc6a 100644 --- a/init.lua +++ b/init.lua @@ -580,86 +580,43 @@ require('lazy').setup({ }, }, - { -- You can easily change to a different colorscheme. - -- Change the name of the colorscheme plugin below, and then - -- change the command in the config to whatever the name of that colorscheme is. - -- - -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. - 'folke/tokyonight.nvim', - priority = 1000, -- Make sure to load this before all the other start plugins. + { -- Catppuccin colorscheme + 'catppuccin/nvim', + name = 'catppuccin', + priority = 1000, config = function() - ---@diagnostic disable-next-line: missing-fields - require('tokyonight').setup { - styles = { - comments = { italic = false }, -- Disable italics in comments - }, + require('catppuccin').setup { + flavour = 'mocha', -- latte, frappe, macchiato, mocha + no_italic = true, } - - -- Load the colorscheme here. - -- Like many other themes, this one has different styles, and you could load - -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. - vim.cmd.colorscheme 'tokyonight-night' + vim.cmd.colorscheme 'catppuccin' end, }, - - -- Highlight todo, notes, etc in comments { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, - { -- Collection of various small independent plugins/modules + { 'echasnovski/mini.nvim', config = function() - -- Better Around/Inside textobjects - -- - -- Examples: - -- - va) - [V]isually select [A]round [)]paren - -- - yinq - [Y]ank [I]nside [N]ext [Q]uote - -- - ci' - [C]hange [I]nside [']quote require('mini.ai').setup { n_lines = 500 } - - -- Add/delete/replace surroundings (brackets, quotes, etc.) - -- - -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren - -- - sd' - [S]urround [D]elete [']quotes - -- - sr)' - [S]urround [R]eplace [)] ['] require('mini.surround').setup() - -- Simple and easy statusline. -- You could remove this setup call if you don't like it, -- and try some other statusline plugin 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 - -- default behavior. For example, here we set the section for - -- cursor location to LINE:COLUMN ---@diagnostic disable-next-line: duplicate-set-field statusline.section_location = function() return '%2l:%-2v' end - - -- ... and there is more! - -- Check out: https://github.com/echasnovski/mini.nvim end, }, { -- Highlight, edit, and navigate code 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate', - -- Install parsers with :TSInstall - -- There are additional nvim-treesitter modules that you can use to interact - -- with nvim-treesitter. You should go explore a few and see what interests you: - -- - -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` - -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context - -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects }, - -- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the - -- init.lua. If you want these files, they are in the repository, so you can just download them and - -- place them in the correct locations. - -- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart - -- -- 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). -- @@ -672,8 +629,6 @@ require('lazy').setup({ -- 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. - -- - -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. { import = 'custom.plugins' }, -- -- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec` diff --git a/lazy-lock.json b/lazy-lock.json index 8e98db9171b..6763c276483 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,6 +1,7 @@ { "LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" }, "blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" }, + "catppuccin": { "branch": "main", "commit": "beaf41a30c26fd7d6c386d383155cbd65dd554cd" }, "conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" }, "fidget.nvim": { "branch": "main", "commit": "7fa433a83118a70fe24c1ce88d5f0bd3453c0970" }, "gitsigns.nvim": { "branch": "main", "commit": "abf82a65f185bd54adc0679f74b7d6e1ada690c9" }, @@ -20,6 +21,5 @@ "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "master", "commit": "0d8b6eaa0b5ae6bb3d9785f7a3ba4a4c6c1b1af2" }, "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, - "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } } From f5d27573f4445b81cff11222c134770ee673aa04 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 18:35:22 +0900 Subject: [PATCH 12/23] feat: install lazygit --- lazy-lock.json | 1 + lua/custom/plugins/lazygit.lua | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 lua/custom/plugins/lazygit.lua diff --git a/lazy-lock.json b/lazy-lock.json index 6763c276483..2c64aef40b6 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -8,6 +8,7 @@ "guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" }, + "lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "80c0130c5f16b551865a69e832f1feadeedb5fbe" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, diff --git a/lua/custom/plugins/lazygit.lua b/lua/custom/plugins/lazygit.lua new file mode 100644 index 00000000000..5c77df03da4 --- /dev/null +++ b/lua/custom/plugins/lazygit.lua @@ -0,0 +1,20 @@ +return { + "kdheepak/lazygit.nvim", + lazy = true, + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + -- optional for floating window border decoration + dependencies = { + "nvim-lua/plenary.nvim", + }, + -- setting the keybinding for LazyGit with 'keys' is recommended in + -- order to load the plugin when the command is run for the first time + keys = { + { "lg", "LazyGit", desc = "LazyGit" } + } +} From e65da3f0a246ea4fa659df40ad4af55b43dfe9b8 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 18:48:55 +0900 Subject: [PATCH 13/23] add connealinglevel to 2 --- init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/init.lua b/init.lua index 5c716e7cc6a..fad28903fd5 100644 --- a/init.lua +++ b/init.lua @@ -83,6 +83,9 @@ vim.o.scrolloff = 10 -- instead raise a dialog asking if you wish to save the current file(s) vim.o.confirm = true +-- Enable conceal for Obsidian.nvim UI features +vim.o.conceallevel = 2 + -- [[ Basic Keymaps ]] -- Clear highlights on search when pressing in normal mode vim.keymap.set('n', '', 'nohlsearch') From a4e786a2bd6e969c6a8e8606d385463681e7ef53 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 18:56:51 +0900 Subject: [PATCH 14/23] feat : add oil --- init.lua | 13 +++++++++++++ lazy-lock.json | 1 + 2 files changed, 14 insertions(+) diff --git a/init.lua b/init.lua index fad28903fd5..67a3f6fdfe7 100644 --- a/init.lua +++ b/init.lua @@ -90,6 +90,9 @@ vim.o.conceallevel = 2 -- Clear highlights on search when pressing in normal mode vim.keymap.set('n', '', 'nohlsearch') +-- Open file explorer (Oil) +vim.keymap.set('n', 'e', 'Oil', { desc = 'Open file [E]xplorer' }) + -- Diagnostic keymaps vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) @@ -137,6 +140,16 @@ rtp:prepend(lazypath) -- :Lazy require('lazy').setup({ 'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically + + { -- File explorer that lets you edit your filesystem like a buffer + 'stevearc/oil.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' }, + opts = { + view_options = { + show_hidden = true, + }, + }, + }, { -- Adds git related signs to the gutter, as well as utilities for managing changes 'lewis6991/gitsigns.nvim', opts = { diff --git a/lazy-lock.json b/lazy-lock.json index 2c64aef40b6..9c053ef24d0 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -17,6 +17,7 @@ "nvim-treesitter": { "branch": "main", "commit": "ec034813775d7e2974c7551c8c34499a828963f8" }, "nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" }, "obsidian.nvim": { "branch": "main", "commit": "f6b241fa08d157701b9b0850b1251d98f86b122e" }, + "oil.nvim": { "branch": "master", "commit": "f55b25e493a7df76371cfadd0ded5004cb9cd48a" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, From a970084b32de5ee45351436e31c7df11f768550b Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 19:16:54 +0900 Subject: [PATCH 15/23] update file search --- lua/custom/plugins/obsidian-nvim.lua | 100 +++++++++++++++------------ 1 file changed, 55 insertions(+), 45 deletions(-) diff --git a/lua/custom/plugins/obsidian-nvim.lua b/lua/custom/plugins/obsidian-nvim.lua index 3e20745918a..aaae8d5fd6b 100644 --- a/lua/custom/plugins/obsidian-nvim.lua +++ b/lua/custom/plugins/obsidian-nvim.lua @@ -1,10 +1,10 @@ return { - "obsidian-nvim/obsidian.nvim", - version = "*", -- use latest release, remove to use latest commit - ft = "markdown", + 'obsidian-nvim/obsidian.nvim', + version = '*', -- use latest release, remove to use latest commit + ft = 'markdown', dependencies = { - "nvim-lua/plenary.nvim", - "nvim-telescope/telescope.nvim", + 'nvim-lua/plenary.nvim', + 'nvim-telescope/telescope.nvim', }, ---@module 'obsidian' ---@type obsidian.config @@ -12,53 +12,65 @@ return { legacy_commands = false, -- this will be removed in the next major release workspaces = { { - name = "main", - path = "~/Documents/obsidian_git/Obsidian_vault/", + name = 'main', + path = '~/Documents/obsidian_git/Obsidian_vault/', }, }, daily_notes = { - folder = "Journals", - date_format = "%Y%m%d", + folder = 'Journals', + date_format = '%Y%m%d', }, }, config = function(_, opts) - require("obsidian").setup(opts) + require('obsidian').setup(opts) - local vault_path = vim.fn.expand("~/Documents/obsidian_git/Obsidian_vault/") + local vault_path = vim.fn.expand '~/Documents/obsidian_git/Obsidian_vault/' - -- Custom function to search by alias + -- Custom function to search by alias and filename local function search_by_alias() - local pickers = require("telescope.pickers") - local finders = require("telescope.finders") - local conf = require("telescope.config").values - local actions = require("telescope.actions") - local action_state = require("telescope.actions.state") + local pickers = require 'telescope.pickers' + local finders = require 'telescope.finders' + local conf = require('telescope.config').values + local actions = require 'telescope.actions' + local action_state = require 'telescope.actions.state' -- Collect all files with their aliases local entries = {} - local scandir = require("plenary.scandir") + local scandir = require 'plenary.scandir' local files = scandir.scan_dir(vault_path, { hidden = false, depth = 10, add_dirs = false }) for _, file in ipairs(files) do - if file:match("%.md$") then - local f = io.open(file, "r") + if file:match '%.md$' then + local rel_path = file:gsub(vault_path, '') + local filename = vim.fn.fnamemodify(file, ':t:r') + + -- Always add an entry for the filename + table.insert(entries, { + alias = nil, + filename = filename, + path = file, + display = filename .. ' (' .. rel_path .. ')', + ordinal = filename, + }) + + local f = io.open(file, 'r') if f then - local content = f:read("*a") + local content = f:read '*a' f:close() -- Parse YAML frontmatter - local frontmatter = content:match("^%-%-%-\n(.-)\n%-%-%-") + local frontmatter = content:match '^%-%-%-\n(.-)\n%-%-%-' if frontmatter then -- Extract aliases (supports both list and inline formats) local aliases = {} -- Match "aliases: [alias1, alias2]" format - local inline_aliases = frontmatter:match("aliases:%s*%[(.-)%]") + local inline_aliases = frontmatter:match 'aliases:%s*%[(.-)%]' if inline_aliases then - for alias in inline_aliases:gmatch("[^,]+") do - alias = alias:match("^%s*(.-)%s*$") -- trim - alias = alias:gsub('^"(.-)"$', "%1"):gsub("^'(.-)'$", "%1") -- remove quotes - if alias ~= "" then + for alias in inline_aliases:gmatch '[^,]+' do + alias = alias:match '^%s*(.-)%s*$' -- trim + alias = alias:gsub('^"(.-)"$', '%1'):gsub("^'(.-)'$", '%1') -- remove quotes + if alias ~= '' then table.insert(aliases, alias) end end @@ -68,27 +80,25 @@ return { -- aliases: -- - alias1 -- - alias2 - local list_section = frontmatter:match("aliases:%s*\n(.-)\n%w") - or frontmatter:match("aliases:%s*\n(.-)$") + local list_section = frontmatter:match 'aliases:%s*\n(.-)\n%w' or frontmatter:match 'aliases:%s*\n(.-)$' if list_section then - for alias in list_section:gmatch("%s*%-%s*([^\n]+)") do - alias = alias:match("^%s*(.-)%s*$") - alias = alias:gsub('^"(.-)"$', "%1"):gsub("^'(.-)'$", "%1") - if alias ~= "" then + for alias in list_section:gmatch '%s*%-%s*([^\n]+)' do + alias = alias:match '^%s*(.-)%s*$' + alias = alias:gsub('^"(.-)"$', '%1'):gsub("^'(.-)'$", '%1') + if alias ~= '' then table.insert(aliases, alias) end end end -- Add entries for each alias - local rel_path = file:gsub(vault_path, "") - local filename = vim.fn.fnamemodify(file, ":t:r") for _, alias in ipairs(aliases) do table.insert(entries, { alias = alias, filename = filename, path = file, - display = alias .. " -> " .. rel_path, + display = alias .. ' -> ' .. rel_path, + ordinal = alias .. ' ' .. filename, }) end end @@ -98,26 +108,26 @@ return { pickers .new({}, { - prompt_title = "Search Obsidian Aliases", - finder = finders.new_table({ + prompt_title = 'Search Obsidian (Alias & Filename)', + finder = finders.new_table { results = entries, entry_maker = function(entry) return { value = entry, display = entry.display, - ordinal = entry.alias .. " " .. entry.filename, + ordinal = entry.ordinal, path = entry.path, } end, - }), - sorter = conf.generic_sorter({}), - previewer = conf.file_previewer({}), + }, + sorter = conf.generic_sorter {}, + previewer = conf.file_previewer {}, attach_mappings = function(prompt_bufnr, map) actions.select_default:replace(function() actions.close(prompt_bufnr) local selection = action_state.get_selected_entry() if selection then - vim.cmd("edit " .. vim.fn.fnameescape(selection.path)) + vim.cmd('edit ' .. vim.fn.fnameescape(selection.path)) end end) return true @@ -127,7 +137,7 @@ return { end -- Set up keymaps - vim.keymap.set("n", "oa", search_by_alias, { desc = "[O]bsidian search by [A]lias" }) - vim.keymap.set("n", "od", "Obsidian today", { desc = "[O]bsidian [D]aily note (today)" }) + vim.keymap.set('n', 'oa', search_by_alias, { desc = '[O]bsidian search by [A]lias' }) + vim.keymap.set('n', 'od', 'Obsidian today', { desc = '[O]bsidian [D]aily note (today)' }) end, } From 31f361038125d7c647996ac18663fccc2261bf08 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 19:21:08 +0900 Subject: [PATCH 16/23] update commands --- init.lua | 2 +- lua/custom/plugins/obsidian-nvim.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 67a3f6fdfe7..07f2600fdaf 100644 --- a/init.lua +++ b/init.lua @@ -246,7 +246,7 @@ require('lazy').setup({ vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) - vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) + vim.keymap.set('n', ',', builtin.buffers, { desc = '[,] Find existing buffers' }) vim.keymap.set('n', '/', function() builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { diff --git a/lua/custom/plugins/obsidian-nvim.lua b/lua/custom/plugins/obsidian-nvim.lua index aaae8d5fd6b..ccd724a1739 100644 --- a/lua/custom/plugins/obsidian-nvim.lua +++ b/lua/custom/plugins/obsidian-nvim.lua @@ -137,7 +137,7 @@ return { end -- Set up keymaps - vim.keymap.set('n', 'oa', search_by_alias, { desc = '[O]bsidian search by [A]lias' }) + vim.keymap.set('n', ' ', search_by_alias, { desc = 'Search Obsidian (Alias & Filename)' }) vim.keymap.set('n', 'od', 'Obsidian today', { desc = '[O]bsidian [D]aily note (today)' }) end, } From e5bde4550bc308ff980704c4e228a763d84dcb6e Mon Sep 17 00:00:00 2001 From: jujekebab Date: Wed, 21 Jan 2026 19:57:33 +0900 Subject: [PATCH 17/23] add some util tools --- init.lua | 18 ------------------ lua/custom/plugins/mini.lua | 17 +++++++++++++++++ lua/custom/plugins/obsidian-nvim.lua | 9 +++++++++ 3 files changed, 26 insertions(+), 18 deletions(-) create mode 100644 lua/custom/plugins/mini.lua diff --git a/init.lua b/init.lua index 07f2600fdaf..a57a3eff6f7 100644 --- a/init.lua +++ b/init.lua @@ -609,24 +609,6 @@ require('lazy').setup({ end, }, { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, - - { - 'echasnovski/mini.nvim', - config = function() - require('mini.ai').setup { n_lines = 500 } - require('mini.surround').setup() - -- Simple and easy statusline. - -- You could remove this setup call if you don't like it, - -- and try some other statusline plugin - 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 } - ---@diagnostic disable-next-line: duplicate-set-field - statusline.section_location = function() - return '%2l:%-2v' - end - end, - }, { -- Highlight, edit, and navigate code 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate', diff --git a/lua/custom/plugins/mini.lua b/lua/custom/plugins/mini.lua new file mode 100644 index 00000000000..ce9adc8fc66 --- /dev/null +++ b/lua/custom/plugins/mini.lua @@ -0,0 +1,17 @@ +return { + 'echasnovski/mini.nvim', + config = function() + require('mini.ai').setup { n_lines = 500 } + require('mini.surround').setup() + require('mini.starter').setup() + + -- Simple and easy statusline + local statusline = require 'mini.statusline' + statusline.setup { use_icons = vim.g.have_nerd_font } + + ---@diagnostic disable-next-line: duplicate-set-field + statusline.section_location = function() + return '%2l:%-2v' + end + end, +} diff --git a/lua/custom/plugins/obsidian-nvim.lua b/lua/custom/plugins/obsidian-nvim.lua index ccd724a1739..de2715be270 100644 --- a/lua/custom/plugins/obsidian-nvim.lua +++ b/lua/custom/plugins/obsidian-nvim.lua @@ -136,8 +136,17 @@ return { :find() end + -- Insert link to today's daily note + local function insert_today_link() + local date_link = os.date '%Y%m%d' + local date_display = os.date '%Y/%m/%d' + local link = '[[' .. date_link .. '|' .. date_display .. ']]' + vim.api.nvim_put({ link }, 'c', true, true) + end + -- Set up keymaps vim.keymap.set('n', ' ', search_by_alias, { desc = 'Search Obsidian (Alias & Filename)' }) vim.keymap.set('n', 'od', 'Obsidian today', { desc = '[O]bsidian [D]aily note (today)' }) + vim.keymap.set('n', 'ot', insert_today_link, { desc = '[O]bsidian insert [T]oday link' }) end, } From 1d3f59433a46272ef9d727be733729be66bbd2b5 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Thu, 22 Jan 2026 13:56:40 +0900 Subject: [PATCH 18/23] remove obsidian nvim --- lua/custom/plugins/obsidian-nvim.lua | 152 --------------------------- 1 file changed, 152 deletions(-) delete mode 100644 lua/custom/plugins/obsidian-nvim.lua diff --git a/lua/custom/plugins/obsidian-nvim.lua b/lua/custom/plugins/obsidian-nvim.lua deleted file mode 100644 index de2715be270..00000000000 --- a/lua/custom/plugins/obsidian-nvim.lua +++ /dev/null @@ -1,152 +0,0 @@ -return { - 'obsidian-nvim/obsidian.nvim', - version = '*', -- use latest release, remove to use latest commit - ft = 'markdown', - dependencies = { - 'nvim-lua/plenary.nvim', - 'nvim-telescope/telescope.nvim', - }, - ---@module 'obsidian' - ---@type obsidian.config - opts = { - legacy_commands = false, -- this will be removed in the next major release - workspaces = { - { - name = 'main', - path = '~/Documents/obsidian_git/Obsidian_vault/', - }, - }, - daily_notes = { - folder = 'Journals', - date_format = '%Y%m%d', - }, - }, - config = function(_, opts) - require('obsidian').setup(opts) - - local vault_path = vim.fn.expand '~/Documents/obsidian_git/Obsidian_vault/' - - -- Custom function to search by alias and filename - local function search_by_alias() - local pickers = require 'telescope.pickers' - local finders = require 'telescope.finders' - local conf = require('telescope.config').values - local actions = require 'telescope.actions' - local action_state = require 'telescope.actions.state' - - -- Collect all files with their aliases - local entries = {} - local scandir = require 'plenary.scandir' - local files = scandir.scan_dir(vault_path, { hidden = false, depth = 10, add_dirs = false }) - - for _, file in ipairs(files) do - if file:match '%.md$' then - local rel_path = file:gsub(vault_path, '') - local filename = vim.fn.fnamemodify(file, ':t:r') - - -- Always add an entry for the filename - table.insert(entries, { - alias = nil, - filename = filename, - path = file, - display = filename .. ' (' .. rel_path .. ')', - ordinal = filename, - }) - - local f = io.open(file, 'r') - if f then - local content = f:read '*a' - f:close() - - -- Parse YAML frontmatter - local frontmatter = content:match '^%-%-%-\n(.-)\n%-%-%-' - if frontmatter then - -- Extract aliases (supports both list and inline formats) - local aliases = {} - - -- Match "aliases: [alias1, alias2]" format - local inline_aliases = frontmatter:match 'aliases:%s*%[(.-)%]' - if inline_aliases then - for alias in inline_aliases:gmatch '[^,]+' do - alias = alias:match '^%s*(.-)%s*$' -- trim - alias = alias:gsub('^"(.-)"$', '%1'):gsub("^'(.-)'$", '%1') -- remove quotes - if alias ~= '' then - table.insert(aliases, alias) - end - end - end - - -- Match YAML list format: - -- aliases: - -- - alias1 - -- - alias2 - local list_section = frontmatter:match 'aliases:%s*\n(.-)\n%w' or frontmatter:match 'aliases:%s*\n(.-)$' - if list_section then - for alias in list_section:gmatch '%s*%-%s*([^\n]+)' do - alias = alias:match '^%s*(.-)%s*$' - alias = alias:gsub('^"(.-)"$', '%1'):gsub("^'(.-)'$", '%1') - if alias ~= '' then - table.insert(aliases, alias) - end - end - end - - -- Add entries for each alias - for _, alias in ipairs(aliases) do - table.insert(entries, { - alias = alias, - filename = filename, - path = file, - display = alias .. ' -> ' .. rel_path, - ordinal = alias .. ' ' .. filename, - }) - end - end - end - end - end - - pickers - .new({}, { - prompt_title = 'Search Obsidian (Alias & Filename)', - finder = finders.new_table { - results = entries, - entry_maker = function(entry) - return { - value = entry, - display = entry.display, - ordinal = entry.ordinal, - path = entry.path, - } - end, - }, - sorter = conf.generic_sorter {}, - previewer = conf.file_previewer {}, - attach_mappings = function(prompt_bufnr, map) - actions.select_default:replace(function() - actions.close(prompt_bufnr) - local selection = action_state.get_selected_entry() - if selection then - vim.cmd('edit ' .. vim.fn.fnameescape(selection.path)) - end - end) - return true - end, - }) - :find() - end - - -- Insert link to today's daily note - local function insert_today_link() - local date_link = os.date '%Y%m%d' - local date_display = os.date '%Y/%m/%d' - local link = '[[' .. date_link .. '|' .. date_display .. ']]' - vim.api.nvim_put({ link }, 'c', true, true) - end - - -- Set up keymaps - vim.keymap.set('n', ' ', search_by_alias, { desc = 'Search Obsidian (Alias & Filename)' }) - vim.keymap.set('n', 'od', 'Obsidian today', { desc = '[O]bsidian [D]aily note (today)' }) - vim.keymap.set('n', 'ot', insert_today_link, { desc = '[O]bsidian insert [T]oday link' }) - end, -} From 764b7a74e55148292cd4b7a14cc1fc81880fd199 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Thu, 22 Jan 2026 14:42:44 +0900 Subject: [PATCH 19/23] show git diff columns --- init.lua | 10 +++++++--- lazy-lock.json | 5 ++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/init.lua b/init.lua index a57a3eff6f7..95195bd7b4d 100644 --- a/init.lua +++ b/init.lua @@ -37,11 +37,14 @@ vim.g.have_nerd_font = true -- [[ Setting options ]] -- See `:help vim.o` -- NOTE: You can change these options as you wish! --- For more options, you can see `:help option-list` +-- For more this is options, you can see `:help option-list` -- Only show line number on current line +-- +-- vim.o.number = true -vim.o.statuscolumn = '%{v:relnum == 0 ? v:lnum : ""}' + +vim.o.statuscolumn = '%s%{v:relnum == 0 ? v:lnum : ""}' -- Enable mouse mode, can be useful for resizing splits for example! vim.o.mouse = 'a' @@ -160,6 +163,7 @@ require('lazy').setup({ topdelete = { text = '‾' }, changedelete = { text = '~' }, }, + signcolumn = true, }, }, { -- Useful plugin to show you pending keybinds. @@ -239,7 +243,7 @@ require('lazy').setup({ local builtin = require 'telescope.builtin' vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) - vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' }) + vim.keymap.set('n', '', builtin.find_files, { desc = 'Find Files' }) vim.keymap.set('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) vim.keymap.set('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) diff --git a/lazy-lock.json b/lazy-lock.json index 9c053ef24d0..01f0cf068c8 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -9,14 +9,13 @@ "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" }, "lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "80c0130c5f16b551865a69e832f1feadeedb5fbe" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "4823a251e7578a835bb979c37df390fca692ba39" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, "mini.nvim": { "branch": "main", "commit": "c163117900c17d4abf30bc09452a261c8536060c" }, - "nvim-lspconfig": { "branch": "master", "commit": "92ee7d42320edfbb81f3cad851314ab197fa324a" }, + "nvim-lspconfig": { "branch": "master", "commit": "419b082102fa813739588dd82e19a8b6b2442855" }, "nvim-treesitter": { "branch": "main", "commit": "ec034813775d7e2974c7551c8c34499a828963f8" }, "nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" }, - "obsidian.nvim": { "branch": "main", "commit": "f6b241fa08d157701b9b0850b1251d98f86b122e" }, "oil.nvim": { "branch": "master", "commit": "f55b25e493a7df76371cfadd0ded5004cb9cd48a" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, From e9664aed82041e25298d3c21d9fb037bf276d4a0 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Fri, 23 Jan 2026 13:42:35 +0900 Subject: [PATCH 20/23] add snack --- lazy-lock.json | 1 + lua/custom/plugins/lazygit.lua | 2 +- lua/custom/plugins/snack.lua | 116 +++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 lua/custom/plugins/snack.lua diff --git a/lazy-lock.json b/lazy-lock.json index 01f0cf068c8..0a9aac1cf77 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -18,6 +18,7 @@ "nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" }, "oil.nvim": { "branch": "master", "commit": "f55b25e493a7df76371cfadd0ded5004cb9cd48a" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "master", "commit": "0d8b6eaa0b5ae6bb3d9785f7a3ba4a4c6c1b1af2" }, diff --git a/lua/custom/plugins/lazygit.lua b/lua/custom/plugins/lazygit.lua index 5c77df03da4..eb3859908cd 100644 --- a/lua/custom/plugins/lazygit.lua +++ b/lua/custom/plugins/lazygit.lua @@ -15,6 +15,6 @@ return { -- setting the keybinding for LazyGit with 'keys' is recommended in -- order to load the plugin when the command is run for the first time keys = { - { "lg", "LazyGit", desc = "LazyGit" } + { "gl", "LazyGit", desc = "LazyGit" } } } diff --git a/lua/custom/plugins/snack.lua b/lua/custom/plugins/snack.lua new file mode 100644 index 00000000000..4368e6e60c1 --- /dev/null +++ b/lua/custom/plugins/snack.lua @@ -0,0 +1,116 @@ +local function open_pr_diff(picker, item, action) + -- Get the current item if not provided + item = item or picker:current() + if not item then + return + end + + -- Get the gh_item if available (for gh_pr picker) + local gh_item = item.gh_item or item + if not gh_item.baseRefName or not gh_item.headRefName then + Snacks.notify.error 'PR diff: Missing branch information' + return + end + + picker:close() + + local base_ref = gh_item.baseRefName + local head_ref = gh_item.headRefName + local pr_number = gh_item.number + + -- Fetch the PR head branch using gh (this ensures the branch is available) + if pr_number then + -- Use gh to fetch the PR branch - this handles remote branches correctly + vim.fn.system('gh pr checkout ' .. pr_number .. ' --detach --force 2>&1') + end + + -- Fetch both branches from origin to ensure they're available + vim.fn.system('git fetch origin ' .. base_ref .. ' 2>&1') + vim.fn.system('git fetch origin ' .. head_ref .. ' 2>&1') + + -- Use origin/ prefix for remote branches in DiffviewOpen + -- This ensures we reference the remote branches correctly + local diff_cmd = string.format('DiffviewOpen origin/%s...origin/%s', base_ref, head_ref) + vim.cmd(diff_cmd) +end + +return { + 'folke/snacks.nvim', + priority = 1000, + lazy = false, + ---@type snacks.Config + opts = { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + bigfile = { enabled = true }, + dashboard = { enabled = true }, + explorer = { + enabled = true, + show_hidden = true, + }, + indent = { enabled = true }, + input = { enabled = true }, + picker = { + enabled = true, + sources = { + explorer = { + hidden = true, -- Show hidden files by default + ignored = false, -- Optional: show git-ignored files by default + }, + gh_pr = { + actions = { + side_by_side = { + desc = 'Open PR diff side-by-side', + action = open_pr_diff, + }, + }, + win = { + input = { + keys = { + -- in PR picker: Open side-by-side diff in DiffviewOpen + [''] = { 'side_by_side', mode = { 'n', 'i' }, desc = 'Open PR diff side-by-side' }, + }, + }, + }, + }, + }, + }, + notifier = { enabled = true }, + quickfile = { enabled = true }, + scope = { enabled = true }, + scroll = { enabled = false }, + statuscolumn = { enabled = true }, + words = { enabled = true }, + }, + keys = { + { + 'gi', + function() + Snacks.picker.gh_issue() + end, + desc = 'GitHub Issues (open)', + }, + { + 'gI', + function() + Snacks.picker.gh_issue { state = 'all' } + end, + desc = 'GitHub Issues (all)', + }, + { + 'gp', + function() + Snacks.picker.gh_pr() + end, + desc = 'GitHub Pull Requests (open) - Press in picker for side-by-side diff', + }, + { + 'gP', + function() + Snacks.picker.gh_pr { state = 'all' } + end, + desc = 'GitHub Pull Requests (all) - Press in picker for side-by-side diff', + }, + }, +} From 5a85a3b5e52ee7c744c3ea6155458e789bdefab5 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Fri, 23 Jan 2026 13:45:57 +0900 Subject: [PATCH 21/23] add utils --- init.lua | 1 + lua/custom/plugins/mini.lua | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/init.lua b/init.lua index 95195bd7b4d..7cd97ab6c3d 100644 --- a/init.lua +++ b/init.lua @@ -209,6 +209,7 @@ require('lazy').setup({ { 'o', group = '[O]bsidian' }, { 's', group = '[S]earch' }, { 't', group = '[T]oggle' }, + { 'g', group = '[G]it' }, { 'h', group = 'Git [H]unk', mode = { 'n', 'v' } }, }, }, diff --git a/lua/custom/plugins/mini.lua b/lua/custom/plugins/mini.lua index ce9adc8fc66..74b895b468a 100644 --- a/lua/custom/plugins/mini.lua +++ b/lua/custom/plugins/mini.lua @@ -4,6 +4,12 @@ return { require('mini.ai').setup { n_lines = 500 } require('mini.surround').setup() require('mini.starter').setup() + require('mini.files').setup() + require('mini.comment').setup() + + vim.keymap.set('n', 'E', function() + MiniFiles.open(vim.api.nvim_buf_get_name(0)) + end, { desc = 'File [E]xplorer' }) -- Simple and easy statusline local statusline = require 'mini.statusline' From f9054e7873df541149e80bbaed1dfb71d3a5f30d Mon Sep 17 00:00:00 2001 From: jujekebab Date: Tue, 27 Jan 2026 15:23:32 +0900 Subject: [PATCH 22/23] util update --- init.lua | 17 ++--------------- lazy-lock.json | 8 ++++---- lua/custom/plugins/mini.lua | 2 +- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/init.lua b/init.lua index 7cd97ab6c3d..6222a524ec1 100644 --- a/init.lua +++ b/init.lua @@ -94,7 +94,7 @@ vim.o.conceallevel = 2 vim.keymap.set('n', '', 'nohlsearch') -- Open file explorer (Oil) -vim.keymap.set('n', 'e', 'Oil', { desc = 'Open file [E]xplorer' }) +vim.keymap.set('n', 'E', 'Oil', { desc = 'Open file [E]xplorer' }) -- Diagnostic keymaps vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) @@ -507,20 +507,7 @@ require('lazy').setup({ }, opts = { notify_on_error = false, - format_on_save = function(bufnr) - -- Disable "format_on_save lsp_fallback" for languages that don't - -- have a well standardized coding style. You can add additional - -- languages here or re-enable it for the disabled ones. - local disable_filetypes = { c = true, cpp = true } - if disable_filetypes[vim.bo[bufnr].filetype] then - return nil - else - return { - timeout_ms = 500, - lsp_format = 'fallback', - } - end - end, + format_on_save = false, formatters_by_ft = { lua = { 'stylua' }, -- Conform can also run multiple formatters sequentially diff --git a/lazy-lock.json b/lazy-lock.json index 0a9aac1cf77..2c526e143c0 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -10,18 +10,18 @@ "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" }, "lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "4823a251e7578a835bb979c37df390fca692ba39" }, - "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" }, "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, - "mini.nvim": { "branch": "main", "commit": "c163117900c17d4abf30bc09452a261c8536060c" }, + "mini.nvim": { "branch": "main", "commit": "9b935c218ddba02e5dc75c94f90143bce1f7c646" }, "nvim-lspconfig": { "branch": "master", "commit": "419b082102fa813739588dd82e19a8b6b2442855" }, - "nvim-treesitter": { "branch": "main", "commit": "ec034813775d7e2974c7551c8c34499a828963f8" }, + "nvim-treesitter": { "branch": "main", "commit": "88f1dfc211c3a2fb47f1451fd5edc972ec697e58" }, "nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" }, "oil.nvim": { "branch": "master", "commit": "f55b25e493a7df76371cfadd0ded5004cb9cd48a" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "master", "commit": "0d8b6eaa0b5ae6bb3d9785f7a3ba4a4c6c1b1af2" }, + "telescope.nvim": { "branch": "master", "commit": "ad7d9580338354ccc136e5b8f0aa4f880434dcdc" }, "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } } diff --git a/lua/custom/plugins/mini.lua b/lua/custom/plugins/mini.lua index 74b895b468a..2d371cd7d28 100644 --- a/lua/custom/plugins/mini.lua +++ b/lua/custom/plugins/mini.lua @@ -7,7 +7,7 @@ return { require('mini.files').setup() require('mini.comment').setup() - vim.keymap.set('n', 'E', function() + vim.keymap.set('n', 'e', function() MiniFiles.open(vim.api.nvim_buf_get_name(0)) end, { desc = 'File [E]xplorer' }) From a0c03d2b7f2c0b6a0613745dcf5e5c8a013230f2 Mon Sep 17 00:00:00 2001 From: jujekebab Date: Sat, 7 Feb 2026 18:22:30 +0900 Subject: [PATCH 23/23] updatet --- init.lua | 11 +++++++++-- lazy-lock.json | 3 +++ lua/custom/plugins/mini.lua | 5 ----- lua/kickstart/plugins/lint.lua | 2 ++ lua/kickstart/plugins/neo-tree.lua | 12 ++++++++++-- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/init.lua b/init.lua index 6222a524ec1..eb548176ed2 100644 --- a/init.lua +++ b/init.lua @@ -113,6 +113,13 @@ vim.keymap.set('n', '', '', { desc = 'Move focus to the right win vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) +-- Copy current file path to clipboard +vim.keymap.set('n', 'cp', function() + local path = vim.fn.expand '%:p' + vim.fn.setreg('+', path) + vim.notify('Copied: ' .. path) +end, { desc = '[C]opy file [P]ath' }) + -- [[ Basic Autocommands ]] -- Highlight when yanking (copying) text -- Try it with `yap` in normal mode @@ -612,9 +619,9 @@ 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.neo-tree', -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` diff --git a/lazy-lock.json b/lazy-lock.json index 2c526e143c0..806618be60d 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -13,6 +13,9 @@ "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" }, "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, "mini.nvim": { "branch": "main", "commit": "9b935c218ddba02e5dc75c94f90143bce1f7c646" }, + "neo-tree.nvim": { "branch": "main", "commit": "f3df514fff2bdd4318127c40470984137f87b62e" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-lint": { "branch": "master", "commit": "b3292aac30b935d4cccf0904053d1c7930df8a20" }, "nvim-lspconfig": { "branch": "master", "commit": "419b082102fa813739588dd82e19a8b6b2442855" }, "nvim-treesitter": { "branch": "main", "commit": "88f1dfc211c3a2fb47f1451fd5edc972ec697e58" }, "nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" }, diff --git a/lua/custom/plugins/mini.lua b/lua/custom/plugins/mini.lua index 2d371cd7d28..d37dde9246f 100644 --- a/lua/custom/plugins/mini.lua +++ b/lua/custom/plugins/mini.lua @@ -4,13 +4,8 @@ return { require('mini.ai').setup { n_lines = 500 } require('mini.surround').setup() require('mini.starter').setup() - require('mini.files').setup() require('mini.comment').setup() - vim.keymap.set('n', 'e', function() - MiniFiles.open(vim.api.nvim_buf_get_name(0)) - end, { desc = 'File [E]xplorer' }) - -- Simple and easy statusline local statusline = require 'mini.statusline' statusline.setup { use_icons = vim.g.have_nerd_font } diff --git a/lua/kickstart/plugins/lint.lua b/lua/kickstart/plugins/lint.lua index dec42f097c6..d487c8e94b9 100644 --- a/lua/kickstart/plugins/lint.lua +++ b/lua/kickstart/plugins/lint.lua @@ -7,6 +7,8 @@ return { local lint = require 'lint' lint.linters_by_ft = { markdown = { 'markdownlint' }, + javascript = { 'eslint' }, + html = { 'eslint' }, } -- To allow other plugins to add linters to require('lint').linters_by_ft, diff --git a/lua/kickstart/plugins/neo-tree.lua b/lua/kickstart/plugins/neo-tree.lua index c7067891df0..9fc95ef8518 100644 --- a/lua/kickstart/plugins/neo-tree.lua +++ b/lua/kickstart/plugins/neo-tree.lua @@ -11,13 +11,21 @@ return { }, lazy = false, keys = { - { '\\', ':Neotree reveal', desc = 'NeoTree reveal', silent = true }, + { 'e', ':Neotree reveal', desc = 'File [E]xplorer', silent = true }, }, opts = { filesystem = { + filtered_items = { + visible = true, + hide_dotfiles = false, + hide_gitignored = false, + }, + follow_current_file = { + enabled = true, + }, window = { mappings = { - ['\\'] = 'close_window', + ['e'] = 'close_window', }, }, },