win_edit 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/usr/bin/env bash
  2. # open_scite.sh
  3. # Usage:
  4. # ./open_scite.sh [/path/to/file] [line_number] [column_number]
  5. # If no path is provided, a new file named new_file.md is opened in the
  6. # current directory.
  7. set -euo pipefail
  8. if [[ $# -gt 3 ]]; then
  9. echo "Usage: $0 [linux_path_to_file] [line_number] [column_number]"
  10. exit 1
  11. fi
  12. DEFAULT_FILE="$PWD/new_file.md"
  13. FILE_LINUX="${1:-$DEFAULT_FILE}"
  14. LINE="${2:-}"
  15. COL="${3:-}"
  16. if ! command -v wslpath >/dev/null 2>&1; then
  17. echo "Error: wslpath not found." >&2
  18. exit 1
  19. fi
  20. # Convert Linux path to Windows path
  21. FILE_WIN="$(wslpath -w "$FILE_LINUX")"
  22. # Build goto arg if line/col provided
  23. GOTO_ARG=""
  24. if [[ -n "$LINE" ]]; then
  25. if ! [[ "$LINE" =~ ^[0-9]+$ ]]; then
  26. echo "Error: line number must be numeric." >&2
  27. exit 1
  28. fi
  29. if [[ -n "$COL" && ! "$COL" =~ ^[0-9]+$ ]]; then
  30. echo "Error: column number must be numeric." >&2
  31. exit 1
  32. fi
  33. COL="${COL:-1}" # default col=1 if only line given
  34. GOTO_ARG="-goto:$LINE,$COL"
  35. fi
  36. # Debug info
  37. # echo "Opening in SciTE:"
  38. # echo " FILE_WIN=$FILE_WIN"
  39. # [[ -n "$GOTO_ARG" ]] && echo " GOTO_ARG=$GOTO_ARG"
  40. # Paths
  41. POWERSHELL="/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe"
  42. SCITE="C:\\apps\\scite\\SciTE.exe"
  43. # Launch SciTE
  44. if [[ -n "$GOTO_ARG" ]]; then
  45. "$POWERSHELL" -NoProfile -Command \
  46. "Start-Process -FilePath '$SCITE' -ArgumentList \"$FILE_WIN\",\"$GOTO_ARG\""
  47. else
  48. "$POWERSHELL" -NoProfile -Command \
  49. "Start-Process -FilePath '$SCITE' -ArgumentList \"$FILE_WIN\""
  50. fi