nix/bin/nvim-vimtex-callback

48 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
# Inverse search callback for sioyek/vimtex/skim
# Usage: nvim-vimtex-callback LINE FILE
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
SERVERNAME_FILE="/tmp/vimtex-servername"
# Read servername if available and server still exists
SERVERNAME_ARG=""
if [[ -f $SERVERNAME_FILE ]]; then
SERVERNAME=$(cat "$SERVERNAME_FILE")
if [[ -n $SERVERNAME && -e $SERVERNAME ]]; then
SERVERNAME_ARG="--servername $SERVERNAME"
fi
fi
# If first arg is a number, assume sioyek direct format: LINE FILE
if [[ $1 =~ ^[0-9]+$ ]]; then
LINE="$1"
FILE="$2"
exec "$SCRIPT_DIR/path-shim" nvr $SERVERNAME_ARG --remote-silent +"$LINE" "$FILE"
fi
# Otherwise parse VimTeX format: --headless -c "VimtexInverseSearch LINE 'FILE'"
CMD=""
while [[ $# -gt 0 ]]; do
case $1 in
--headless)
shift
;;
-c)
shift
CMD="$1"
shift
;;
*)
shift
;;
esac
done
if [[ -n $CMD ]]; then
if [[ $CMD =~ VimtexInverseSearch\ ([0-9]+)\ \'(.+)\' ]]; then
LINE="${BASH_REMATCH[1]}"
FILE="${BASH_REMATCH[2]}"
exec "$SCRIPT_DIR/path-shim" nvr $SERVERNAME_ARG --remote-silent +"$LINE" "$FILE"
fi
fi