No description
Find a file
Barrett Ruth e9bb8de70f
refactor: derive enum values from man page instead of hardcoding
Problem: static_enums was a manually maintained table of ~40 keywords
that could go stale when OpenSSH adds or changes config options.

Solution: parse enum values directly from the ssh_config man page using
two strategies: definitive list sentences ("The argument must be X, Y,
or Z") and fallback extraction from "set to X" patterns. Also fixes
keyword detection to handle digits (ForwardX11) and inline definitions
(Tunnel, SetEnv). Covers 36/41 old keywords plus discovers 4 new ones
(IPQoS, SyslogFacility, ObscureKeystrokeTiming, ControlPersist).
2026-02-22 23:34:47 -05:00
.github feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
lua refactor: derive enum values from man page instead of hardcoding 2026-02-22 23:34:47 -05:00
spec refactor: derive enum values from man page instead of hardcoding 2026-02-22 23:34:47 -05:00
.busted feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
.editorconfig feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
.gitignore feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
.luarc.json feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
.pre-commit-config.yaml feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
.prettierignore feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
.prettierrc feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
blink-cmp-ssh-scm-1.rockspec feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
flake.lock feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
flake.nix feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
LICENSE feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
README.md Update README to include image and features 2026-02-22 21:28:02 -05:00
selene.toml feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
stylua.toml feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00
vim.toml feat: initial blink-cmp-ssh implementation 2026-02-22 21:04:15 -05:00

blink-cmp-ssh

SSH configuration completion source for blink.cmp.

image

Features

  • Completes ssh_config keywords with man page documentation
  • Provides enum values for keywords with known option sets (ciphers, MACs, key exchange algorithms, etc.)
  • Keyword and enum data fetched asynchronously at runtime via man ssh_config and ssh -Q

Requirements

  • Neovim 0.10.0+
  • blink.cmp
  • ssh and man executables

Installation

Install via luarocks:

luarocks install blink-cmp-ssh

Or with lazy.nvim:

{
  'saghen/blink.cmp',
  dependencies = {
    'barrettruth/blink-cmp-ssh',
  },
  opts = {
    sources = {
      default = { 'ssh' },
      providers = {
        ssh = {
          name = 'SSH',
          module = 'blink-cmp-ssh',
        },
      },
    },
  },
}