nix/bin/nvim-vimtex-callback

43 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
# VimTeX inverse search callback wrapper
# This script is called by sioyek for inverse search
# It uses nvr to connect to the running Neovim instance
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
SERVERNAME_FILE="/tmp/vimtex-servername"
# VimTeX calls: nvim --headless -c "VimtexInverseSearch LINE 'FILE'"
# Parse the VimtexInverseSearch command to extract LINE and FILE
# Then use nvr --remote +LINE FILE which is more reliable
CMD=""
while [[ $# -gt 0 ]]; do
case $1 in
--headless)
shift
;;
-c)
shift
CMD="$1"
shift
;;
*)
shift
;;
esac
done
if [[ -n $CMD ]]; then
# Extract line number and file from: VimtexInverseSearch LINE 'FILE'
if [[ $CMD =~ VimtexInverseSearch\ ([0-9]+)\ \'(.+)\' ]]; then
LINE="${BASH_REMATCH[1]}"
FILE="${BASH_REMATCH[2]}"
if [[ -f $SERVERNAME_FILE ]]; then
SERVERNAME=$(cat "$SERVERNAME_FILE")
exec "$SCRIPT_DIR/path-shim" nvr --servername "$SERVERNAME" --remote-silent +"$LINE" "$FILE"
else
exec "$SCRIPT_DIR/path-shim" nvr --remote-silent +"$LINE" "$FILE"
fi
fi
fi