guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 7cd121433b79bf69ab0e7990ef3ccff1bebf6945
Author: Maxim Cournoyer <ma...@guixotic.coop>
AuthorDate: Sun Jul 20 22:31:14 2025 +0900

    gnu: emacs-bash-completion: Update to 3.2-0.d32863d.
    
    * gnu/packages/emacs-xyz.scm (emacs-bash-completion): Update to 
3.2-0.d32863d.
    [source]: Delete patches.
    * gnu/packages/patches/emacs-bash-completion-preserve-exit-code.patch: 
Delete file.
    * gnu/packages/patches/emacs-bash-completion-preserve-ps1.patch: Likewise.
    * gnu/local.mk (dist_patch_DATA): De-register them.
    
    Change-Id: If3a6f6954d3d3b7c34cbc8634c95cf4c18dbb318
---
 gnu/local.mk                                       |   2 -
 gnu/packages/emacs-xyz.scm                         |  61 +++++-----
 .../emacs-bash-completion-preserve-exit-code.patch | 131 --------------------
 .../emacs-bash-completion-preserve-ps1.patch       | 134 ---------------------
 4 files changed, 30 insertions(+), 298 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index ffedadf25d..c8cc45aec0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1237,8 +1237,6 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/elm-offline-package-registry.patch      \
   %D%/packages/patches/elm-reactor-static-files.patch          \
   %D%/packages/patches/emacs-all-the-icons-remove-duplicate-rs.patch   \
-  %D%/packages/patches/emacs-bash-completion-preserve-exit-code.patch  \
-  %D%/packages/patches/emacs-bash-completion-preserve-ps1.patch        \
   %D%/packages/patches/emacs-deferred-fix-number-of-arguments.patch    \
   %D%/packages/patches/emacs-elpy-dup-test-name.patch          \
   %D%/packages/patches/emacs-disable-jit-compilation.patch                     
