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 @@
|
||||||
|
local term = require('term')
|
||||||
|
|
||||||
|
local keymaps = {
|
||||||
-- Normal mode mappings
|
-- Normal mode mappings
|
||||||
vim.keymap.set('n', '<leader>gd', vim.lsp.buf.hover, { noremap = true })
|
{ 'n', '<leader>gd', vim.lsp.buf.hover, { noremap = true } },
|
||||||
vim.keymap.set('n', '<leader>tw', function() MiniTrailspace.trim() end, { noremap = true })
|
{ 'n', '<leader>tw', function() MiniTrailspace.trim() end, { noremap = true } },
|
||||||
|
|
||||||
-- Terminal and buffer mappings
|
-- Terminal and buffer mappings
|
||||||
vim.keymap.set('n', '<leader>tt', '<cmd>terminal<CR>', { noremap = true })
|
{ 'n', '<leader>tt', term.toggle_popup_terminal, { noremap = true } },
|
||||||
vim.keymap.set('t', '<Esc>', '<C-\\><C-n>', { noremap = true })
|
{ 'n', '<leader>th', term.toggle_popup_terminal, { noremap = true } },
|
||||||
vim.keymap.set('n', '<C-Space>', '<cmd>bprev<CR>', { noremap = true })
|
{ 't', '<Esc>', '<C-\\><C-n>', { noremap = true } },
|
||||||
|
{ 'n', '<C-Space>', '<cmd>bprev<CR>', { noremap = true } },
|
||||||
|
|
||||||
-- Move selected text up/down in visual mode
|
-- Move selected text up/down in visual mode
|
||||||
vim.keymap.set('v', 'J', "<cmd>m '>+1<CR>gv=gv", { noremap = true })
|
{ 'v', 'J', "<cmd>m '>+1<CR>gv=gv", { noremap = true } },
|
||||||
vim.keymap.set('v', 'K', "<cmd>m '<-2<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
|
-- Keep cursor in the middle when jumping or joining lines
|
||||||
vim.keymap.set('n', 'J', 'mzJ`z', { noremap = true })
|
{ 'n', 'J', 'mzJ`z', { noremap = true } },
|
||||||
vim.keymap.set('n', '<C-d>', '<C-d>zz', { noremap = true })
|
{ 'n', '<C-d>', '<C-d>zz', { noremap = true } },
|
||||||
vim.keymap.set('n', '<C-u>', '<C-u>zz', { noremap = true })
|
{ 'n', '<C-u>', '<C-u>zz', { noremap = true } },
|
||||||
vim.keymap.set('n', 'n', 'nzzzv', { noremap = true })
|
{ 'n', 'n', 'nzzzv', { noremap = true } },
|
||||||
vim.keymap.set('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>' },
|
||||||
|
|
||||||
|
-- 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>ff', '<cmd>Pick files<CR>')
|
-- File operations
|
||||||
vim.keymap.set('n', '<leader>fb', '<cmd>Pick buffers<CR>')
|
{ 'n', '<leader>e', '<cmd>Oil<CR>' },
|
||||||
vim.keymap.set('n', '<leader>h', '<cmd>Pick help<CR>')
|
{ 'n', '<leader>lf', vim.lsp.buf.format },
|
||||||
vim.keymap.set('n', '<leader>e', '<cmd>Oil<CR>')
|
|
||||||
vim.keymap.set('n', '<leader>lf', vim.lsp.buf.format)
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>o', '<cmd>update<CR> <cmd>source<CR>')
|
-- Basic operations
|
||||||
vim.keymap.set('n', '<leader>w', '<cmd>write<CR>')
|
{ 'n', '<leader>o', '<cmd>update<CR> <cmd>source<CR>' },
|
||||||
vim.keymap.set('n', '<leader>q', '<cmd>quit<CR>')
|
{ 'n', '<leader>w', '<cmd>write<CR>' },
|
||||||
|
{ 'n', '<leader>q', '<cmd>quit<CR>' },
|
||||||
|
|
||||||
vim.keymap.set({ 'n', 'v', 'x' }, '<leader>y', "'+y<CR>")
|
-- Copy/delete to system clipboard
|
||||||
vim.keymap.set({ 'n', 'v', 'x' }, '<leader>d', "'+d<CR>")
|
{ { 'n', 'v', 'x' }, '<leader>y', "'+y<CR>" },
|
||||||
|
{ { 'n', 'v', 'x' }, '<leader>d', "'+d<CR>" },
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>cc', '<cmd>ClaudeCode<CR>', { desc = 'Toggle Claude Code' })
|
-- 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({
|
require('nvim-treesitter.configs').setup({
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
'c',
|
|
||||||
'bash',
|
'bash',
|
||||||
'c_sharp',
|
|
||||||
'go',
|
|
||||||
'haskell',
|
|
||||||
'lua',
|
'lua',
|
||||||
'python',
|
'python',
|
||||||
'rust',
|
'rust',
|
||||||
'vim',
|
|
||||||
'vimdoc',
|
|
||||||
'hyprlang',
|
|
||||||
},
|
},
|
||||||
sync_install = false,
|
sync_install = false,
|
||||||
auto_install = true,
|
auto_install = true,
|
||||||
|
@ -34,7 +27,6 @@ require("mason-lspconfig").setup({
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
"lua_ls",
|
"lua_ls",
|
||||||
"pylsp",
|
"pylsp",
|
||||||
"ltex",
|
|
||||||
},
|
},
|
||||||
automatic_installation = true,
|
automatic_installation = true,
|
||||||
})
|
})
|
||||||
|
@ -49,8 +41,7 @@ vim.lsp.config( 'lua_ls', {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
vim.lsp.config( 'lua_ls', { })
|
vim.lsp.enable({ 'lua_ls', 'pylsp', 'csharp_ls' })
|
||||||
vim.lsp.enable({ 'lua_ls', 'pylsp' })
|
|
||||||
|
|
||||||
vim.diagnostic.config({
|
vim.diagnostic.config({
|
||||||
signs = false,
|
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)
|
-- Handle when plugin is just a string (URL)
|
||||||
if type(plugin) == "string" then
|
if type(plugin) == "string" then
|
||||||
processed.url = plugin
|
processed.url = plugin:match("^https?://") and plugin or "https://github.com/" .. plugin
|
||||||
return processed
|
return processed
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Handle the plugin URL/name (convert from lazy.nvim format)
|
-- Handle the plugin URL/name (convert from lazy.nvim format)
|
||||||
|
local url = nil
|
||||||
if plugin[1] then
|
if plugin[1] then
|
||||||
processed.url = plugin[1]
|
url = plugin[1]
|
||||||
elseif plugin.url then
|
elseif plugin.url then
|
||||||
processed.url = plugin.url
|
url = plugin.url
|
||||||
elseif plugin.src then
|
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
|
end
|
||||||
|
|
||||||
-- Handle version
|
-- Handle version
|
||||||
|
|
45
lua/plug.lua
45
lua/plug.lua
|
@ -1,28 +1,39 @@
|
||||||
local pack = require 'pack'
|
local pack = require 'pack'
|
||||||
|
|
||||||
local plugins = {
|
local plugins = {
|
||||||
'https://github.com/catppuccin/nvim',
|
'catppuccin/nvim',
|
||||||
'https://github.com/nvim-treesitter/nvim-treesitter',
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
{ url = 'nvim-telescope/telescope.nvim',
|
||||||
{ url = 'https://github.com/echasnovski/mini.cursorword',
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
setup = true },
|
setup = true },
|
||||||
|
|
||||||
{ url = 'https://github.com/echasnovski/mini.pick',
|
{ 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 },
|
setup = true },
|
||||||
|
|
||||||
{ url = 'https://github.com/echasnovski/mini.starter',
|
{ url = 'echasnovski/mini.pick',
|
||||||
setup = true },
|
setup = true },
|
||||||
|
|
||||||
{ url = 'https://github.com/echasnovski/mini.trailspace',
|
{ url = 'echasnovski/mini.starter',
|
||||||
setup = true },
|
setup = true },
|
||||||
|
|
||||||
{ url = 'https://github.com/stevearc/oil.nvim',
|
{ url = 'echasnovski/mini.trailspace',
|
||||||
setup = true },
|
setup = true },
|
||||||
|
|
||||||
{ url = 'https://github.com/svampkorg/moody.nvim',
|
{ url = 'stevearc/oil.nvim',
|
||||||
setup = true },
|
setup = true },
|
||||||
|
|
||||||
{ url = 'https://github.com/greggh/claude-code.nvim',
|
{ url = 'svampkorg/moody.nvim',
|
||||||
|
setup = true },
|
||||||
|
|
||||||
|
{ url = 'greggh/claude-code.nvim',
|
||||||
setup = function ()
|
setup = function ()
|
||||||
require("claude-code").setup({
|
require("claude-code").setup({
|
||||||
window = {
|
window = {
|
||||||
|
@ -39,8 +50,8 @@ local plugins = {
|
||||||
})
|
})
|
||||||
end },
|
end },
|
||||||
|
|
||||||
{ url = 'https://github.com/nvim-lualine/lualine.nvim',
|
{ url = 'nvim-lualine/lualine.nvim',
|
||||||
dependencies = { 'https://github.com/nvim-tree/nvim-web-devicons' },
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||||
setup = function ()
|
setup = function ()
|
||||||
require('lualine').setup({
|
require('lualine').setup({
|
||||||
options = {
|
options = {
|
||||||
|
@ -50,16 +61,16 @@ local plugins = {
|
||||||
})
|
})
|
||||||
end },
|
end },
|
||||||
|
|
||||||
{ url = 'https://github.com/williamboman/mason.nvim',
|
{ url = 'williamboman/mason.nvim',
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{ url = 'https://github.com/williamboman/mason-lspconfig.nvim', setup = true },
|
{ url = 'williamboman/mason-lspconfig.nvim', setup = true },
|
||||||
'https://github.com/neovim/nvim-lspconfig'
|
'neovim/nvim-lspconfig'
|
||||||
},
|
},
|
||||||
setup = true },
|
setup = true },
|
||||||
|
|
||||||
{ url = 'https://github.com/Saghen/blink.cmp',
|
{ url = 'Saghen/blink.cmp',
|
||||||
version = "v1.6.0",
|
version = "v1.6.0",
|
||||||
dependencies = { 'https://github.com/rafamadriz/friendly-snippets' }},
|
dependencies = { 'rafamadriz/friendly-snippets' }},
|
||||||
}
|
}
|
||||||
|
|
||||||
pack.setup(plugins)
|
pack.setup(plugins)
|
||||||
|
|
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