quilt-dev
[Top][All Lists]
Advanced

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

[Quilt-dev] [PATCH v2 6/7] quilt.el: Fix quilt-editable when QUILT_PATCH


From: Ondřej Lysoněk
Subject: [Quilt-dev] [PATCH v2 6/7] quilt.el: Fix quilt-editable when QUILT_PATCHES_PREFIX is set
Date: Sat, 30 May 2020 18:17:23 +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 <olysonek@redhat.com>
---
 lib/quilt.el | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/quilt.el b/lib/quilt.el
index fb6df35..4221674 100644
--- a/lib/quilt.el
+++ b/lib/quilt.el
@@ -69,6 +69,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))
@@ -189,6 +193,11 @@
       (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) "/")))
+    (substring pn (length patches-path))))
+
 (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."
@@ -199,7 +208,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]