branch: externals/vc-jj
commit 5294ae8ddda6f24a0ebfa0b342718df96eae3b6f
Author: Rudi Schlatte <r...@constantly.at>
Commit: Rudi Schlatte <r...@constantly.at>

    Use 'vc-jj-program' instead of hardcoded "jj"
---
 vc-jj.el | 53 +++++++++++++++++++++++++++++------------------------
 1 file changed, 29 insertions(+), 24 deletions(-)

diff --git a/vc-jj.el b/vc-jj.el
index c0c92e94cf..c12ce65652 100644
--- a/vc-jj.el
+++ b/vc-jj.el
@@ -45,6 +45,11 @@
   "VC Jujutsu backend."
   :group 'vc)
 
+(defcustom vc-jj-program "jj"
+  "Name of the jj executable (excluding any arguments)."
+  :type 'string
+  :risky t)
+
 (defcustom vc-jj-colorize-log t
   "Control whether to have jj colorize the log."
   :type 'boolean)
@@ -60,24 +65,24 @@
 
 (defun vc-jj--file-tracked (file)
   (with-temp-buffer
-    (and (= 0 (call-process "jj" nil t nil "file" "list" "--" file))
+    (and (= 0 (call-process vc-jj-program nil t nil "file" "list" "--" file))
          (not (= (point-min) (point-max))))))
 
 (defun vc-jj--file-modified (file)
   (with-temp-buffer
-    (and (= 0 (call-process "jj" nil t nil "diff" "--summary" "--" file))
+    (and (= 0 (call-process vc-jj-program nil t nil "diff" "--summary" "--" 
file))
          (not (= (point-min) (point-max)))
          (progn (goto-char (point-min)) (looking-at "M ")))))
 
 (defun vc-jj--file-added (file)
   (with-temp-buffer
-    (and (= 0 (call-process "jj" nil t nil "diff" "--summary" "--" file))
+    (and (= 0 (call-process vc-jj-program nil t nil "diff" "--summary" "--" 
file))
          (not (= (point-min) (point-max)))
          (progn (goto-char (point-min)) (looking-at "A ")))))
 
 (defun vc-jj--file-conflicted (file)
   (with-temp-buffer
-    (and (= 0 (call-process "jj" nil t nil "resolve" "--list" "--" file))
+    (and (= 0 (call-process vc-jj-program nil t nil "resolve" "--list" "--" 
file))
          (not (= (point-min) (point-max)))
          (progn (goto-char (point-min)) (looking-at file)))))
 
@@ -90,7 +95,7 @@
 ;;;###autoload         (vc-jj-registered file))))
 
 (defun vc-jj-registered (file)
-  (when (executable-find "jj")
+  (when (executable-find vc-jj-program)
     (unless (not (file-exists-p default-directory))
       (with-demoted-errors "Error: %S"
         (when-let ((root (vc-jj-root file)))
@@ -119,8 +124,8 @@
 The list is passed to UPDATE-FUNCTION."
   ;; TODO: could be async!
   (let* ((dir (expand-file-name dir))
-         (files (process-lines "jj" "file" "list" "--" dir))
-         (changed-files (process-lines "jj" "diff" "--summary" "--" dir))
+         (files (process-lines vc-jj-program "file" "list" "--" dir))
+         (changed-files (process-lines vc-jj-program "diff" "--summary" "--" 
dir))
          (added (mapcar (lambda (entry) (substring entry 2))
                         (seq-filter (lambda (file) (string-prefix-p "A " file))
                                     changed-files)))
@@ -132,7 +137,7 @@ The list is passed to UPDATE-FUNCTION."
          ;; to be fancy and parsing each line (and getting bugs with
          ;; file names with spaces), use `string-prefix-p' later.
          ;; Also, the command errors when there are no conflicts.
-         (conflicted (process-lines-ignore-status "jj" "resolve" "--list")))
+         (conflicted (process-lines-ignore-status vc-jj-program "resolve" 
"--list")))
     (let ((result
            (mapcar
             (lambda (file)
@@ -157,7 +162,7 @@ below the headers anyway.)"
   (pcase-let* ((default-directory dir)
                (`( ,change-id ,change-id-short ,commit-id ,commit-id-short
                    ,description ,bookmarks ,conflict ,divergent ,hidden)
-                (process-lines "jj" "log" "--no-graph" "-r" "@" "-T"
+                (process-lines vc-jj-program "log" "--no-graph" "-r" "@" "-T"
                                "concat(
 self.change_id().short(), \"\\n\",
 self.change_id().shortest(), \"\\n\",
@@ -199,7 +204,7 @@ self.hidden(), \"\\n\"
 
 (defun vc-jj-working-revision (file)
   (when-let ((default-directory (vc-jj-root file)))
-    (car (process-lines "jj" "log" "--no-graph"
+    (car (process-lines vc-jj-program "log" "--no-graph"
                         "-r" "@"
                         "-T" "self.change_id().short() ++ \"\\n\""))))
 
@@ -207,7 +212,7 @@ self.hidden(), \"\\n\"
   "Return a mode line string and tooltip for FILE."
   (pcase-let* ((long-rev (vc-jj-working-revision file))
                (`(,short-rev ,description)
-                (process-lines "jj" "log" "--no-graph" "-r" long-rev
+                (process-lines vc-jj-program "log" "--no-graph" "-r" long-rev
                                "-T" "self.change_id().shortest() ++ \"\\n\" ++ 
description.first_line() ++ \"\\n\""))
                (def-ml (vc-default-mode-line-string 'JJ file))
                (help-echo (get-text-property 0 'help-echo def-ml))
@@ -222,8 +227,8 @@ self.hidden(), \"\\n\"
 
 (defun vc-jj-create-repo ()
   (if current-prefix-arg
-      (call-process "jj" nil nil nil "git" "init" "--colocate")
-    (call-process "jj" nil nil nil "git" "init")))
+      (call-process vc-jj-program nil nil nil "git" "init" "--colocate")
+    (call-process vc-jj-program nil nil nil "git" "init")))
 
 (defun vc-jj-register (_files &optional _comment)
   ;; No action needed.
@@ -239,19 +244,19 @@ self.hidden(), \"\\n\"
 (defun vc-jj-checkin (files comment &optional _rev)
   (setq comment (replace-regexp-in-string "\\`Summary: " "" comment))
   (let ((args (append (vc-switches 'jj 'checkin) (list "--") files)))
-    (apply #'call-process "jj" nil nil nil "commit" "-m" comment args)))
+    (apply #'call-process vc-jj-program nil nil nil "commit" "-m" comment 
args)))
 
 (defun vc-jj-find-revision (file rev buffer)
-  (call-process "jj" nil buffer nil "file" "show" "-r" rev "--" file))
+  (call-process vc-jj-program nil buffer nil "file" "show" "-r" rev "--" file))
 
 (defun vc-jj-checkout (file &optional rev)
   (let ((args (if rev
                   (list "--from" rev "--" file)
                 (list "--" file))))
-    (call-process "jj" nil nil nil "restore" args)))
+    (call-process vc-jj-program nil nil nil "restore" args)))
 
 (defun vc-jj-revert (file &optional _contents-done)
-  (call-process "jj" nil nil nil "restore" "--" file))
+  (call-process vc-jj-program nil nil nil "restore" "--" file))
 
 (defun vc-jj-print-log (files buffer &optional _shortlog start-revision limit)
   "Print commit log associated with FILES into specified BUFFER."
@@ -267,7 +272,7 @@ self.hidden(), \"\\n\"
                (list "-T" vc-jj-log-template "--")
                files)))
     (with-current-buffer buffer (erase-buffer))
-    (apply #'call-process "jj" nil buffer nil "log" args)
+    (apply #'call-process vc-jj-program nil buffer nil "log" args)
     (when vc-jj-colorize-log
       (with-current-buffer buffer
         (ansi-color-apply-on-region (point-min) (point-max)))))
@@ -289,7 +294,7 @@ self.hidden(), \"\\n\"
 
 (defun vc-jj-root (_file)
   (with-temp-buffer
-    (when (= 0 (call-process "jj" nil (list t nil) nil "root"))
+    (when (= 0 (call-process vc-jj-program nil (list t nil) nil "root"))
       (buffer-substring (point-min) (1- (point-max))))))
 
 (defalias 'vc-jj-responsible-p #'vc-jj-root)
@@ -321,11 +326,11 @@ For jj, modify `.gitignore' and call `jj untrack' or `jj 
track'."
      (remove
       (vc--remove-regexp (concat "^" (regexp-quote file) "\\(\n\\|$\\)") 
ignore)
       (let ((default-directory directory))
-        (call-process "jj" nil (list t nil) nil "file" "track" file)))
+        (call-process vc-jj-program nil (list t nil) nil "file" "track" file)))
      (t
       (vc--add-line file ignore)
       (let ((default-directory directory))
-        (call-process "jj" nil (list t nil) nil "file" "untrack" file))))))
+        (call-process vc-jj-program nil (list t nil) nil "file" "untrack" 
file))))))
 
 (defvar vc-jj-diff-switches '("--git"))
 
@@ -343,7 +348,7 @@ For jj, modify `.gitignore' and call `jj untrack' or `jj 
track'."
         (args (append (vc-switches 'jj 'diff) (list "--") files)))
     (with-current-buffer buffer
       (erase-buffer))
-    (apply #'call-process "jj" nil buffer nil "diff" "--from" rev1 "--to" rev2 
args)
+    (apply #'call-process vc-jj-program nil buffer nil "diff" "--from" rev1 
"--to" rev2 args)
     (if (seq-some #'vc-jj--file-modified files)
         1
       0)))
@@ -351,7 +356,7 @@ For jj, modify `.gitignore' and call `jj untrack' or `jj 
track'."
 (defun vc-jj-annotate-command (file buf &optional rev)
   (with-current-buffer buf
     (let ((rev (or rev "@")))
-      (call-process "jj" nil t nil "file" "annotate" "-r" rev file))))
+      (call-process vc-jj-program nil t nil "file" "annotate" "-r" rev file))))
 
 (defconst vc-jj--annotation-line-prefix-re
   (rx (: bol
@@ -388,7 +393,7 @@ The regex captures four groups: change id, author, 
datetime, line number.")
 (defun vc-jj-revision-completion-table (files)
   (let ((revisions
          (apply #'process-lines
-                "jj" "log" "--no-graph"
+                vc-jj-program "log" "--no-graph"
                 "-T" "self.change_id() ++ \"\\n\"" "--" files)))
     (lambda (string pred action)
       (if (eq action 'metadata)

Reply via email to