* eat.el (eat--process): Remove.
* eat.el (eat-mode): Don't make 'eat--process' buffer-local.
Use 'eat--terminal' to determine whether terminal is live.
* eat.el (eat--eshell-set-input-process): New function.
* eat.el (eat--eshell-local-mode): Don't make 'eat--process'
buffer-local. Add 'eat--eshell-set-input-process' as a advice
after 'eshell-resume-eval'.
* eat.el (eat-exec): Use the terminal parameters
'eat--process', 'eat--input-process' and 'eat--output-process'
instead of the buffer-local variable 'eat--process' store the
process object.
* eat.el (eat--sentinel): Don't set 'eat--process' to nil.
* eat.el (eat--eshell-setup-proc-and-term): Set the terminal
parameters instead of buffer-local 'eat--process'.
* eat.el (eat--pre-prompt, eat--pre-cmd, eat-kill-process, eat)
(eat--send-input, eat--trace-eshell-adjust-make-process-args)
(eat--eshell-cleanup, eat--eshell-output-filter): Get the
process from terminal parameter.
* eat.el (eat-query-before-killing-running-terminal): New user
option.
* eat.el (eat--pre-prompt): Unset process query on exit flag if
eat-query-before-killing-running-terminal is 'auto'.
* eat.el (eat--pre-cmd): Set process query on exit flag if
eat-query-before-killing-running-terminal is 'auto'.
* eat.el (eat--load-file-path, eat--being-loaded): New
variable.
* eat.el (eat-semi-char-non-bound-keys)
(eat-eshell-semi-char-non-bound-keys): Reload Eat when
customized. Document what to do if changed from Lisp.
* eat.el (eat-update-semi-char-mode-map)
(eat-eshell-update-semi-char-mode-map): New function.
* eat.el (eat-reload): New command.
* eat.texi (Semi-char Mode): Document what to do if the lists
of not bound keys are changed from Lisp.
* eat.el (eat-semi-char-non-bound-keys)
(eat-eshell-semi-char-non-bound-keys): New user option.
* eat.el (eat--prepare-semi-char-mode-map)
(eat--eshell-prepare-semi-char-mode-map): New function.
* eat.el (eat-semi-char-mode-map): Use
'eat--prepare-semi-char-mode-map' to make the keymap.
* eat.el (eat-eshell-semi-char-mode-map): Use
'eat--eshell-prepare-semi-char-mode-map' to make the keymap.
* eat.el (eat--t-repeated-insert, eat--t-write)
(eat--t-fix-partial-multi-col-char): Add 'font-lock-face' text
property along with 'face' to stop font-lock from removing the
face.
* eat.el (eat--terminfo-path): New variable.
* eat.el (eat-term-terminfo-directory): Change default value to
'PACKAGE-ROOT/terminfo/'.
* Makefile (terminfo): Don't depend on other targets. Make
directory 'terminfo'. Write terminfo to both 'e' and
'65' (hexadecimal number of ASCII 'e') directories.
* Makefile (e/eat-mono e/eat-color eat-256color e/eat-truecolor):
Remove target.
* README.org (Quelpa): Update recipe.
* eat.el (eat--t-scroll-up): Replace 'scroll-begin' with
'scroll-end' in '(< scroll-end (eat--t-disp-width disp))',
since this will always evaluate to t, and thus it was most
probably a typo.
* eat.el (eat--t-term): New slots: bold-face, faint-face,
italic-face, slow-blink-face, fast-blink-face, color-0-face,
color-faces, font-faces. Use hash table for 'params' slot.
* eat.el (eat--t-set-sgr-params): Use new slot instead using
the faces directly.
* eat.el (eat-term-parameter): Update to work with 'params'
hash table.
* eat.el (eat-term-set-parameter): Update to work with 'params'
hash table. Handle the following parameters specially:
bold-face, faint-face, italic-face, slow-blink-face,
fast-blink-face, color-0-face, color-1-face, ...,
color-255-face, font-0-face, font-1-face, ..., font-9-face.
* eat.el (eat--t-set-cwd): Decoding UTF-8 encoded strings encoded as
base64.
* eat.el (eat--t-manipulate-selection): Use 'ignore-errors'
instead of '(ignore-error ...)', since both macro expand to the
same code.
* eat.el (eat--t-set-cmd): Decoding UTF-8 encoded strings encoded as
base64. Use 'when-let*' instead of 'when' nested in 'let'.
* eat.el (eat--t-handle-output): Don't use regular expressions
while parsing plain text and CSI sequences. Remove useless
code from VT300-specific charset set sequence parser.
* eat.el (eat--eshell-adjust-make-process-args): Check whether
the process going to be run will be interactive process.
* eat.el: Declare function 'eshell-interactive-output-p'.a
* eat.el (eat--t-move-before-to-safe): Use
'previous-single-property-change' instead of
'(previous-single-char-property-change'.
* eat.el (eat--t-join-long-line): Use 'get-text-property'
instead of 'get-char-property'. Handle properly the case where
'next-single-property-change' returns nil.
* eat.el (eat--t-fix-partial-multi-col-char): Handle properly
the case where 'next-single-property-change' returns nil.
* eat.el (eat--eshell-adjust-make-process-args): Avoid
unnecessary function overrides. Overriding functions with
'cl-letf*' is not well documented, and self-overriding a
function (override a function with its own definition) may not
a nop.
* eat.el (eat-eshell-fallback-if-stty-not-available): New user
option.
* eat.el (eat--eshell-adjust-make-process-args): If 'stty' is
not available, use 'eat-eshell-fallback-if-stty-not-available'
to determine whether to continue terminal emulation or not.
* eat.el (eat--synchronize-scroll-windows): New function.
* eat.el (eat--synchronize-scroll)
(eat--eshell-synchronize-scroll): Take a single argument,
WINDOWS, list of windows to synchronize. The special value
'buffer' can also be included, to synchronize the point in
buffer.
* eat.el (eat-self-input, eat-yank, eat-yank-from-kill-ring):
Pass the return value of 'eat--synchronize-scroll-windows' to
the function in 'eat--synchronize-scroll-function'.
* eat.el (eat--process-output-queue)
(eat--adjust-process-window-size, eat--eshell-output-filter)
Call 'eat--synchronize-scroll-windows' before doing anything,
save the result, and pass it as the first argument to the
function in 'eat--synchronize-scroll-function'.
* eat.el (eat--trace-replay-eval): Pass the return value of
'get-buffer-window-list' to 'eat--synchronize-scroll'.
* eat.el (eat-yank, eat-yank-from-kill-ring): Check whether
'yank-transform-functions' is bound before using it's value.
The variable is not available in Emacs 28.