* bug#73527: 30.0.90; Comint rebinds C-d
@ 2024-09-28 10:48 Augusto Stoffel
2024-09-29 16:08 ` Juri Linkov
0 siblings, 1 reply; 3+ messages in thread
From: Augusto Stoffel @ 2024-09-28 10:48 UTC (permalink / raw)
To: 73527
comint-mode rebinds C-d (to `comint-delchar-or-maybe-eof') in a way that
is supposed to fall back to the default C-d behavior unless point is on
a blank input line.
If the user rebinds C-d in the global map, e.g. to something sensible
such as `delete-forward-char', this preference is overridden.
Should a menu-item with :filter property be used instead in
comint-mode-map?
^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#73527: 30.0.90; Comint rebinds C-d
2024-09-28 10:48 bug#73527: 30.0.90; Comint rebinds C-d Augusto Stoffel
@ 2024-09-29 16:08 ` Juri Linkov
2024-10-05 14:32 ` Augusto Stoffel
0 siblings, 1 reply; 3+ messages in thread
From: Juri Linkov @ 2024-09-29 16:08 UTC (permalink / raw)
To: Augusto Stoffel; +Cc: 73527
> comint-mode rebinds C-d (to `comint-delchar-or-maybe-eof') in a way that
> is supposed to fall back to the default C-d behavior unless point is on
> a blank input line.
>
> If the user rebinds C-d in the global map, e.g. to something sensible
> such as `delete-forward-char', this preference is overridden.
>
> Should a menu-item with :filter property be used instead in
> comint-mode-map?
It would be nice to make such filter customizable.
For example, currently I have to use:
(define-key shell-mode-map "\C-d" 'my-shell-c-d)
(defun my-shell-c-d (&optional arg)
(interactive "p")
(cond ((and (eobp)
(save-excursion
(let ((inhibit-field-text-motion t))
(goto-char (line-beginning-position))
(looking-at-p "^iex.*>\s*$"))))
(let ((process (get-buffer-process (current-buffer))))
(process-send-string process ":init.stop()\n")))
((and (eobp)
(save-excursion
(let ((inhibit-field-text-motion t))
(goto-char (line-beginning-position))
(looking-at-p "^[a-z:]*cljs\\..*=>\s*$"))))
(let ((process (get-buffer-process (current-buffer))))
(process-send-string process ":cljs/quit\n")))
(t
(comint-delchar-or-maybe-eof arg))))
But with a filter all these cases could be moved to the filter predicate,
along with its default value extracted from 'comint-delchar-or-maybe-eof':
(if (and (eobp) proc (= (point) (marker-position (process-mark proc))))
(comint-send-eof)
(delete-char arg))
Then rebinding `C-d' from `delete-char' to `delete-forward-char'
will be handled automatically.
Also for the users of `delete-selection-mode' this will remove
the need to add more settings:
(put 'comint-delchar-or-maybe-eof 'delete-selection 'supersede)
(put 'my-shell-c-d 'delete-selection 'supersede)
according to this part of delsel.el:
;; delete-backward-char and delete-forward-char already delete the selection by
;; default, but not delete-char.
(put 'delete-char 'delete-selection 'supersede)
^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#73527: 30.0.90; Comint rebinds C-d
2024-09-29 16:08 ` Juri Linkov
@ 2024-10-05 14:32 ` Augusto Stoffel
0 siblings, 0 replies; 3+ messages in thread
From: Augusto Stoffel @ 2024-10-05 14:32 UTC (permalink / raw)
To: Juri Linkov; +Cc: 73527
On Sun, 29 Sep 2024 at 19:08, Juri Linkov wrote:
> It would be nice to make such filter customizable.
>
> For example, currently I have to use:
>
> (define-key shell-mode-map "\C-d" 'my-shell-c-d)
> (defun my-shell-c-d (&optional arg)
> [...]
Good point. How about replacing (delete-char arg) in
comint-delchar-or-maybe-eof with
(call-interactively
(lookup-key global-map <something appropriate>))
Not sure this could be made to work reliably.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-10-05 14:32 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-28 10:48 bug#73527: 30.0.90; Comint rebinds C-d Augusto Stoffel
2024-09-29 16:08 ` Juri Linkov
2024-10-05 14:32 ` Augusto Stoffel
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).