bug#47603: comint sets '(rear-nonsticky t) on entire prompt, disabling 'cursor-intangible
Comint sets ‘(rear-nonsticky t) on the entire detected prompt text, which prevents `cursor-intangible from functioning correctly when applied to the prompt. As Stefan put it:
I suspect the issue comes from the difference between `get-pos-property` and `get-char-property`: positions (like `point`) are not placed on a character but between two characters. But text properties only apply to characters. So the properties that are "on a position" are based on what properties would a character inherit if it where inserted at that position.
By default text properties are front-nonstick and rear-sticky, so basically a position gets its properties from the char right before it. But if you set (rear-nonsticky t), then you get no properties at all at that position.
This causes issues when "applying (rear-nonsticky t) a bit too generously, e.g. to all the chars in the prompt rather than only to the last one."
+ '(field inhibit-line-move-field-capture read-only font-lock-face))
(defun comint-send-input (&optional no-newline artificial)
"Send input to process.
After the process output mark, sends all text from the process mark to
@@ -1916,8 +1919,8 @@ comint-send-input
(unless (or no-newline comint-use-prompt-regexp)
;; Cover the terminating newline
(add-text-properties end (1+ end)
- (field inhibit-line-move-field-capture read-only)