\
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 44a93cdeb3..653bbc9156 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -24835,38 +24835,37 @@ Slack client.")
       (license license:gpl3+))))
 
 (define-public emacs-bash-completion
-  (package
-    (name "emacs-bash-completion")
-    (version "3.2")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/szermatt/emacs-bash-completion";)
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0664dihdfvrbxqxy00fw0skdg454njm673ip54qrgkh38vyv5432"))
-       (patches
-        (search-patches "emacs-bash-completion-preserve-ps1.patch"
-                        "emacs-bash-completion-preserve-exit-code.patch"))))
-    (build-system emacs-build-system)
-    (arguments
-     (list
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-before 'install 'configure
-            (lambda* (#:key inputs #:allow-other-keys)
-              (emacs-substitute-variables "bash-completion.el"
-                ("bash-completion-prog"
-                 (search-input-file inputs "/bin/bash"))))))))
-    (inputs (list bash))
-    (home-page "https://github.com/szermatt/emacs-bash-completion";)
-    (synopsis "Bash completion for the shell buffer")
-    (description
-     "Bash Completion defines dynamic completion hooks for Shell mode and
+  (let ((commit "d32863dde8d35a44d8b88930d50d3979ea22788e")
+        (revision "0"))
+    (package
+      (name "emacs-bash-completion")
+      (version (git-version "3.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+                (url "https://github.com/szermatt/emacs-bash-completion";)
+                (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "176hkx0m57464jwjv6iladv22mr2i5q896a9hbb3dj54ym6clrg5"))))
+      (build-system emacs-build-system)
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'install 'configure
+              (lambda* (#:key inputs #:allow-other-keys)
+                (emacs-substitute-variables "bash-completion.el"
+                  ("bash-completion-prog"
+                   (search-input-file inputs "/bin/bash"))))))))
+      (inputs (list bash))
+      (home-page "https://github.com/szermatt/emacs-bash-completion";)
+      (synopsis "Bash completion for the shell buffer")
+      (description
+       "Bash Completion defines dynamic completion hooks for Shell mode and
 @code{shell-command} prompts that are based on Bash completion.")
-    (license license:gpl2+)))
+      (license license:gpl2+))))
 
 (define-public emacs-easy-kill
   (package
diff --git 
a/gnu/packages/patches/emacs-bash-completion-preserve-exit-code.patch 
b/gnu/packages/patches/emacs-bash-completion-preserve-exit-code.patch
deleted file mode 100644
index a64f80bb8d..0000000000
--- a/gnu/packages/patches/emacs-bash-completion-preserve-exit-code.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From a96525afd9077c06d781c59e78bfc6620e41be8f Mon Sep 17 00:00:00 2001
-From: Stephane Zermatten <szerm...@gmx.net>
-Date: Fri, 25 Apr 2025 18:08:01 +0300
-Subject: [PATCH] fix: Recover $? after completion.
-
-Before this change, the value of $? was lost when doing a completion as
-it required running a command, so $? became the status code of the
-completion command.
-
-So if you typed:
-
-> false
-> ech<TAB> $?
-
-You would get 0 instead of 1, set by false.
-
-This change stores the value of $? first thing before executing any
-command, then have __ebcret restore it. The status code that bash
-completion, the one that's embedded in the next prompt, remains the
-status code of the completion command, but $? is the status code of the
-last user command, before completion was run.
-
-issue #77
----
- bash-completion.el                       | 22 +++++++--------
- test/bash-completion-integration-test.el | 34 ++++++++++++++++++++++++
- 2 files changed, 45 insertions(+), 11 deletions(-)
-
-diff --git a/bash-completion.el b/bash-completion.el
-index 130152f..5a7d9ff 100644
---- a/bash-completion.el
-+++ b/bash-completion.el
-@@ -294,7 +294,7 @@ Bash processes.")
- (defconst bash-completion-special-chars "[ -$&-*,:-<>?[-^`{-}]"
-   "Regexp of characters that must be escaped or quoted.")
- 
--(defconst bash-completion--ps1 "'==emacs==ret=$?==.'"
-+(defconst bash-completion--ps1 "'==emacs==ret=${__ebcret:-$?}==.'"
-   "Value for the special PS1 prompt set for completions, quoted.")
- 
- (eval-when-compile
-@@ -1532,12 +1532,12 @@ Return the status code of the command, as a number."
-             ;; single process, assume __ebcpre is already defined
-             ((not define-functions)
-              (concat
--              "if type __ebcpre &>/dev/null; then "
-+              "__ebcor=$?; if type __ebcpre &>/dev/null; then "
-               "  __ebcpre; %s; __ebcret $?; "
-               "else "
-               "  echo ==emacs==nopre=${BASH_VERSION}==.; "
--              "  __ebcp=(\"$PS1\" \"$PROMPT_COMMAND\");"
--              "  unset PS1 PROMPT_COMMAND;"
-+              "  __ebcp=(\"$PS1\" \"$PROMPT_COMMAND\" $__ebcor);"
-+              "  unset PS1 PROMPT_COMMAND __ebcor;"
-               "fi;\n"))
-             ;; single process, define __ebcpre
-             (t
-@@ -1549,23 +1549,23 @@ Return the status code of the command, as a number."
-                "  fi;"
-                "  history -d $c &>/dev/null || true;"
-                "} ; function __ebcret {"
--               "  __ebcret=t;"
--               "  return $1;"
-+               "  __ebcret=$1;"
-+               "  return ${__ebcp[2]};"
-                "} ; function __ebctrap {"
--               " if [[ \"$__ebcret\" = \"t\" && ${#__ebcp[@]} -gt 0 ]]; then"
-+               " if [[ -n \"$__ebcret\" && ${#__ebcp[@]} -gt 0 ]]; then"
-                "  PS1=\"${__ebcp[0]}\";"
-                "  PROMPT_COMMAND=\"${__ebcp[1]}\";"
--               "  unset __ebcp;"
--               "  unset __ebcret;"
-+               "  unset __ebcp __ebcret;"
-                " fi;"
-                "} ; trap __ebctrap DEBUG ; function __ebcpre {"
-+               "  __ebcor=${__ebcor:-$?}; "
-                "  set +x; set +o emacs; set +o vi;"
-                "  echo \"==emacs==bash=${BASH_VERSION}==.\";"
-                "  if [[ ${#__ebcp[@]} = 0 ]]; then "
--               "    __ebcp=(\"$PS1\" \"$PROMPT_COMMAND\");"
-+               "    __ebcp=(\"$PS1\" \"$PROMPT_COMMAND\" $__ebcor);"
-                "  fi;"
-                "  PS1=" bash-completion--ps1 ";"
--               "  unset PROMPT_COMMAND;"
-+               "  unset PROMPT_COMMAND __ebcor;"
-                "  __ebcnohistory 1;"
-                "} ; { __ebcpre; %s; __ebcret $?; }\n")))
-            commandline)))
-diff --git a/test/bash-completion-integration-test.el 
b/test/bash-completion-integration-test.el
-index f57ddc7..02c24ec 100644
---- a/test/bash-completion-integration-test.el
-+++ b/test/bash-completion-integration-test.el
-@@ -926,4 +926,38 @@ $ ")))))
-    (should (equal (bash-completion_test-buffer-string)
-                   "$ dummy dummy\n--$ --\n$ dummy dummy\n--$ --\n$ "))))
- 
-+(ert-deftest bash-completion-integration-recover-status-code ()
-+  (bash-completion_test-with-shell-harness
-+   (concat ; .bashrc
-+    "function failwith { return $1; }\n"
-+    "function dummy { echo $?; }\n"
-+    "function _dummy {\n"
-+    "    COMPREPLY=( dummy )\n"
-+    "}\n"
-+    "complete -F _dummy dummy\n"
-+    "PS1='\$ '")
-+   nil
-+   ;; The first time initializes completion, the second time executes
-+   ;; an already initialized completion. The two cases behave very
-+   ;; differently, so we test both.
-+   (dotimes (i 2)
-+     (bash-completion_test-send (format "failwith %s" (+ 100 i)))
-+     (should (equal
-+              "dummy dummy "
-+              (bash-completion_test-complete "dummy dum")))
-+     (let ((start (line-beginning-position)))
-+       (comint-send-input)
-+       (bash-completion_test-wait-for-prompt start)))
-+   ;; The status code printed by the dummy function should be the one
-+   ;; from testfail, so 123, and not the one from the completion
-+   ;; command executed to do completion for the dummy function.
-+   (should (equal (bash-completion_test-buffer-string)
-+                  (concat "$ failwith 100\n"
-+                          "$ dummy dummy\n"
-+                          "100\n"
-+                          "$ failwith 101\n"
-+                          "$ dummy dummy\n"
-+                          "101\n"
-+                          "$ ")))))
-+
- ;;; bash-completion-integration-test.el ends here
diff --git a/gnu/packages/patches/emacs-bash-completion-preserve-ps1.patch 
b/gnu/packages/patches/emacs-bash-completion-preserve-ps1.patch
deleted file mode 100644
index 0320566f4c..0000000000
--- a/gnu/packages/patches/emacs-bash-completion-preserve-ps1.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From a79863f9c2080d450aa63dbda872b8ccee8ac790 Mon Sep 17 00:00:00 2001
-From: Stephane Zermatten <szerm...@gmx.net>
-Date: Fri, 25 Apr 2025 18:08:54 +0300
-Subject: [PATCH] fix: Recover PS1 before command execution.
-
-Before this change, when doing completion in the same process PS1 was
-modified to be able to detect the end of the completion command output
-and it was recovered later on from PROMPT_COMMAND, just *after*
-executing the user command, before building the next prompt.
-
-The effect was not visible, unless the user command included $PS1, so if
-you did:
-
-> echo $PS1
-
-and ran completion while editing that command, the PS1 that would be
-output would be the one from bash-completion.
-
-This change switches to another approach for recovering the prompt that
-allows recovering it before executing the user command: a DEBUG trap is
-registered which restores PS1 and PROMPT_COMMAND if the previous command
-included __ebrcet. This change also adds __ebcret after the last command
-issued by completion.
-
-This way, the last command issued by completion uses the fake prompt,
-but the command run just after that sees the real prompt in its
-variable.
-
-issue #77
----
- bash-completion.el                       | 34 +++++++++++-------------
- test/bash-completion-integration-test.el | 26 ++++++++++++++++++
- 2 files changed, 42 insertions(+), 18 deletions(-)
-
-diff --git a/bash-completion.el b/bash-completion.el
-index e3bebeb..130152f 100644
---- a/bash-completion.el
-+++ b/bash-completion.el
-@@ -1533,7 +1533,7 @@ Return the status code of the command, as a number."
-             ((not define-functions)
-              (concat
-               "if type __ebcpre &>/dev/null; then "
--              "  __ebcpre; %s; "
-+              "  __ebcpre; %s; __ebcret $?; "
-               "else "
-               "  echo ==emacs==nopre=${BASH_VERSION}==.; "
-               "  __ebcp=(\"$PS1\" \"$PROMPT_COMMAND\");"
-@@ -1548,28 +1548,26 @@ Return the status code of the command, as a number."
-                "    c=$((c+1));"
-                "  fi;"
-                "  history -d $c &>/dev/null || true;"
--               "}; function __ebcpre {"
-+               "} ; function __ebcret {"
-+               "  __ebcret=t;"
-+               "  return $1;"
-+               "} ; function __ebctrap {"
-+               " if [[ \"$__ebcret\" = \"t\" && ${#__ebcp[@]} -gt 0 ]]; then"
-+               "  PS1=\"${__ebcp[0]}\";"
-+               "  PROMPT_COMMAND=\"${__ebcp[1]}\";"
-+               "  unset __ebcp;"
-+               "  unset __ebcret;"
-+               " fi;"
-+               "} ; trap __ebctrap DEBUG ; function __ebcpre {"
-                "  set +x; set +o emacs; set +o vi;"
-                "  echo \"==emacs==bash=${BASH_VERSION}==.\";"
-                "  if [[ ${#__ebcp[@]} = 0 ]]; then "
-                "    __ebcp=(\"$PS1\" \"$PROMPT_COMMAND\");"
-                "  fi;"
--               "  PROMPT_COMMAND=" ;; set a temporary prompt
--               (bash-completion-quote
--                (concat "PS1=" bash-completion--ps1 ";"
--                        "PROMPT_COMMAND=" ;; recover prompt
--                        (bash-completion-quote
--                         (concat
--                          "__ebcr=$?;"
--                          "PS1=\"${__ebcp[0]}\";"
--                          "PROMPT_COMMAND=\"${__ebcp[1]}\";"
--                          "unset __ebcp;"
--                          "if [[ -n \"$PROMPT_COMMAND\" ]]; then"
--                          "  (exit $__ebcr); eval \"$PROMPT_COMMAND\";"
--                          "fi;"))))
--               ";"
-+               "  PS1=" bash-completion--ps1 ";"
-+               "  unset PROMPT_COMMAND;"
-                "  __ebcnohistory 1;"
--               "} && { __ebcpre; %s; }\n")))
-+               "} ; { __ebcpre; %s; __ebcret $?; }\n")))
-            commandline)))
-     (setq bash-completion--debug-info
-           (list (cons 'commandline complete-command)
-@@ -1591,7 +1589,7 @@ Return the status code of the command, as a number."
-           ;; common initialization, then retry.
-           (bash-completion-send "__ebcnohistory" process timeout 
debug-context 'define-functions)
-           (bash-completion--setup-bash-common process)
--          (funcall send-string process (concat "__ebcpre; " commandline 
";\n"))
-+          (funcall send-string process (concat "__ebcpre; " commandline "; 
__ebcret $?\n"))
-           (bash-completion--wait-for-regexp
-            "short-timeout" process "==emacs==bash=[0-9].*?==."
-            bash-completion-short-command-timeout))
-diff --git a/test/bash-completion-integration-test.el 
b/test/bash-completion-integration-test.el
-index e227165..f57ddc7 100644
---- a/test/bash-completion-integration-test.el
-+++ b/test/bash-completion-integration-test.el
-@@ -900,4 +900,30 @@ $ ")))))
-             "dummy moretestfile "
-             (bash-completion_test-complete "dummy moret")))))
- 
-+(ert-deftest bash-completion-integration-recover-status-ps1 ()
-+  (bash-completion_test-with-shell-harness
-+   (concat ; .bashrc
-+    "function dummy { echo --$PS1--; }\n"
-+    "function _dummy {\n"
-+    "    COMPREPLY=( dummy )\n"
-+    "}\n"
-+    "complete -F _dummy dummy\n"
-+    "PS1='$ '")
-+   nil
-+   ;; The first time initializes completion, the second time executes
-+   ;; an already initialized completion. The two cases behave very
-+   ;; differently, so we test both.
-+   (dotimes (i 2)
-+     (should (equal
-+              "dummy dummy "
-+              (bash-completion_test-complete "dummy dum")))
-+     (let ((start (line-beginning-position)))
-+       (comint-send-input)
-+       (bash-completion_test-wait-for-prompt start)))
-+
-+   ;; The PS1 printed by the dummy function should be the one set in
-+   ;; the init section, and not the one set by bash completion.
-+   (should (equal (bash-completion_test-buffer-string)
-+                  "$ dummy dummy\n--$ --\n$ dummy dummy\n--$ --\n$ "))))
-+
- ;;; bash-completion-integration-test.el ends here

Reply via email to