* eat.el: Require 'url'.
* eat.el (eat-enable-directory-tracking): New user option.
* eat.el (eat--t-term): New slots: 'cwd' and 'set-cwd-fn'.
* eat.el (eat--t-set-cwd, eat-term-cwd): New function.
* eat.el (eat-term-set-cwd-function): New function and
generalized variable.
* eat.el (eat--t-handle-output): Handle OSC 7.
* eat.el (eat--set-cwd): New function.
* eat.el (eat-exec): Use 'eat--set-cwd' to change current
working directory.
* eat.el (eat--eshell-invocation-directory): New variable,
local in Eshell buffers when 'eat-eshell-mode' is enabled.
* eat.el (eat--eshell-setup-proc-and-term): Save the invocation
directory of process.
* eat.el (eat--eshell-cleanup): Revert working directory to
invocation directory.
* eat.el (eat--eshell-local-mode): When enabling, make
'eat--eshell-invocation-directory' local variable and kill when
disabling.
* eat-tests.el (eat-test-set-cwd): New test.
* eat.texi (Directory Tracking): New chapter.
* eat.el (eat-term-input-event): Fix byte-compilation warnings
on Emacs 28, caused by calling 'posn-col-row' with two
arguments on Emacs >= 29, which is not available on Emacs 28.
* eat.el: Require 'subr-x'.
* eat.el (eat-yank, eat-yank-pop): Pass three arguments to
'mapconcat'.
* eat.el (eat--eshell-term-name): New function.
* eat.el (eat-eshell-mode): Use 'eat--eshell-term-name' instead
of using 'eat-term-name' directly.
* eat.el (eat-eshell-mode) [(< emacs-major-version 29)]: Use
'eshell-last-async-proc' instead of 'eshell-last-async-procs'.
* eat.el (eat--eshell-adjust-make-process-args)
[(< emacs-major-version 29)]: Don't check and set ':filter' and
':sentinel' of 'make-process' argument plist. Set process
filter and sentinel from 'eshell-exec-hook'.
* eat.el (eat--eshell-adjust-make-process-args): Call
'eat--eshell-setup-proc-and-term' from 'eshell-exec-hook', not
just after 'make-process'.
* eat.el (eat-blink-mode, eat--cursor-blink-mode, eat-mode)
(eat--eshell-local-mode, eat-trace-replay-mode): Use 'mapc' to
make & kill multiple local variables.
* eat.el (eat--eshell-adjust-make-process-args): Use (setf (plist-get
...) ...) instead of 'plist-put' without taking the result, which is
not guaranteed to always work.
* eat.el (eat--t-set-sgr-params): Use 'and-let*' instead of 'when-let'
for side-effect free 'when-let'.
* eat.el (eat--flip-cursor-blink-state, eat--synchronize-scroll)
(eat-exec, eat--eshell-setup-proc-and-term)
(eat--eshell-synchronize-scroll, eat--eshell-visual-sentinel)
(eat--trace-replay-eval-next): Use 'when-let*' instead of 'when-let'
for 'when-let's with side-effect.
* eat.el (eat--t-dec-line-drawing-chars): New constant
containing the hash table.
* eat.el (eat--t-write): Use hash-table instead alist while
converting from DEC Line Drawing charset.
* eat.el (eat--t-eol, eat--t-reset, eat--t-erase-in-disp)
(eat--t-disable-alt-disp, eat--t-resize, eat-term-redisplay)
(eat-term-input-event, eat--adjust-process-window-size): Use
'let' instead of 'let*' wherever possible.
* eat.el (eat--eshell-exec-visual): Use (VAR nil) form instead
of VAR form in 'let*' variable list.
* eat.el (eat-term-input-event): Use USE-WINDOW argument of
'posn-col-row' to support text scaling properly, but only on
Emacs >= 29 since on Emacs 28 'posn-col-row' takes only one
argument.