Subject: bug#64121: closed (Re: bug#64121: 28.2; C-SPC not working in term char mode)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 18 Jun 2023 06:36:02 +0000

Your bug report

#64121: 28.2; C-SPC not working in term char mode

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
64121: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64121
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#64121: 28.2; C-SPC not working in term char mode
From: Eli Zaretskii <[email-masked]>
To: Gregory Heytings <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Sun, 18 Jun 2023 09:34:59 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> Date: Sat, 17 Jun 2023 07:08:25 +0000
> From: Gregory Heytings <[email-masked]>
> cc: Al Petrofsky <[email-masked]>, [email-masked]
> 
> > Could someone else please reproduce this and review the proposed 
> > changes?  TIA.
> 
> I can reproduce this (with Emacs 29), and the proposed changes LGTM.

Thanks, installed on the master branch, and closing the bug.

Subject: 28.2; C-SPC not working in term char mode
From: Al Petrofsky <[email-masked]>
To: [email-masked]
Date: Fri, 16 Jun 2023 20:06:57 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

   emacs-28.2 -Q
   M-x term RET RET
   C-SPC

This should send an ASCII NUL (a zero byte) to the pty, but instead it
displays "Mark set" in the echo area.

To fix it, C-SPC needs to get special handling akin to the handling of
C-/.  Here's a patch that also makes C-M-SPC and C-M-/ work.

--- term.el 2022-09-06 17:31:54.000000000 -0400
+++ term-c-spc-fixed.el 2023-06-15 11:21:41.780140053 -0400
@@ -916,6 +916,9 @@
     (define-key map [next] 'term-send-next)
     (define-key map [xterm-paste] #'term--xterm-paste)
     (define-key map [?\C-/] #'term-send-C-_)
+    (define-key map [?\C- ] #'term-send-C-@)
+    (define-key map [?\C-\M-/] #'term-send-C-M-_)
+    (define-key map [?\C-\M- ] #'term-send-C-M-@)
     map)
   "Keyboard map for sending characters directly to the inferior process.")

@@ -1359,6 +1362,9 @@
 (defun term-send-del   () (interactive) (term-send-raw-string "\e[3~"))
 (defun term-send-backspace  () (interactive) (term-send-raw-string "\C-?"))
 (defun term-send-C-_  () (interactive) (term-send-raw-string "\C-_"))
+(defun term-send-C-@  () (interactive) (term-send-raw-string "\C-@"))
+(defun term-send-C-M-_  () (interactive) (term-send-raw-string "\e\C-_"))
+(defun term-send-C-M-@  () (interactive) (term-send-raw-string "\e\C-@"))

 (defun term-char-mode ()
   "Switch to char (\"raw\") sub-mode of term mode.