neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

nvim.bash (2131B)


      1 #!/usr/bin/env bash
      2 
      3 # Provides bash completion for "nvim".
      4 
      5 if [[ -n ${BASH_COMPLETION_VERSINFO[*]} ]] \
      6  && ((BASH_COMPLETION_VERSINFO[0] > 2 || (\
      7  BASH_COMPLETION_VERSINFO[0] == 2 && BASH_COMPLETION_VERSINFO[1] >= 12))); then
      8  # use bash-completion >= 2.12
      9  _comp_nvim() {
     10    local cur prev words cword
     11    _comp_initialize -n : -- "$@" || return
     12 
     13    case "$prev" in
     14      --listen | --server)
     15        _comp_compgen_filedir
     16 
     17        if [[ "$cur" != /* ]]; then
     18          _comp_compgen_ip_addresses -a
     19          compopt -o nospace
     20        fi
     21 
     22        return
     23        ;;
     24    esac
     25 
     26    if [[ "$cur" =~ ^- ]]; then
     27      # Infers args from "nvim --help".
     28      _comp_compgen_help
     29      _comp_compgen -a -- -W "-c -Es -v -h"
     30 
     31      if [[ ${#COMPREPLY[@]} -eq 1 ]]; then
     32        case "${COMPREPLY-}" in
     33          -o | -O | -p | -V)
     34            compopt -o nospace
     35            ;;
     36        esac
     37      fi
     38      return
     39    fi
     40 
     41    _comp_compgen_filedir
     42  } \
     43    && complete -F _comp_nvim nvim
     44 else
     45  _comp_nvim() {
     46    local cur prev opts
     47    COMPREPLY=()
     48    cur="${COMP_WORDS[COMP_CWORD]}"
     49    prev="${COMP_WORDS[COMP_CWORD - 1]}"
     50 
     51    opts="
     52      --cmd
     53      -c
     54      -l
     55      -S
     56      -s
     57      -u
     58      -d
     59      -es -Es
     60      -h --help
     61      -i
     62      -n
     63      -o
     64      -O
     65      -p
     66      -R
     67      -v --version
     68      -V
     69      --
     70      --api-info
     71      --clean
     72      --embed
     73      --headless
     74      --listen
     75      --remote
     76      --server
     77      --startuptime
     78      "
     79 
     80    if [[ "$cur" =~ ^- ]]; then
     81      # shellcheck disable=SC2207
     82      COMPREPLY=($(compgen -W "$opts" -- "$cur"))
     83 
     84      if [[ ${#COMPREPLY[@]} -eq 1 ]]; then
     85        case "${COMPREPLY-}" in
     86          -o | -O | -p | -V)
     87            compopt -o nospace
     88            ;;
     89        esac
     90      fi
     91      return
     92    fi
     93 
     94    compopt -o default -o bashdefault
     95  } \
     96    && complete -F _comp_nvim nvim
     97 fi
     98 
     99 # aliases are not expanded by default during completion.
    100 for cmd in vi vim; do
    101  [[ "$(alias $cmd 2> /dev/null)" == "alias $cmd='nvim'" ]] \
    102    && type -f _comp_nvim > /dev/null 2>&1 \
    103    && ! complete -p $cmd > /dev/null 2>&1 \
    104    && complete -F _comp_nvim $cmd
    105 done