Add toggleterm

This commit is contained in:
hlstwizard 2026-03-30 12:52:57 +08:00
parent 5ccdba3fac
commit b098a3ffe0
3 changed files with 41 additions and 23 deletions

View File

@ -21,6 +21,7 @@
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
"telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" }, "telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
"tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" }, "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
} }

View File

@ -1,22 +1,22 @@
return { return {
"nickjvandyke/opencode.nvim", 'nickjvandyke/opencode.nvim',
version = "*", -- Latest stable release version = '*', -- Latest stable release
dependencies = { dependencies = {
{ {
-- `snacks.nvim` integration is recommended, but optional -- `snacks.nvim` integration is recommended, but optional
---@module "snacks" <- Loads `snacks.nvim` types for configuration intellisense ---@module "snacks" <- Loads `snacks.nvim` types for configuration intellisense
"folke/snacks.nvim", 'folke/snacks.nvim',
optional = true, optional = true,
opts = { opts = {
input = {}, -- Enhances `ask()` input = {}, -- Enhances `ask()`
picker = { -- Enhances `select()` picker = { -- Enhances `select()`
actions = { actions = {
opencode_send = function(...) return require("opencode").snacks_picker_send(...) end, opencode_send = function(...) return require('opencode').snacks_picker_send(...) end,
}, },
win = { win = {
input = { input = {
keys = { keys = {
["<a-a>"] = { "opencode_send", mode = { "n", "i" } }, ['<a-a>'] = { 'opencode_send', mode = { 'n', 'i' } },
}, },
}, },
}, },
@ -29,18 +29,16 @@ return {
vim.g.opencode_opts = { vim.g.opencode_opts = {
server = { server = {
start = function() start = function()
require("opencode.terminal").open("opencode --port", { require('opencode.terminal').open('opencode --port', {
split = "right", split = 'right',
width = math.max(40, math.floor(vim.o.columns * 0.25)), width = math.max(40, math.floor(vim.o.columns * 0.4)),
}) })
end, end,
stop = function() stop = function() require('opencode.terminal').close() end,
require("opencode.terminal").close()
end,
toggle = function() toggle = function()
require("opencode.terminal").toggle("opencode --port", { require('opencode.terminal').toggle('opencode --port', {
split = "right", split = 'right',
width = math.max(40, math.floor(vim.o.columns * 0.25)), width = math.max(40, math.floor(vim.o.columns * 0.4)),
}) })
end, end,
}, },
@ -49,18 +47,18 @@ return {
vim.o.autoread = true -- Required for `opts.events.reload` vim.o.autoread = true -- Required for `opts.events.reload`
-- Recommended/example keymaps -- Recommended/example keymaps
vim.keymap.set({ "n", "x" }, "<C-a>", function() require("opencode").ask("@this: ", { submit = true }) end, { desc = "Ask opencode…" }) vim.keymap.set({ 'n', 'x' }, '<C-a>', function() require('opencode').ask('@this: ', { submit = true }) end, { desc = 'Ask opencode…' })
vim.keymap.set({ "n", "x" }, "<C-x>", function() require("opencode").select() end, { desc = "Execute opencode action…" }) vim.keymap.set({ 'n', 'x' }, '<C-x>', function() require('opencode').select() end, { desc = 'Execute opencode action…' })
vim.keymap.set({ "n", "t" }, "<C-.>", function() require("opencode").toggle() end, { desc = "Toggle opencode" }) vim.keymap.set({ 'n', 't' }, '<C-.>', function() require('opencode').toggle() end, { desc = 'Toggle opencode' })
vim.keymap.set({ "n", "x" }, "go", function() return require("opencode").operator("@this ") end, { desc = "Add range to opencode", expr = true }) vim.keymap.set({ 'n', 'x' }, 'go', function() return require('opencode').operator '@this ' end, { desc = 'Add range to opencode', expr = true })
vim.keymap.set("n", "goo", function() return require("opencode").operator("@this ") .. "_" end, { desc = "Add line to opencode", expr = true }) vim.keymap.set('n', 'goo', function() return require('opencode').operator '@this ' .. '_' end, { desc = 'Add line to opencode', expr = true })
vim.keymap.set("n", "<S-C-u>", function() require("opencode").command("session.half.page.up") end, { desc = "Scroll opencode up" }) vim.keymap.set('n', '<S-C-u>', function() require('opencode').command 'session.half.page.up' end, { desc = 'Scroll opencode up' })
vim.keymap.set("n", "<S-C-d>", function() require("opencode").command("session.half.page.down") end, { desc = "Scroll opencode down" }) vim.keymap.set('n', '<S-C-d>', function() require('opencode').command 'session.half.page.down' end, { desc = 'Scroll opencode down' })
-- You may want these if you use the opinionated `<C-a>` and `<C-x>` keymaps above — otherwise consider `<leader>o…` (and remove terminal mode from the `toggle` keymap) -- You may want these if you use the opinionated `<C-a>` and `<C-x>` keymaps above — otherwise consider `<leader>o…` (and remove terminal mode from the `toggle` keymap)
vim.keymap.set("n", "+", "<C-a>", { desc = "Increment under cursor", noremap = true }) vim.keymap.set('n', '+', '<C-a>', { desc = 'Increment under cursor', noremap = true })
vim.keymap.set("n", "-", "<C-x>", { desc = "Decrement under cursor", noremap = true }) vim.keymap.set('n', '-', '<C-x>', { desc = 'Decrement under cursor', noremap = true })
end, end,
} }

View File

@ -0,0 +1,19 @@
---@module 'lazy'
---@type LazySpec
return {
{
'akinsho/toggleterm.nvim',
version = '*',
cmd = { 'ToggleTerm', 'TermExec' },
keys = {
{ '<leader>tt', '<cmd>ToggleTerm<CR>', desc = '[T]oggle [T]erminal' },
},
opts = {
open_mapping = [[<c-\>]],
direction = 'float',
float_opts = {
border = 'curved',
},
},
},
}