Compare commits
No commits in common. "9e8f286a62c95f0b9e9dd4fcea207be536ed7f3e" and "2611de78f292b539b766fd8ab9da9b752bdf25d8" have entirely different histories.
9e8f286a62
...
2611de78f2
|
|
@ -0,0 +1,13 @@
|
|||
return {
|
||||
_all = {
|
||||
coverage = false,
|
||||
lpath = 'lua/?.lua;lua/?/init.lua',
|
||||
lua = 'nlua',
|
||||
},
|
||||
default = {
|
||||
verbose = true,
|
||||
},
|
||||
tests = {
|
||||
verbose = true,
|
||||
},
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
name: Ci
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Stylua
|
||||
uses: JohnnyMorganz/stylua-action@v3
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
version: latest
|
||||
args: --check .
|
||||
|
||||
docs:
|
||||
runs-on: ubuntu-latest
|
||||
name: pandoc to vimdoc
|
||||
if: ${{ github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: panvimdoc
|
||||
uses: kdheepak/panvimdoc@main
|
||||
with:
|
||||
vimdoc: QQdock.nvim.nvim
|
||||
treesitter: true
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: "chore(doc): auto generate docs"
|
||||
commit_user_name: "github-actions[bot]"
|
||||
commit_user_email: "github-actions[bot]@users.noreply.github.com"
|
||||
commit_author: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
|
||||
ub.com>"
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
name: Run tests
|
||||
on:
|
||||
pull_request: ~
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Run tests
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
neovim_version: ['nightly', 'stable']
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Download stylua
|
||||
shell: bash
|
||||
run: |
|
||||
wget "https://github.com/JohnnyMorganz/StyLua/releases/download/v0.18.0/stylua-linux.zip" -P /home/runner/.local/bin
|
||||
unzip /home/runner/.local/bin/stylua-linux.zip -d /home/runner/.local/bin
|
||||
chmod +x /home/runner/.local/bin/stylua
|
||||
- name: Run tests
|
||||
uses: nvim-neorocks/nvim-busted-action@v1
|
||||
with:
|
||||
nvim_version: ${{ matrix.neovim_version }}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
column_width = 100
|
||||
line_endings = "Unix"
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferSingle"
|
||||
call_parentheses = "Always"
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2023 nvimdev
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
44
README.md
44
README.md
|
|
@ -2,20 +2,17 @@
|
|||
|
||||
持久化自适应浮动终端管理器。
|
||||
|
||||
## 特性
|
||||
|
||||
- **持久化** — 同一个终端实例反复 show/hide,命令输出不丢
|
||||
- **自适应方向** — 横屏 → 右侧分屏(45%),竖屏 → 下方分屏(40%)
|
||||
- **轻量** — 依赖 toggleQQdock.nvim,API 简洁
|
||||
每次按 `<c-t>` 打开 shell,聊完 Reasonix 按 `<C-i>` 隐藏,再按回来——对话还在。横屏自动右侧分屏,竖屏自动下方分屏。
|
||||
|
||||
## 安装
|
||||
|
||||
```lua
|
||||
-- lazy.nvim
|
||||
{
|
||||
"newbie/QQdock.nvim",
|
||||
dependencies = { "akinsho/toggleQQdock.nvim" },
|
||||
'newbie/QQdock.nvim',
|
||||
dependencies = { 'akinsho/toggleterm.nvim' },
|
||||
config = function()
|
||||
require("QQdock").setup()
|
||||
-- QQdock 无全局配置,直接用
|
||||
end,
|
||||
}
|
||||
```
|
||||
|
|
@ -23,31 +20,42 @@
|
|||
## 用法
|
||||
|
||||
```lua
|
||||
local T = require("QQdock")
|
||||
local Q = require('QQdock')
|
||||
|
||||
T.shell() -- 普通 shell
|
||||
T.open("reasonix") -- Reasonix AI
|
||||
T.open("lazygit") -- lazygit
|
||||
Q.shell() -- 普通 shell
|
||||
Q.open('reasonix') -- Reasonix AI agent
|
||||
Q.open('lazygit') -- lazygit
|
||||
Q.open('btm') -- 系统监控
|
||||
Q.open('yazi') -- 文件管理器
|
||||
```
|
||||
|
||||
## 推荐键位
|
||||
|
||||
```lua
|
||||
vim.keymap.set("n", "<c-t>", T.shell)
|
||||
vim.keymap.set("i", "<c-t>", T.shell)
|
||||
vim.keymap.set("n", "<C-i>", function() T.open("reasonix") end)
|
||||
vim.keymap.set("n", "<leader>gg", function() T.open("lazygit") end)
|
||||
vim.keymap.set({ 'n', 'i' }, '<c-t>', Q.shell, { noremap = true })
|
||||
vim.keymap.set('n', '<C-i>', function() Q.open('reasonix') end)
|
||||
vim.keymap.set('n', '<leader>gg', function() Q.open('lazygit') end)
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
| 函数 | 参数 | 作用 |
|
||||
|------|------|------|
|
||||
| `T.shell()` | — | 打开/关闭持久 shell |
|
||||
| `T.open(cmd)` | cmd: string | 打开/关闭指定命令的持久终端 |
|
||||
| `Q.shell()` | — | 打开/关闭持久 shell |
|
||||
| `Q.open(cmd)` | cmd | 打开/关闭指定命令的持久终端 |
|
||||
|
||||
## 特性
|
||||
|
||||
- **持久化** — toggle 显隐,终端状态保留
|
||||
- **自适应** — 横屏右侧 45%,竖屏下方 40%
|
||||
- **轻量** — 仅依赖 toggleterm.nvim,无其他依赖
|
||||
|
||||
## TODO
|
||||
|
||||
- [ ] 翻译(trans)
|
||||
- [ ] 系统监控(btop)
|
||||
- [ ] 文件管理器(yazi)
|
||||
|
||||
## 协议
|
||||
|
||||
MIT
|
||||
|
|
|
|||
|
|
@ -1,14 +1,12 @@
|
|||
-- addons/term.lua — 持久化自适应终端
|
||||
-- QQdock.nvim — Persistent adaptive terminal dock
|
||||
--
|
||||
-- 特性:持久化终端实例、自适应窗口方向(横屏右分屏/竖屏下分屏)、依赖 toggleterm.nvim
|
||||
--
|
||||
-- 用法:
|
||||
-- local T = require('addons.term')
|
||||
-- T.shell() -- 打开/关闭普通终端(<c-t>)
|
||||
-- T.open('reasonix') -- 打开/关闭 Reasonix(<C-i>)
|
||||
--
|
||||
-- 特性:
|
||||
-- - 同一个终端实例持久化(关掉再开回来,对话不丢)
|
||||
-- - 窗口方向自适应:横屏→右侧(45%),竖屏→下方(40%)
|
||||
-- - 依赖 toggleterm.nvim
|
||||
-- local Q = require('QQdock')
|
||||
-- Q.shell() -- 打开/关闭普通 shell
|
||||
-- Q.open('reasonix') -- 打开/关闭 Reasonix
|
||||
-- Q.open('lazygit') -- 打开/关闭 lazygit
|
||||
|
||||
local M = {}
|
||||
|
||||
|
|
@ -16,6 +14,9 @@ local terms = {} -- 缓存终端实例,key 是命令名(nil = 普通 shell
|
|||
|
||||
function M.open(cmd)
|
||||
local ui = vim.api.nvim_list_uis()[1]
|
||||
if not ui then
|
||||
return
|
||||
end
|
||||
local tall = ui.height > ui.width
|
||||
local name = cmd or '__shell__'
|
||||
|
||||
Loading…
Reference in New Issue