Skip to content

A change #1678

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 3 additions & 3 deletions init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -248,14 +248,12 @@ rtp:prepend(lazypath)
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:
-- {
Expand Down Expand Up @@ -984,7 +982,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!
Expand Down Expand Up @@ -1012,5 +1010,7 @@ require('lazy').setup({
},
})

pcall(require, 'custom.keymaps')
pcall(require, 'custom.lsp')
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et
45 changes: 45 additions & 0 deletions lua/custom/keymaps.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
vim.keymap.set('n', '<C-t>', function()
-- Get the current file's directory (handles unsaved files too)
local cwd = vim.fn.expand '%:p:h'
if cwd == '' then
cwd = vim.fn.getcwd() -- fallback to current working dir
end

-- Open a horizontal split and terminal
vim.cmd 'split'
vim.cmd 'terminal'
vim.cmd 'startinsert'

-- Safely cd into the folder, even if it has spaces
vim.fn.chansend(vim.b.terminal_job_id, 'cd "' .. cwd .. '"\n')
end, { desc = "Open terminal in current file's directory" })

local harpoon = require 'harpoon'

vim.keymap.set('n', '<leader>a', function()
harpoon:list():add()
end, { desc = 'Add file to Harpoon' })
vim.keymap.set('n', '<leader>h', function()
harpoon.ui:toggle_quick_menu(harpoon:list())
end, { desc = 'Toggle Harpoon menu' })

vim.keymap.set('n', '<leader>1', function()
harpoon:list():select(1)
end)
vim.keymap.set('n', '<leader>2', function()
harpoon:list():select(2)
end)
vim.keymap.set('n', '<leader>3', function()
harpoon:list():select(3)
end)
vim.keymap.set('n', '<leader>4', function()
harpoon:list():select(4)
end)

-- In your keybindings configuration (e.g., lua/config/keymaps.lua or init.lua)
vim.keymap.set('n', '<leader>w', '<cmd>NvimTreeToggle<CR>', { desc = 'Toggle NvimTree' })

-- Insert Kubernetes Deployment template below the cursor
vim.keymap.set('n', '<leader>kd', function()
vim.cmd 'read ~/.config/nvim/lua/custom/templates/k8s-deployment.yaml'
end, { desc = 'Insert K8s Deployment template' })
6 changes: 6 additions & 0 deletions lua/custom/lsp.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
local lspconfig = require 'lspconfig'
local servers = { 'pyright', 'lua_ls' }

for _, server in ipairs(servers) do
lspconfig[server].setup {}
end
88 changes: 88 additions & 0 deletions lua/custom/plugins/plugins.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
return {
-- Other plugins in here
{
'nvim-tree/nvim-web-devicons',
},
{
'stevearc/oil.nvim',
opts = {},
dependencies = { 'nvim-tree/nvim-web-devicons' }, -- optional icons
keys = {
{ '<leader>e', '<cmd>Oil<CR>', desc = 'Open file explorer (Oil)' },
},
},
{
'ThePrimeagen/harpoon',
branch = 'harpoon2',
dependencies = { 'nvim-lua/plenary.nvim' },
config = function()
require('harpoon'):setup()
end,
},
{
'hrsh7th/nvim-cmp',
dependencies = {
'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-buffer',
'hrsh7th/cmp-path',
'L3MON4D3/LuaSnip',
'saadparwaiz1/cmp_luasnip',
},
config = function()
local cmp = require 'cmp'
local luasnip = require 'luasnip'

cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert {
['<Tab>'] = cmp.mapping.select_next_item(),
['<S-Tab>'] = cmp.mapping.select_prev_item(),
['<CR>'] = cmp.mapping.confirm { select = true },
['<C-Space>'] = cmp.mapping.complete(),
},
sources = cmp.config.sources {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
{ name = 'buffer' },
{ name = 'path' },
},
}
end,
},
{
'nvim-tree/nvim-tree.lua',
version = '*', -- recommended
lazy = false,
dependencies = {
'nvim-tree/nvim-web-devicons', -- optional, for file icons
},
opts = {
view = {
side = 'left',
width = 30,
float = { enable = false },
},
sync_root_with_cwd = true,
respect_buf_cwd = true,
update_focused_file = { enable = true, update_root = true },
renderer = {
group_empty = true,
indent_width = 2,
},
actions = { open_file = { resize_window = true } },
},
init = function()
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
end,
-- Other nvim-tree options can go here
-- For example, to automatically close on file selection:
-- auto_close = true,
-- To show hidden files:
-- hide_dotfiles = false,
},
}
Empty file added lua/custom/settings.lua
Empty file.
20 changes: 20 additions & 0 deletions lua/custom/templates/k8s-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: <name>
spec:
replicas: 1
selector:
matchLabels:
app: <name>
template:
metadata:
labels:
app: <name>
spec:
containers:
- name: <name>
image: nginx:latest
ports:
- containerPort: 80