[Homeros] Emacspeak glitches
Дмитрий Падучих
dpaduch на k66.ru
Вт Май 17 11:36:49 UTC 2011
Michael Pozhidaev:
MP> Дима, работает!!! Упакечиваем и будем тестировать. От стандартного
MP> поведения слегка отличается тем, что читает вывод даже если он
MP> отображается в буфере "Shell command output".
Именно туда результат и выводится за исключением C-u M-! и C-u M-|. Патч
в конце письма, включая и shell-command-on-region. Мне, правда, звук
task-done не очень нравится в данном случае - слишком он шумный - но
ничего больше подходящего по _смыслу_ вроде бы нет. Поэтому я у себя
сделал
cp button.au ok.au
и использовал новый системный звук ok.
MP> Твой e-mail пироги и блины принимает?
В смысле сочинение с художественным описанием пирогов и блинов? Давай,
мне будет интересно.)
diff --git a/lisp/emacspeak-advice.el b/lisp/emacspeak-advice.el
index 7fcb653..c0c2f0d 100644
--- a/lisp/emacspeak-advice.el
+++ b/lisp/emacspeak-advice.el
@@ -874,6 +874,47 @@ Produce an auditory icon if possible."
(emacspeak-auditory-icon 'button))
;;}}}
+;;{{{ shell-command:
+
+(defun emacspeak-speak-shell-command-output (&optional output)
+ (emacspeak-auditory-icon 'task-done)
+ (cond
+ ((or (stringp output) (bufferp output)) nil)
+ ((not output)
+ (let ((buffer (get-buffer "*Shell Command Output*")))
+ (when buffer
+ (with-current-buffer buffer
+ (if (= (point-min) (point-max))
+ (dtk-speak emacspeak-last-message)
+ (emacspeak-speak-region (point-min) (min (point-max) 8192))
+ (when (> (point-max) 8192)
+ (emacspeak-queue-auditory-icon 'ellipses)))))))
+ (:else
+ (if (= (point) (mark 'force))
+ (dtk-speak "Empty output")
+ (emacspeak-speak-region (point) (min (mark 'force) (+ (point) 8192)))
+ (when (> (mark 'force) (+ (point) 8192))
+ (emacspeak-queue-auditory-icon 'ellipses))))))
+
+(defadvice shell-command (around emacspeak activate)
+ (let ((emacspeak-speak-messages nil))
+ ad-do-it)
+ (when (called-interactively-p 'interactive)
+ (emacspeak-speak-shell-command-output (ad-get-arg 1))))
+
+(defadvice shell-command-on-region (around emacspeak activate)
+ (let ((emacspeak-speak-messages nil))
+ ad-do-it)
+ (when (called-interactively-p 'interactive)
+ (emacspeak-speak-shell-command-output (ad-get-arg 3))))
+
+(defadvice dired-do-shell-command (around emacspeak activate)
+ (let ((emacspeak-speak-messages nil))
+ ad-do-it)
+ (when (called-interactively-p 'interactive)
+ (emacspeak-speak-shell-command-output)))
+
+;;}}}
;;{{{ Advice comint:
(defadvice comint-magic-space (around emacspeak pre act)
@@ -927,7 +968,7 @@ Produce an auditory icon if possible."
(add-hook 'shell-mode-hook 'emacspeak-pronounce-refresh-pronunciations)
(loop for f in
- '(shell-command shell-dirstack-message)
+ '(shell-dirstack-message)
do
(eval
`(defadvice ,f (around emacspeak pre act comp)
--
Дмитрий Падучих
Подробная информация о списке рассылки Homeros