From b6caebb0abb6220950ec26c0edd39be2be7c9f12 Mon Sep 17 00:00:00 2001 From: Akib Azmain Turja Date: Sat, 10 Dec 2022 17:43:47 +0600 Subject: [PATCH] ; Release 0.2 * eat.el: * eat.texi: Bump version. * ChangeLog: Update with new entries. --- ChangeLog | 410 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ eat.el | 2 +- eat.texi | 6 +- 3 files changed, 414 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 927d830..250f903 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,413 @@ +2022-12-10 Akib Azmain Turja + + Fix yanking text into terminal + + * eat.el (eat-yank): Use simpler, saner and better approach to get the + yanked string instead of the previous stupid, insane and buggy + approach. + * eat.el (eat-yank-pop): Remove, because it's not cancel the text + already sent to the terminal. + * eat.el (eat-yank-from-kill-ring): New function. Behaves essentially + the same the previous (not properly working) 'eat-yank-pop'. + * eat.el (eat-semi-char-mode-map, eat-eshell-semi-char-mode-map): + Replace 'eat-yank-pop' with 'eat-yank-from-kill-ring'. + +2022-12-10 Akib Azmain Turja + + Implement terminal parameters + + * eat.el (eat--t-term): New slot: 'params'. + * eat.el (eat-term-parameter): New function and generalized + variable. + * eat.el (eat-set-term-parameter): New function. + +2022-12-09 Akib Azmain Turja + + Fix terminal color reporting in text terminals + + * eat.el (eat--t-report-foreground-color): Fix foreground color + reporting in text terminals. + * eat.el (eat--t-report-background-color): Fix background color + reporting in text terminals. + +2022-12-08 Akib Azmain Turja + + Break combined 'setq'/'setf'/'setq-local's + + When giving more than two arguments to 'setq', it becomes hard + to figure out what is assigned to what. As the number of + argument increases, the readablity of code decreases. This is + also true for 'setq-local'. For 'setf', the problem is even + greater, unlike 'setq', all arguments to 'setf' look the same. + + * eat.el (eat--t-reset, eat--t-write, eat--t-save-cur) + (eat--t-restore-cur, eat--t-enable-alt-disp) + (eat--t-disable-alt-disp, eat--t-change-scroll-region) + (eat--t-set-sgr-params, eat--t-manipulate-selection) + (eat--t-resize, eat--blink-start-timers, eat-blink-mode) + (eat--cursor-blink-mode, eat--set-cursor, eat-self-input) + (eat-mode, eat-exec, eat--eshell-setup-proc-and-term) + (eat--eshell-cleanup, eat--eshell-adjust-make-process-args) + (eat--eshell-local-mode, eat--eshell-exec-visual) + (eat--trace-exec, eat--trace-eshell-adjust-make-process-args) + (eat--trace-replay-eval, eat-trace-replay, eat-trace--cleanup): + Break combined 'setq'/'setf'/'setq-local's. + +2022-12-08 Akib Azmain Turja + + Don't 'cd' as root when using 'sudo' from Tramp + + * eat.el (eat--eshell-setup-proc-and-term): Don't set + 'eat--eshell-invocation-directory'. + * eat.el (eat--eshell-update-cwd): New function. + * eat.el (eat--eshell-local-mode): Call + 'eat--eshell-update-cwd' when enabling the mode and add it to + 'eshell-directory-change-hook' to keep track of Eshell's + working directory. + +2022-12-08 Akib Azmain Turja + + Fix prompt annotation bug trigger when shell exits + + * eat.el (eat--correct-shell-prompt-mark-overlays): Make sure + 'eat--terminal' is non-nil. + * eat.el (eat--sentinel): Cancel timers, correct shell prompt + annotations for the final time, reset shell prompt annotation + related local variables. + +2022-12-07 Akib Azmain Turja + + Synchronize scrolling only when point is on cursor + + * eat.el (eat--adjust-process-window-size): Synchronize + scrolling only when point is on cursor. + +2022-12-07 Akib Azmain Turja + + Escape control characters in trace output + + * eat.el (eat--trace-log): Escape control + characters (codepoints from 0 to 31) in trace output. + +2022-12-07 Akib Azmain Turja + + Auto update 'eat-term-shell-integration-directory' + + * eat.el: Auto update 'eat-term-shell-integration-directory' if + not modified. + +2022-12-07 Akib Azmain Turja + + Move Bash global variables to function + + * integration/bash (__eat_current_command, __eat_exit_status) + (__eat_inhibit_preexec): Move to '__eat_enable_integration'. + * integration/bash (__eat_prompt_start, __eat_prompt_end) + (__eat_continuation_start, __eat_continuation_end): Move to + '__eat_enable_integration' and make local there. + +2022-12-07 Akib Azmain Turja + + Document annotation correction delay user option + + * eat.texi (Performance Tuning): Document the purpose and the + use of 'eat-shell-prompt-annotation-correction-delay' user + option. + +2022-12-07 Akib Azmain Turja + + Don't accept 'nil' as annotation correction delay + + * eat.el (eat-shell-prompt-annotation-correction-delay): Don't + accept 'nil'. + * eat.el (eat--process-output-queue): Don't accept value 'nil' + for 'eat-shell-prompt-annotation-correction-delay'. + +2022-12-07 Akib Azmain Turja + + Rename some symbols to reflect their purposes + + * eat.el (eat-shell-prompt-annotation-delay): Rename to + 'eat-shell-prompt-annotation-correction-delay'. + * eat.el (eat--update-shell-prompt-mark-overlays): Rename to + 'eat--correct-shell-prompt-mark-overlays'. + * eat.el (eat--shell-prompt-annotation-update-timer): Rename to + 'eat--shell-prompt-annotation-correction-timer'. + * eat.el (eat-mode, eat--process-output-queue, eat--filter): + Update references to renamed symbols. + +2022-12-07 Akib Azmain Turja + + * README.org: Add shell integration instructions + + * eat-tests.el (eat-test-set-cwd): Update test + + * eat.el (eat--t-term): Fix initial value of 'cwd' + +2022-12-06 Akib Azmain Turja + + Document everything about shell integration + + * eat.texi (Shell Integration): Move to be the first chapter of + Part III. Document everything about shell integration. + * eat.texi (Directory Tracking): Merge with the node 'Shell + Integration'. + +2022-12-06 Akib Azmain Turja + + Fix prompt navigation when annotation is disabled + + * eat.el (eat--pre-prompt): Always set + 'eat--shell-prompt-begin'. + * eat.el (eat--post-prompt): Always put special prompt end + marking text property. + +2022-12-06 Akib Azmain Turja + + Add shell prompt navigation commands + + * eat.el (eat--post-prompt): Add special text property on the + last character of shell prompt. + * eat.el (eat-previous-shell-prompt, eat-next-shell-prompt): + New command. + * eat.el (eat-mode-map): Bind 'eat-previous-shell-prompt' and + 'eat-next-shell-prompt' to 'C-c C-p' and 'C-c C-n' + respectively. + +2022-12-06 Akib Azmain Turja + + Annotate shell prompts + + * eat.el (eat-enable-shell-prompt-annotation) + (eat-shell-prompt-annotation-position) + (eat-shell-prompt-annotation-running-margin-indicator) + (eat-shell-prompt-annotation-success-margin-indicator) + (eat-shell-prompt-annotation-failure-margin-indicator) + (eat-shell-prompt-annotation-delay): New user option. + * eat.el (eat-shell-prompt-annotation-running) + (eat-shell-prompt-annotation-success) + (eat-shell-prompt-annotation-failure): New face. + * eat.el (eat--shell-command-status, eat--shell-prompt-begin) + (eat--shell-prompt-mark, eat--shell-prompt-mark-overlays): New + variable. + * eat.el (eat--pre-prompt, eat--post-prompt) + (eat--update-shell-prompt-mark-overlays, eat--pre-cmd) + (eat--set-cmd-status): New function. + * eat.el (eat-mode): Make 'eat--shell-command-status', + 'eat--shell-prompt-begin', 'eat--shell-prompt-mark', + 'eat--shell-prompt-mark-overlays' and + 'eat--shell-prompt-annotation-update-timer' local. Set margin + width if shell prompt annotation is enabled. + * eat.el (eat--shell-prompt-annotation-update-timer): New + variable. + * eat.el (eat--process-output-queue): Call or schedule + 'eat--update-shell-prompt-mark-overlays' call. + * eat.el (eat--filter): Cancel timer + 'eat--shell-prompt-annotation-update-timer'. + * eat.el (eat-exec): Set prompt start & end and command start & + end functions. + +2022-12-06 Akib Azmain Turja + + Add shell commands run in Eat to Emacs history + + * eat.el (eat-enable-shell-command-history): New user option. + * eat.el (eat--set-cmd): New function. + * eat.el (eat-exec, eat--eshell-setup-proc-and-term): Call + 'eat--set-cmd' when the shell reports the command being run. + +2022-12-06 Akib Azmain Turja + + Tighter shell integration + + * eat.el (eat--t-term): New slots: 'prompt-start-fn', + 'prompt-end-fn', 'cont-prompt-start-fn', 'cont-prompt-end-fn', + 'set-cmd-fn', 'cmd-start-fn', 'cmd-finish-fn' + * eat.el (eat--t-set-cwd): Accept three arguments in two + different formats. + * eat.el (eat--t-prompt-start, eat--t-prompt-end) + (eat--t-cont-prompt-start, eat--t-cont-prompt-end) + (eat--t-set-cmd, eat--t-cmd-start, eat--t-cmd-finish): New + function. + * eat.el (eat--t-handle-output): Accept Eat's own + OSC 51 ; e ; ... ST sequences. + * eat.el (eat-term-prompt-start-function) + (eat-term-prompt-end-function) + (eat-term-continuation-prompt-start-function) + (eat-term-continuation-prompt-end-function) + (eat-term-set-cmd-function, eat-term-cmd-start-function) + (eat-term-cmd-finish-function): New generalized variable. + * integration/bash (__eat_current_command, __eat_exit_status): + New variable. + * integration/bash (__eat_prompt_command): Send exit status of + last command, if applicable. Use Eat specific sequence to + report working directory. Set title. + * integration/bash (__eat_preexec): Report current command and + execution start. + * integration/bash (__eat_before_prompt_command): Set + '__eat_exit_status' to the exit status of the last command. + * integration/bash (__eat_prompt_start, __eat_prompt_end) + (__eat_continuation_start, __eat_continuation_end): New + variable, used as constant only to make the code more readable. + * integration/bash (__eat_enable_integration): Wrap 'PS1' and + 'PS2'. Don't set title from 'PS1'. + +2022-12-04 Akib Azmain Turja + + Calculate the number of lines on window properly + + * eat.el (eat-exec, eat--eshell-setup-proc-and-term) + (eat--eshell-adjust-make-process-args) + (eat--eshell-synchronize-scroll): Calculate the number of + available lines on window properly. + +2022-12-04 Akib Azmain Turja + + Remap 'insert-char' to read and input a character + + * eat.el (eat-input-char): New function. + * eat.el (eat-semi-char-mode-map) + (eat-eshell-semi-char-mode-map): Remap 'insert-char' to + 'eat-input-char'. + +2022-12-04 Akib Azmain Turja + + Use full command as title in shell integration + + * integration/bash (__eat_in_prompt_command): Rename to + '__eat_inhibit_preexec'. + * integration/bash (__eat_before_exec): Inhibit further + '__eat_preexec' calls until next prompt. + * integration/bash (__eat_preexec): Use 'history' to get the + real command typed by the user. + +2022-12-04 Akib Azmain Turja + + Fix Bash integration + + * integration/bash (__eat_enable_integration): Fix moving + 'PROMPT_COMMAND' array elements. + +2022-12-04 Akib Azmain Turja + + * eat.el: Fix bright faces face definitions + +2022-12-04 Akib Azmain Turja + + Refactor shell integration enabling code + + * integration/bash (__eat_enable_integration): New function. + * integration/bash: Move enabling code to dedicated function. + +2022-12-04 Akib Azmain Turja + + Update title automatically in shell integration + + * integration/bash (__eat_prompt_command): Remove extra '\'s. + * integration/bash (__eat_in_prompt_command): New variable. + * integration/bash (__eat_preexec, __eat_before_prompt_command) + (__eat_after_prompt_command, __eat_before_exec): New function. + * integration/bash: Modify PS1 to update terminal title when + displaying prompt. Add '__eat_before_exec' as 'DEBUG' trap + handler to update terminal title just before executing a + command. Prepend and append '__eat_before_prompt_command' and + '__eat_after_prompt_command' to 'PROMPT_COMMAND' to avoid + getting trapped in 'DEBUG' trap. + +2022-12-04 Akib Azmain Turja + + * README.org (Quelpa): Update recipe. + + * term/eat.el: New file. + +2022-12-04 Akib Azmain Turja + + Refer to NonGNU ELPA in README + + * README.org (NonGNU ELPA Devel): Rename to NonGNU ELPA. + Change the code-snippet to use NonGNU ELPA (stable). + +2022-12-03 Akib Azmain Turja + + * integration/bash: Add copyright notice. + + * integration/bash: Use '__' prefix + + * integration/bash: Append to array more cleanly + + * integration/bash: Don't setup again on reload + +2022-12-03 Akib Azmain Turja + + Use more uniform names for tracer functions + + * eat.el: Rename 'eat--eshell-trace-...' symbols to + 'eat--trace-eshell-...'. + +2022-12-03 Akib Azmain Turja + + Add shell integration script for GNU Bash + + * integration/bash: New file. + * eat.el (eat-term-shell-integration-directory): New variable. + Contains path to the directory containing the scripts, + automatically updated when Eat is updated. + * eat.el (eat-exec, eat-eshell-mode): New enviroment variable + 'EAT_SHELL_INTEGRATION_DIR'. + * eat.texi (Shell Integration): New chapter. + * eat.texi (Directory Tracking): Refer to 'Shell Integration'. + +2022-12-01 Akib Azmain Turja + + Check terminal contents while testing bell + + * eat-tests.el (eat-test-character-sets): Check terminal + contents. + +2022-12-01 Akib Azmain Turja + + Refer to Info manual to setup directory tracking + + * eat.el (eat-enable-directory-tracking): Refer to Info manual. + +2022-12-01 Akib Azmain Turja + + Support directory tracking with OSC 7 + + * 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. + +2022-11-30 Akib Azmain Turja + + Fix byte-compilation warnings on Emacs 28 + + * 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. + +2022-11-30 Akib Azmain Turja + + * eat.el: Use loop to define color and font faces + 2022-11-30 Akib Azmain Turja Document eat-eshell-visual-command-mode in manual diff --git a/eat.el b/eat.el index 6d935b0..2953aeb 100644 --- a/eat.el +++ b/eat.el @@ -4,7 +4,7 @@ ;; Author: Akib Azmain Turja ;; Created: 2022-08-15 -;; Version: 0.1.1 +;; Version: 0.2 ;; Package-Requires: ((emacs "28.1")) ;; Keywords: terminals processes ;; Homepage: https://codeberg.org/akib/emacs-eat diff --git a/eat.texi b/eat.texi index 9c16407..b8d2c94 100644 --- a/eat.texi +++ b/eat.texi @@ -2,9 +2,9 @@ @comment %**start of header @setfilename eat.info -@set UPDATED 30 November 2022 -@set EDITION 0.1.1 -@set VERSION 0.1.1 +@set UPDATED 10 December 2022 +@set EDITION 0.2 +@set VERSION 0.2 @documentencoding UTF-8 @codequotebacktick on @codequoteundirected on