add telekasten, telescope, new term handling
This commit is contained in:
parent
0d9bd24bf6
commit
98d8a599c6
5 changed files with 139 additions and 58 deletions
|
@ -1,36 +1,60 @@
|
|||
-- Normal mode mappings
|
||||
vim.keymap.set('n', '<leader>gd', vim.lsp.buf.hover, { noremap = true })
|
||||
vim.keymap.set('n', '<leader>tw', function() MiniTrailspace.trim() end, { noremap = true })
|
||||
local term = require('term')
|
||||
|
||||
-- Terminal and buffer mappings
|
||||
vim.keymap.set('n', '<leader>tt', '<cmd>terminal<CR>', { noremap = true })
|
||||
vim.keymap.set('t', '<Esc>', '<C-\\><C-n>', { noremap = true })
|
||||
vim.keymap.set('n', '<C-Space>', '<cmd>bprev<CR>', { noremap = true })
|
||||
local keymaps = {
|
||||
-- Normal mode mappings
|
||||
{ 'n', '<leader>gd', vim.lsp.buf.hover, { noremap = true } },
|
||||
{ 'n', '<leader>tw', function() MiniTrailspace.trim() end, { noremap = true } },
|
||||
|
||||
-- Move selected text up/down in visual mode
|
||||
vim.keymap.set('v', 'J', "<cmd>m '>+1<CR>gv=gv", { noremap = true })
|
||||
vim.keymap.set('v', 'K', "<cmd>m '<-2<CR>gv=gv", { noremap = true })
|
||||
-- Terminal and buffer mappings
|
||||
{ 'n', '<leader>tt', term.toggle_popup_terminal, { noremap = true } },
|
||||
{ 'n', '<leader>th', term.toggle_popup_terminal, { noremap = true } },
|
||||
{ 't', '<Esc>', '<C-\\><C-n>', { noremap = true } },
|
||||
{ 'n', '<C-Space>', '<cmd>bprev<CR>', { noremap = true } },
|
||||
|
||||
-- Keep cursor in the middle when jumping or joining lines
|
||||
vim.keymap.set('n', 'J', 'mzJ`z', { noremap = true })
|
||||
vim.keymap.set('n', '<C-d>', '<C-d>zz', { noremap = true })
|
||||
vim.keymap.set('n', '<C-u>', '<C-u>zz', { noremap = true })
|
||||
vim.keymap.set('n', 'n', 'nzzzv', { noremap = true })
|
||||
vim.keymap.set('n', 'N', 'Nzzzv', { noremap = true })
|
||||
-- Move selected text up/down in visual mode
|
||||
{ 'v', 'J', "<cmd>m '>+1<CR>gv=gv", { noremap = true } },
|
||||
{ 'v', 'K', "<cmd>m '<-2<CR>gv=gv", { noremap = true } },
|
||||
|
||||
-- Keep cursor in the middle when jumping or joining lines
|
||||
{ 'n', 'J', 'mzJ`z', { noremap = true } },
|
||||
{ 'n', '<C-d>', '<C-d>zz', { noremap = true } },
|
||||
{ 'n', '<C-u>', '<C-u>zz', { noremap = true } },
|
||||
{ 'n', 'n', 'nzzzv', { noremap = true } },
|
||||
{ 'n', 'N', 'Nzzzv', { noremap = true } },
|
||||
|
||||
-- Telescope mappings
|
||||
{ 'n', '<leader>ff', '<cmd>Telescope find_files<CR>' },
|
||||
{ 'n', '<leader>fb', '<cmd>Telescope buffers<CR>' },
|
||||
{ 'n', '<leader>fh', '<cmd>Telescope help_tags<CR>' },
|
||||
{ 'n', '<leader>fg', '<cmd>Telescope live_grep<CR>' },
|
||||
{ 'n', '<leader>fs', '<cmd>Telescope git_status<CR>' },
|
||||
{ 'n', '<leader>ft', '<cmd>Telescope<CR>' },
|
||||
|
||||
vim.keymap.set('n', '<leader>ff', '<cmd>Pick files<CR>')
|
||||
vim.keymap.set('n', '<leader>fb', '<cmd>Pick buffers<CR>')
|
||||
vim.keymap.set('n', '<leader>h', '<cmd>Pick help<CR>')
|
||||
vim.keymap.set('n', '<leader>e', '<cmd>Oil<CR>')
|
||||
vim.keymap.set('n', '<leader>lf', vim.lsp.buf.format)
|
||||
-- Telekasten mappings
|
||||
{ 'n', '<leader>tk', '<cmd>Telekasten<CR>' },
|
||||
{ 'n', '<leader>tf', '<cmd>Telekasten find_notes<CR>' },
|
||||
{ 'n', '<leader>ts', '<cmd>Telekasten search_notes<CR>' },
|
||||
{ 'n', '<leader>tn', '<cmd>Telekasten new_note<CR>' },
|
||||
{ 'n', '<leader>tlf', '<cmd>Telekasten follow_link<CR>' },
|
||||
{ 'n', '<leader>tli', '<cmd>Telekasten insert_link<CR>' },
|
||||
|
||||
vim.keymap.set('n', '<leader>o', '<cmd>update<CR> <cmd>source<CR>')
|
||||
vim.keymap.set('n', '<leader>w', '<cmd>write<CR>')
|
||||
vim.keymap.set('n', '<leader>q', '<cmd>quit<CR>')
|
||||
-- File operations
|
||||
{ 'n', '<leader>e', '<cmd>Oil<CR>' },
|
||||
{ 'n', '<leader>lf', vim.lsp.buf.format },
|
||||
|
||||
vim.keymap.set({ 'n', 'v', 'x' }, '<leader>y', "'+y<CR>")
|
||||
vim.keymap.set({ 'n', 'v', 'x' }, '<leader>d', "'+d<CR>")
|
||||
-- Basic operations
|
||||
{ 'n', '<leader>o', '<cmd>update<CR> <cmd>source<CR>' },
|
||||
{ 'n', '<leader>w', '<cmd>write<CR>' },
|
||||
{ 'n', '<leader>q', '<cmd>quit<CR>' },
|
||||
|
||||
vim.keymap.set('n', '<leader>cc', '<cmd>ClaudeCode<CR>', { desc = 'Toggle Claude Code' })
|
||||
-- Copy/delete to system clipboard
|
||||
{ { 'n', 'v', 'x' }, '<leader>y', "'+y<CR>" },
|
||||
{ { 'n', 'v', 'x' }, '<leader>d', "'+d<CR>" },
|
||||
|
||||
-- Claude Code
|
||||
{ 'n', '<leader>cc', '<cmd>ClaudeCode<CR>', { desc = 'Toggle Claude Code' } },
|
||||
}
|
||||
|
||||
for _, keymap in ipairs(keymaps) do
|
||||
vim.keymap.set(keymap[1], keymap[2], keymap[3], keymap[4])
|
||||
end
|
||||
|
|
11
lua/lsp.lua
11
lua/lsp.lua
|
@ -1,16 +1,9 @@
|
|||
require('nvim-treesitter.configs').setup({
|
||||
ensure_installed = {
|
||||
'c',
|
||||
'bash',
|
||||
'c_sharp',
|
||||
'go',
|
||||
'haskell',
|
||||
'lua',
|
||||
'python',
|
||||
'rust',
|
||||
'vim',
|
||||
'vimdoc',
|
||||
'hyprlang',
|
||||
},
|
||||
sync_install = false,
|
||||
auto_install = true,
|
||||
|
@ -34,7 +27,6 @@ require("mason-lspconfig").setup({
|
|||
ensure_installed = {
|
||||
"lua_ls",
|
||||
"pylsp",
|
||||
"ltex",
|
||||
},
|
||||
automatic_installation = true,
|
||||
})
|
||||
|
@ -49,8 +41,7 @@ vim.lsp.config( 'lua_ls', {
|
|||
}
|
||||
}
|
||||
})
|
||||
vim.lsp.config( 'lua_ls', { })
|
||||
vim.lsp.enable({ 'lua_ls', 'pylsp' })
|
||||
vim.lsp.enable({ 'lua_ls', 'pylsp', 'csharp_ls' })
|
||||
|
||||
vim.diagnostic.config({
|
||||
signs = false,
|
||||
|
|
13
lua/pack.lua
13
lua/pack.lua
|
@ -5,17 +5,22 @@ local function process_plugin(plugin)
|
|||
|
||||
-- Handle when plugin is just a string (URL)
|
||||
if type(plugin) == "string" then
|
||||
processed.url = plugin
|
||||
processed.url = plugin:match("^https?://") and plugin or "https://github.com/" .. plugin
|
||||
return processed
|
||||
end
|
||||
|
||||
-- Handle the plugin URL/name (convert from lazy.nvim format)
|
||||
local url = nil
|
||||
if plugin[1] then
|
||||
processed.url = plugin[1]
|
||||
url = plugin[1]
|
||||
elseif plugin.url then
|
||||
processed.url = plugin.url
|
||||
url = plugin.url
|
||||
elseif plugin.src then
|
||||
processed.url = plugin.src
|
||||
url = plugin.src
|
||||
end
|
||||
|
||||
if url then
|
||||
processed.url = url:match("^https?://") and url or "https://github.com/" .. url
|
||||
end
|
||||
|
||||
-- Handle version
|
||||
|
|
45
lua/plug.lua
45
lua/plug.lua
|
@ -1,28 +1,39 @@
|
|||
local pack = require 'pack'
|
||||
|
||||
local plugins = {
|
||||
'https://github.com/catppuccin/nvim',
|
||||
'https://github.com/nvim-treesitter/nvim-treesitter',
|
||||
'catppuccin/nvim',
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
{ url = 'nvim-telescope/telescope.nvim',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
setup = true },
|
||||
|
||||
{ url = 'https://github.com/echasnovski/mini.cursorword',
|
||||
{ url = 'renerocksai/telekasten.nvim',
|
||||
dependencies = { 'nvim-telescope/telescope.nvim' },
|
||||
setup = function()
|
||||
require('telekasten').setup({
|
||||
home = vim.fn.expand("~/zettelkasten"),
|
||||
})
|
||||
end },
|
||||
|
||||
{ url = 'echasnovski/mini.cursorword',
|
||||
setup = true },
|
||||
|
||||
{ url = 'https://github.com/echasnovski/mini.pick',
|
||||
{ url = 'echasnovski/mini.pick',
|
||||
setup = true },
|
||||
|
||||
{ url = 'https://github.com/echasnovski/mini.starter',
|
||||
{ url = 'echasnovski/mini.starter',
|
||||
setup = true },
|
||||
|
||||
{ url = 'https://github.com/echasnovski/mini.trailspace',
|
||||
{ url = 'echasnovski/mini.trailspace',
|
||||
setup = true },
|
||||
|
||||
{ url = 'https://github.com/stevearc/oil.nvim',
|
||||
{ url = 'stevearc/oil.nvim',
|
||||
setup = true },
|
||||
|
||||
{ url = 'https://github.com/svampkorg/moody.nvim',
|
||||
{ url = 'svampkorg/moody.nvim',
|
||||
setup = true },
|
||||
|
||||
{ url = 'https://github.com/greggh/claude-code.nvim',
|
||||
{ url = 'greggh/claude-code.nvim',
|
||||
setup = function ()
|
||||
require("claude-code").setup({
|
||||
window = {
|
||||
|
@ -39,8 +50,8 @@ local plugins = {
|
|||
})
|
||||
end },
|
||||
|
||||
{ url = 'https://github.com/nvim-lualine/lualine.nvim',
|
||||
dependencies = { 'https://github.com/nvim-tree/nvim-web-devicons' },
|
||||
{ url = 'nvim-lualine/lualine.nvim',
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||
setup = function ()
|
||||
require('lualine').setup({
|
||||
options = {
|
||||
|
@ -50,16 +61,16 @@ local plugins = {
|
|||
})
|
||||
end },
|
||||
|
||||
{ url = 'https://github.com/williamboman/mason.nvim',
|
||||
{ url = 'williamboman/mason.nvim',
|
||||
dependencies = {
|
||||
{ url = 'https://github.com/williamboman/mason-lspconfig.nvim', setup = true },
|
||||
'https://github.com/neovim/nvim-lspconfig'
|
||||
{ url = 'williamboman/mason-lspconfig.nvim', setup = true },
|
||||
'neovim/nvim-lspconfig'
|
||||
},
|
||||
setup = true },
|
||||
|
||||
{ url = 'https://github.com/Saghen/blink.cmp',
|
||||
{ url = 'Saghen/blink.cmp',
|
||||
version = "v1.6.0",
|
||||
dependencies = { 'https://github.com/rafamadriz/friendly-snippets' }},
|
||||
dependencies = { 'rafamadriz/friendly-snippets' }},
|
||||
}
|
||||
|
||||
pack.setup(plugins)
|
||||
|
@ -101,7 +112,7 @@ local default_plugins = {
|
|||
}
|
||||
|
||||
for _, plug in ipairs(default_plugins) do
|
||||
vim.g['loaded_' .. plug] = 1
|
||||
vim.g['loaded_' .. plug] = 1
|
||||
end
|
||||
|
||||
|
||||
|
|
50
lua/term.lua
Normal file
50
lua/term.lua
Normal file
|
@ -0,0 +1,50 @@
|
|||
local M = {}
|
||||
|
||||
-- Popup terminal state
|
||||
local popup_term = {
|
||||
buf = nil,
|
||||
win = nil,
|
||||
}
|
||||
|
||||
-- Function to create popup terminal
|
||||
function M.toggle_popup_terminal()
|
||||
if popup_term.win and vim.api.nvim_win_is_valid(popup_term.win) then
|
||||
-- Close the popup if it's open
|
||||
vim.api.nvim_win_close(popup_term.win, true)
|
||||
popup_term.win = nil
|
||||
else
|
||||
-- Create or reuse terminal buffer
|
||||
if not popup_term.buf or not vim.api.nvim_buf_is_valid(popup_term.buf) then
|
||||
popup_term.buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.api.nvim_buf_set_option(popup_term.buf, 'buftype', 'terminal')
|
||||
end
|
||||
|
||||
-- Calculate popup size
|
||||
local width = math.floor(vim.o.columns * 0.8)
|
||||
local height = math.floor(vim.o.lines * 0.8)
|
||||
local row = math.floor((vim.o.lines - height) / 2)
|
||||
local col = math.floor((vim.o.columns - width) / 2)
|
||||
|
||||
-- Create floating window
|
||||
popup_term.win = vim.api.nvim_open_win(popup_term.buf, true, {
|
||||
relative = 'editor',
|
||||
width = width,
|
||||
height = height,
|
||||
row = row,
|
||||
col = col,
|
||||
style = 'minimal',
|
||||
border = 'rounded',
|
||||
})
|
||||
|
||||
-- Start terminal if buffer is empty
|
||||
if vim.api.nvim_buf_line_count(popup_term.buf) == 1 and
|
||||
vim.api.nvim_buf_get_lines(popup_term.buf, 0, 1, false)[1] == '' then
|
||||
vim.fn.termopen(vim.o.shell)
|
||||
end
|
||||
|
||||
-- Enter insert mode
|
||||
vim.cmd('startinsert')
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
Loading…
Add table
Reference in a new issue