[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Search]

Configuring VM for optimal spoken feedback under Emacspeak



>>>>> "Jason" == Jason White <jasonw@xxxxxxxxxxx> writes:

    Jason> A search of the mailing list archives revealed
    Jason> very little discussion of this topic, though
    Jason> perhaps I somehow missed it.
I'll append my vm setup to the end of this message, steal
     portions of it as you see fit.
    Jason> I am trying to configure vm 6.61 to work
    Jason> effectively with Emacspeak 9.0. Firstly, I set
    Jason> vm-inhibit-startup-message, in an effort to
    Jason> prevent vm from displaying, and Emacspeak from
    Jason> reading, this startup information. Unfortunately,
    Jason> Emacspeak still reads the startup message,
I dont see this-- see what happens after you install my
     personal config 
    Jason> inconveniently while I am already browsing
    Jason> mail. This is a minor problem, however.

    Jason> Secondly, I noticed that after having pressed
    Jason> space to display the content of a message, and
    Jason> again to move to the second page, Emacspeak
    Jason> actually re-reads a large portion of the first
    Jason> page of the message. There is often considerable

Probably due to two reasons --the default vm setup splits 
the window to show a folder summary and the message itself.
Secondly, I think I always hit C-v (scroll-up) 
rather than space bar  (which runs vm-scroll-forward)
see if hitting C-v gives the right feedback.

Also, note that hitting 'j' in a vm mail buffer will hide
cited portions of a message
so typically I hit "j" and then "'" (that is a single quote)
to read the message in its entirety at one shot.
(note: hiding blocks hits an error sometimes due to a bug in
emacs  --fixed this by working around the bug after
releasing 9.0).
    Jason> overlap when scrolling. I tried setting
    Jason> vm-mutable-windows to nil, thereby preventing the
    Jason> message from being displayed in a separate
    Jason> window. This helped a little, as point is now
    Jason> placed at the start of the message body, once the
    Jason> content is displayed. However, this is not an
    Jason> optimal solution; I would rather correct the
    Jason> scrolling problem and have Emacspeak read the
    Jason> message without the overlap.

    Jason> Third problem: when I cycle voice lock mode off
    Jason> and then back on while reading a message in vm,
    Jason> in an attempt to make the audio highlighting work
The backtrace would help here.
    Jason> better, Emacspeak sometimes returns an
    Jason> error. When this happens again, I will set
    Jason> debug-on-error and report the problem more fully.

Here is my vm setup.
Clone it only after you understand what it does so you dont
get any rude surprizes.

