quilt-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Quilt-dev] [PATCH 4/4] quilt.el: Fix quilt-editable when QUILT_PATCHES_


From: Ondřej Lysoněk
Subject: [Quilt-dev] [PATCH 4/4] quilt.el: Fix quilt-editable when QUILT_PATCHES_PREFIX is set
Date: Thu, 14 May 2020 21:59:53 +0200

This patch fixes a bug in quilt-editable: if QUILT_PATCHES_PREFIX is
set, quilt-editable will always return nil, even if the file being
edited is part of the topmost patch.

If QUILT_PATCHES_PREFIX is set, then 'quilt top' prints the patch name
as a relative path to the patch. Since in quilt-editable we're running
'quilt top' from the top level directory, the printed patch path is in
the form $QUILT_PATCHES/patch-name.

Later on, we're looking for a cached version of the file that we're
editing in .pc/. The patch directories are stored directly under .pc/,
rather than .pc/$QUILT_PATCHES/, so we must remove the $QUILT_PATCHES/
prefix from the patch path.

Signed-off-by: Ondřej Lysoněk <address@hidden>
---
 lib/quilt.el | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/lib/quilt.el b/lib/quilt.el
index a872aab..4c31bd2 100644
--- a/lib/quilt.el
+++ b/lib/quilt.el
@@ -58,6 +58,10 @@
   (or (quilt--get-config-variable "QUILT_PC")
       ".pc"))
 
+(defun quilt-patches-prefix ()
+  "Return the value of the QUILT_PATCHES_PREFIX config variable. Return nil if 
it is unset."
+  (quilt--get-config-variable "QUILT_PATCHES_PREFIX"))
+
 (defun quilt-find-dir (fn &optional prefn)
   "Return the top level dir of quilt from FN."
   (if (or (not fn) (equal fn "/") (equal fn prefn))
@@ -178,6 +182,13 @@
       (setq n (1+ n))))
   (completing-read p l nil t))
 
+(defun quilt--strip-patchname (pn)
+  "Return the name of patch PN sans the path to the patches directory."
+  (let ((patches-path (concat (quilt-patches-directory) "/")))
+    (if (string-prefix-p patches-path pn)
+       (substring pn (length patches-path))
+      pn)))
+
 (defvar quilt-edit-top-only 't)
 (defun quilt-editable (f)
   "Return t if F is editable in terms of current patch.  Return nil if 
otherwise."
@@ -188,7 +199,10 @@
        (if (quilt-bottom-p)
            (quilt-cmd "applied")       ; to print error message
          (setq dirs (if quilt-edit-top-only
-                        (list (substring (quilt-cmd-to-string "top")  0 -1))
+                        (list (let ((patch (substring (quilt-cmd-to-string 
"top")  0 -1)))
+                                (if (quilt-patches-prefix)
+                                    (quilt--strip-patchname patch)
+                                  patch)))
                         (cdr (cdr (directory-files (concat qd 
(quilt-pc-directory) "/"))))))
          (while (and (not result) dirs)
            (if (file-exists-p (concat qd (quilt-pc-directory) "/" (car dirs) 
"/" fn))
-- 
2.25.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]