A companion plugin for the paso cli
Find a file
2025-12-09 04:12:31 -06:00
lua/paso batman 2025-12-09 04:12:31 -06:00
README.md batman 2025-12-09 04:12:31 -06:00

paso.nvim

Neovim companion plugin for paso - a terminal kanban board.

Automatically configures paso with a theme generated from your Neovim colorscheme, similar to how snacks.nvim integrates with lazygit.

Features

  • Opens paso in a floating terminal window
  • Auto-generates theme from your Neovim colorscheme
  • Regenerates theme automatically on colorscheme change
  • Supports custom theme overrides

Requirements

Installation

lazy.nvim

{
  "thenoetrevino/paso.nvim",
  dependencies = {
    "folke/snacks.nvim",
  },
  opts = {
    -- your paso.nvim configuration
  },
}

Usage

Basic Commands

-- Open paso
require("paso").open()

-- Toggle paso (open if closed, close if open)
require("paso").toggle()

Keybindings

-- Example keybindings in your config
vim.keymap.set("n", "<leader>p", function() require("paso").toggle() end, { desc = "Toggle Paso" })

Configuration

Default configuration:

{
  -- Auto-configure theme from colorscheme
  configure = true,

  -- Path to theme file
  theme_path = vim.fn.stdpath("cache") .. "/paso-theme.yaml",

  -- Theme mappings (Neovim highlight groups → paso colors)
  theme = {
    accent          = { fg = "Special" },
    create          = { fg = "String" },
    edit            = { fg = "Function" },
    delete          = { fg = "DiagnosticError" },
    column_border   = { fg = "FloatBorder" },
    task_border     = { fg = "FloatBorder" },
    task_background = { bg = "NormalFloat" },
    selected_border = { fg = "MatchParen" },
    selected_bg     = { bg = "Visual" },
    title           = { fg = "Title" },
    subtle          = { fg = "Comment" },
    normal          = { fg = "Normal" },
    info_fg         = { fg = "DiagnosticInfo" },
    info_bg         = { bg = "NormalFloat" },
    warning_fg      = { fg = "DiagnosticWarn" },
    warning_bg      = { bg = "NormalFloat" },
    error_fg        = { fg = "DiagnosticError" },
    error_bg        = { bg = "NormalFloat" },
  },

  -- Window configuration (passed to snacks.terminal)
  win = {
    position = "float",
    height = 0.9,
    width = 0.9,
    border = "rounded",
  },
}

Custom Configuration

require("paso").open({
  -- Override window size
  win = {
    height = 0.8,
    width = 0.8,
  },

  -- Override specific theme colors
  theme = {
    accent = { fg = "DiagnosticHint" },
    create = { fg = "DiagnosticOk" },
  },
})

How It Works

  1. paso.nvim reads your Neovim colorscheme highlight groups
  2. Maps them to paso color fields (accent, create, edit, etc.)
  3. Writes a theme YAML file to ~/.cache/nvim/paso-theme.yaml
  4. Sets PASO_THEME_FILE environment variable before launching paso
  5. paso reads and merges this theme file with your user config

License

MIT