File: racket-wsl.el

package info (click to toggle)
racket-mode 20250501~git.2eec63c-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 2,020 kB
  • sloc: lisp: 17,236; makefile: 105
file content (48 lines) | stat: -rw-r--r-- 1,689 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
;;; racket-wsl.el -*- lexical-binding: t -*-

;; Copyright (c) 2020-2022 by Greg Hendershott.
;; Portions Copyright (C) 1985-1986, 1999-2013 Free Software Foundation, Inc.

;; Author: Greg Hendershott
;; URL: https://github.com/greghendershott/racket-mode

;; SPDX-License-Identifier: GPL-3.0-or-later

(defvar racket--wslpath (and (eq system-type 'gnu/linux)
                             (executable-find "wslpath")))

(defun racket--call-wsl-path (pathname flag)
  "Wrapper for wslpath.

When variable `racket--wslpath' is not nil, use it to convert
PATHNAME using FLAG.

  wslpath usage:
    -a  force result to absolute path format
    -u  translate from a Windows path to a WSL path (default)
    -w  translate from a WSL path to a Windows path
    -m  translate from a WSL path to a Windows path, with \"/\" instead of \"\\\"
"
  (if racket--wslpath
      (with-temp-buffer
        (let ((code (call-process racket--wslpath
                                  nil                    ;infile
                                  (list (current-buffer) ;output
                                        nil)             ;stderr
                                  nil                    ;display
                                  flag
                                  pathname)))
          (unless (zerop code)
            (error "%s %s %s exit code %s" racket--wslpath flag pathname code)))
        (buffer-substring-no-properties (point-min) (1- (point-max))))
    pathname))

(defun racket-wsl-to-windows (pathname)
  (racket--call-wsl-path pathname "-w"))

(defun racket-windows-to-wsl (pathname)
  (racket--call-wsl-path pathname "-u"))

(provide 'racket-wsl)

;; racket-wsl.el ends here