>![]() |
Commentary: EShell is a shell implemented entirely in Emacs Lisp. It is part of emacs 21 –and can also be used under Emacs 20. This module speech-enables EShell
Play an auditory icon as you display the prompt (defun emacspeak-eshell-prompt-function () "Play auditory icon for prompt." (declare (special eshell-last-command-status)) (cond ((= 0 eshell-last-command-status) (emacspeak-serve-auditory-icon 'item)) (t (emacspeak-auditory-icon 'warn-user))))
(add-hook 'eshell-after-prompt-hook 'emacspeak-eshell-prompt-function)
Speak command output (add-hook 'eshell-post-command-hook (function (lambda nil (declare (special eshell-last-input-end eshell-last-output-end eshell-last-output-start)) (emacspeak-speak-region eshell-last-input-end eshell-last-output-end))) t)
(defadvice pcomplete-list (after emacspeak pre act ) "Provide auditory feedback." (when (interactive-p) (emacspeak-auditory-icon 'help) (emacspeak-auditory-icon 'help)))
(defadvice pcomplete (around emacspeak pre act) "Say what you completed." (cond ((interactive-p) (emacspeak-kill-buffer-carefully "*Completions*") (let ((prior (point )) (emacspeak-speak-messages nil)m) ad-do-it (when (> (point) prior) (tts-with-punctuations 'all (dtk-speak (buffer-substring prior (point))))) (let ((completions-buffer (get-buffer "*Completions*"))) (when (and completions-buffer (window-live-p (get-buffer-window completions-buffer ))) (emacspeak-auditory-icon 'help) (switch-to-buffer completions-buffer))))) (t ad-do-it)) ad-return-value)
(defadvice pcomplete-show-completions (around emacspeak pre act comp) (let ((emacspeak-speak-messages nil)) ad-do-it))
(defadvice eshell (after emacspeak pre act ) "Announce switching to shell mode. Provide an auditory icon if possible." (when (interactive-p) (emacspeak-auditory-icon 'select-object ) (emacspeak-setup-programming-mode) (emacspeak-dtk-sync) (emacspeak-speak-line)))
(loop for f in '(eshell-next-input eshell-previous-input eshell-next-matching-input eshell-previous-matching-input eshell-next-matching-input-from-input eshell-previous-matching-input-from-input) do (eval (` (defadvice (, f) (after emacspeak pre act comp) "Speak selected command." (when (interactive-p) (emacspeak-auditory-icon 'select-object) (save-excursion (beginning-of-line) (eshell-skip-prompt) (emacspeak-speak-line 1)))))))
(defgroup emacspeak-eshell nil "EShell on the Emacspeak Audio Desktop." :group 'emacspeak :group 'eshell :prefix "emacspeak-eshell-")
(defcustom emacspeak-eshell-ls-use-personalities t "Indicates if ls in eshell uses different voice personalities." :type 'boolean :group 'emacspeak-eshell)
(voice-setup-add-map '( (eshell-ls-archive voice-lighten-extra) (eshell-ls-archive-face voice-lighten-extra) (eshell-ls-backup voice-monotone-medium) (eshell-ls-backup-face voice-monotone-medium) (eshell-ls-clutter voice-smoothen-extra) (eshell-ls-clutter-face voice-smoothen-extra) (eshell-ls-directory voice-bolden) (eshell-ls-directory-face voice-bolden) (eshell-ls-executable voice-animate-extra) (eshell-ls-executable-face voice-animate-extra) (eshell-ls-missing voice-brighten) (eshell-ls-missing-face voice-brighten) (eshell-ls-product voice-lighten-medium) (eshell-ls-product-face voice-lighten-medium) (eshell-ls-readonly voice-monotone) (eshell-ls-readonly-face voice-monotone) (eshell-ls-special voice-lighten-extra) (eshell-ls-special-face voice-lighten-extra) (eshell-ls-symlink voice-smoothen) (eshell-ls-symlink-face voice-smoothen) (eshell-ls-unreadable voice-monotone-medium) (eshell-ls-unreadable-face voice-monotone-medium) (eshell-prompt voice-animate) (eshell-prompt-face voice-animate) ))
(loop for f in '(eshell-next-prompt eshell-previous-prompt eshell-forward-matching-input eshell-backward-matching-input) do (eval (` (defadvice (, f) (after emacspeak pre act comp) "Speak selected command." (when (interactive-p) (let ((emacspeak-speak-messages nil)) (emacspeak-auditory-icon 'select-object) (emacspeak-speak-line 1)))))))
(loop for f in '(eshell-insert-buffer-name eshell-insert-process eshell-insert-envvar) do (eval (` (defadvice (, f) (after emacspeak pre act comp) "Speak output." (when (interactive-p) (emacspeak-auditory-icon 'select-object) (emacspeak-speak-line))))))
(defadvice eshell-insert-process (after emacspeak pre act comp) "Speak output." (when (interactive-p) (emacspeak-auditory-icon 'select-object) (emacspeak-speak-line))) (defadvice eshell-delchar-or-maybe-eof (around emacspeak pre act) "Speak character you're deleting." (cond ((interactive-p ) (cond ((= (point) (point-max)) (message "Sending EOF to comint process")) (t (dtk-tone 500 30 'force) (and emacspeak-delete-char-speak-deleted-char (emacspeak-speak-char t)))) ad-do-it) (t ad-do-it)) ad-return-value)
(defadvice eshell-delete-backward-char (around emacspeak pre act) "Speak character you're deleting." (cond ((interactive-p ) (dtk-tone 500 30 'force) (emacspeak-speak-this-char (preceding-char )) ad-do-it) (t ad-do-it)) ad-return-value)
(defadvice eshell-show-output (after emacspeak pre act comp) "Speak output." (when (interactive-p) (let ((emacspeak-show-point t) (voice-lock-mode t)) (emacspeak-auditory-icon 'large-movement) (emacspeak-speak-region (point) (mark))))) (defadvice eshell-mark-output (after emacspeak pre act comp) "Speak output." (when (interactive-p) (let ((emacspeak-show-point t) (voice-lock-mode t)) (emacspeak-auditory-icon 'mark-object) (emacspeak-speak-line)))) (defadvice eshell-kill-output (after emacspeak pre act comp) "Produce auditory feedback." (when (interactive-p) (emacspeak-auditory-icon 'delete-object) (message "Flushed output")))
(defadvice eshell-kill-input (before emacspeak pre act ) "Provide spoken feedback." (when (interactive-p) (emacspeak-auditory-icon 'delete-object ) (emacspeak-speak-line)))
(defadvice eshell-toggle (after emacspeak pre act comp) "Provide spoken context feedback." (when (interactive-p) (cond ((eq major-mode 'eshell-mode) (emacspeak-setup-programming-mode) (emacspeak-speak-line)) (t (emacspeak-speak-mode-line))) (emacspeak-auditory-icon 'select-object))) (defadvice eshell-toggle-cd (after emacspeak pre act comp) "Provide spoken context feedback." (when (interactive-p) (cond ((eq major-mode 'eshell-mode) (emacspeak-speak-line)) (t (emacspeak-speak-mode-line))) (emacspeak-auditory-icon 'select-object)))
(provide 'emacspeak-eshell)
local variables: folded-file: t byte-compile-dynamic: t
Automatically generated documentation for options defined in module emacspeak-eshell. These options are customizable via Emacs' Custom interface.