Como posso criar tags de ajuda para plugins vim de pacotes?

1

Eu instalei os pacotes vim-latexsuite e vim-outliner , que são addons para o vim. Ambos vêm com arquivos de documentação, que são instalados no /usr/share/vim/addons/doc directory . Emitindo o comando 'help' de dentro do vim, a documentação não está disponível, porque não foi instalada corretamente. Isso pode se aplicar a outros addons também.

Como posso criar as tags de ajuda para esses addons que eu esperava que fossem criados pela rotina de instalação?

    
por geram 14.02.2015 / 20:21

1 resposta

2

Consegui resolver o problema em dois passos.

  1. Como o vim não pôde gerar o índice necessário a partir da documentação compactada, extraí esses arquivos antes de executar novamente o indexador. Como o vim é capaz de lidar com a documentação compactada, eu removi os documentos extraídos e ajustei os nomes de arquivo do índice de acordo.
#!/bin/bash

#set -x
set -e

umask 077 
TMPTAGS=$(mktemp --tmpdir "'basename "$0"'.XXXXXXXXXXXX")
trap "rm -f '$TMPTAGS'" EXIT

declare -r AWK_SCRIPT='{ if( $2 in files ) $2=$2".gz"; print }'

helptags(){
        # extract zipped helpfiles and remember filenames
        local -i I=0 
        local -a TXT 
        for ZIP in 'find . -xtype f \( -name '*.txt.gz' -o -name '*.??x.gz' \)'; do
                T=${ZIP%.gz}
                if [ -n "$T" ]; then
                        TXT[$((I++))]=$T
                        zcat "$ZIP" >"$T"
                fi
        done
        # generate tagfiles
        vim -c 'helptags .' +q
        # point tags to the zipped helpfiles
        local AWK_BEGIN="BEGIN { OFS=FS; "
        while [ $((I--)) -gt 0 ]; do
                AWK_BEGIN+="files[\"'basename "${TXT[$I]}"'\"]; "
        done
        AWK_BEGIN+='}'
        for T in 'find . -xtype f \( -name 'tags' -o -name 'tags-??' \)'; do
                awk -F '\t' "$AWK_BEGIN $AWK_SCRIPT" "$T" >"$TMPTAGS"
                mv -f "$TMPTAGS" "$T"
        done
        # remove unzipped helpfiles
        for T in "${TXT[@]}"; do
                rm -f "$T"
        done
}

while [ $# -gt 0 ]; do
        if [ -d "$1" ]; then
                pushd "$1" >/dev/null
                helptags
                popd >/dev/null
        else
                printf '*** Invalid argument: %s\n' "$1" >&2 
        fi
        shift
done
  1. Por fim, acrescentei /usr/share/vim/addons às variáveis runtimpath em /usr/share/vim/vim74/debian.vim e /etc/vim/vimrc.tiny .
por geram 20.02.2015 / 00:21