;;; Prepare the VM mail reader:
;;;
;;; Mon Apr 25 12:13:26 EDT 1994
;;;
;;{{{  install vm 

;;; Augment load path:
(augment-load-path "vm")
(global-set-key "\M-\C-v" 'vm-visit-folder)
;;; Include the VM mail reader. You can use it by using M-C-m to read
;;; mail from ~/mbox or M-C-v to visit an existing folder in your ~/Mail
;;; directory. 
    
(require 'vm)

;;}}}
;;{{{ customize behavior
(setq vm-index-file-suffix ".idx")
(setq vm-primary-inbox "~/mbox");; Default UNIX location.
(setq vm-keep-sent-messages 5)
(setq vm-folder-directory "~/Mail/");; Default location
;; for mail folders.
(setq vm-forwarding-subject-format
      "[%s]")
(setq vm-startup-with-summary nil);; do not Show headers by default.
(setq vm-mail-window-percentage 50);; Split 50/50.
(setq vm-inhibit-startup-message t);; No junk, please.
(setq vm-preview-lines nil);; Show everything.
(setq vm-visible-headers 
      '("From:" "To:" "Subject:" "Date:" "Cc:"
        ))
(setq vm-group-by 'sort)
(setq vm-delete-after-saving t)
(setq vm-url-browser 'w3-fetch)
(setq vm-circular-folders nil)
(setq vm-confirm-new-folders t)
(setq vm-move-after-deleting nil)
(setq vm-group-by "subject")
(setq vm-keep-sent-messages 5)

;;}}}
;;{{{ customize my keymap for emacspeak
(and (featurep 'emacspeak)
     (define-key vm-mode-map '[delete]
       'dtk-toggle-punctuation-mode))
(global-set-key "\C-xm" 'vm-mail)
(define-key vm-mode-map "\M-\C-m" 'widget-button-press)
;;}}}
;;{{{ mime in vm 
(setq vm-auto-decode-mime-messages t)
(setq vm-auto-displayed-mime-content-type-exceptions '("text/html"))
(setq vm-mime-type-converter-alist
      '(
        ("application/pdf"	"text/plain"	"show-text -o plain -f -")
        ("application/msword"	"text/plain"	"catdoc -t - ")))

(setq  vm-mime-attachment-save-directory
       (expand-file-name "~/Mail/adobe/attachments/"))

(setq vm-mime-base64-encoder-program
      (expand-file-name "~/bin/base64-encode"))
(setq vm-mime-base64-decoder-program
      (expand-file-name "~/bin/base64-decode"))

(setq vm-mime-attachment-auto-type-alist
      (append vm-mime-attachment-auto-type-alist
              '(("\.pdf"
                 . "Application/pdf")))vm-mime-attachment-auto-type-alist)

;;}}}
;;{{{ frames
(setq vm-frame-per-folder nil
      vm-frame-per-composition nil
      vm-frame-per-edit nil
      vm-frame-per-help nil
      vm-frame-per-summary nil)

;;}}}
;;{{{ button motion
(defun vm-next-button (n)
  "Move point to N buttons forward.
If N is negative, move backward instead."
  (interactive "p")
  (let ((function (if (< n 0) 'previous-single-property-change
		    'next-single-property-change))
	(inhibit-point-motion-hooks t)
	(backward (< n 0))
	(limit (if (< n 0) (point-min) (point-max))))
    (setq n (abs n))
    (while (and (not (= limit (point)))
		(> n 0))
      ;; Skip past the current button.
      (when (get-text-property (point) 'w3-hyperlink-info)
	(goto-char (funcall function (point) 'w3-hyperlink-info nil limit)))
      ;; Go to the next (or previous) button.
      (goto-char (funcall function (point) 'w3-hyperlink-info nil limit))
      ;; Put point at the start of the button.
      (when (and backward (not (get-text-property (point) 'w3-hyperlink-info)))
	(goto-char (funcall function (point) 'w3-hyperlink-info nil limit)))
      ;; Skip past intangible buttons.
      (when (get-text-property (point) 'intangible)
	(incf n))
      (decf n))
    (unless (zerop n)
      (message  "No more buttons"))
    n))

(define-key vm-mode-map "\M-\t" 'vm-next-button)
 ;;}}}
(add-hook 'vm-quit-hook 'vm-expunge-folder)

    Jason> Regards,

    Jason> Jason.

    Jason> -----------------------------------------------------------------------------
    Jason> To unsubscribe or change your address send mail
    Jason> to "emacspeak-request@xxxxxxxxxxx" with a
    Jason> subject of "unsubscribe" or "help"

-- 
Best Regards,
--raman

      Adobe Systems                 Tel: 1 408 536 3945   (W14-128)
      Advanced Technology Group     Fax: 1 408 537 4042 
      W14-128 345 Park Avenue     Email: raman@xxxxxxxxxxx 
      San Jose , CA 95110 -2704     Email:  raman@xxxxxxxxxxx
      http://labrador.corp.adobe.com/~raman/        (Adobe Intranet)
      http://cs.cornell.edu/home/raman/raman.html    (Cornell)
----------------------------------------------------------------------
    Disclaimer: The opinions expressed are my own and in no way should be taken
as representative of my employer, Adobe Systems Inc.
____________________________________________________________

-----------------------------------------------------------------------------
       To unsubscribe or change your address send mail to
"emacspeak-request@xxxxxxxxxxx" with a subject of "unsubscribe" or "help"


Emacspeak Files | Subscribe | Unsubscribe