akinsho / akinsho/toggleterm.nvim

[REFACTOR] Adopt scoped `:ToggleTerm` subcommands and optional legacy commands

Open
#668 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
Lua
Stars
5.6k
Forks
206
PR merge metrics
No merged PRs in 30d

Description

## Problem
This plugin has multiple user commands using camelCase (`:TermExec`, `:TermNew`, `:TermSelect`, `:ToggleTermToggleAll`, `:ToggleTermSend*`, `:ToggleTermSetName`, etc.). However, I've been reading Neovim plugin conventions and a point they bring up is that this design pollutes the command namespace and makes completion noisy. A better design would be `:{PLUGIN}{subcommand}` ex: `:ToggleTerm select`
## Proposal
Adopt a single scoped command with subcommands, with completion support.
Example:
- `:ToggleTerm` (default toggle)
- `:ToggleTerm toggle`
- `:ToggleTerm exec …`
- `:ToggleTerm new …`
- `:ToggleTerm select`
- `:ToggleTerm toggle_all`
- `:ToggleTerm send current_line|visual_lines|visual_selection`
- `:ToggleTerm set_name …`
Provide subcommand-aware completion.
Add `legacy_commands = true` (default **false**) to optionally register the old command names for users who rely on them.
## Why
Better completion UX.
## Acceptance Criteria
- Single `:ToggleTerm` command works with subcommands listed above
- Completion suggests subcommands and delegates to existing argument completion for `exec`, `new`, `toggle`
- `legacy_commands` opt‑in registers old command names

## Pull request
Would a pull request be welcomed? Along with the refactoring of the command names, I would update the README.md and doc/toggleterm.txt. Also, I would update the tests.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.