I've done a bit more to add some of the functionality of emacspeak-table-ui into browsing org-mode tables. One can now read row and column headers using, e.g. "ctrl-e b" for both (keystrokes copied from emacspeak-table-ui). One catch at the moment is that the command to move up through a column requires a new function in org-table. I've asked for that to be added but I include it here for people who can and wish to install it locally. A few things still to do on automated reading of headers but I already find this useful. cheers Peter ---------------------------------------------------------------------- git diff origin -- emacspeak-org.el diff --git a/lisp/emacspeak-org.el b/lisp/emacspeak-org.el index 8a7d834..0b78d49 100644 --- a/lisp/emacspeak-org.el +++ b/lisp/emacspeak-org.el @@ -172,7 +172,7 @@ (emacspeak-org-table-speak-current-element)) (t (emacspeak-speak-line) - (emacspeak-auditory-icon 'select-object)))))))xrjp + (emacspeak-auditory-icon 'select-object))))))) (defadvice org-overview (after emacspeak pre act comp) "Provide auditory feedback." @@ -395,12 +395,18 @@ ("M-S-<right>" org-shiftmetaright) ("M-S-<up>" org-shiftmetaup) ("M-S-RET" org-insert-todo-heading) + ("S-RET" org-table-previous-row) ("M-n" org-next-item) ("M-p" org-previous-item) ("S-<down>" org-shiftdown) ("S-<left>" org-shiftleft) ("S-<right>" org-shiftright) ("S-<up>" org-shiftup) + ("C-e <SPC>" emacspeak-org-table-speak-current-element) + ("C-e ." emacspeak-org-table-speak-coordinates) + ("C-e b" emacspeak-org-table-speak-both-headers-and-element) + ("C-e r" emacspeak-org-table-speak-row-header-and-element) + ("C-e c" emacspeak-org-table-speak-column-header-and-element) ("S-TAB" org-shifttab) ) do @@ -545,9 +551,56 @@ "echoes current table element" (interactive) (dtk-speak-and-echo (org-table-get-field))) + +;;;###autoload +(defun emacspeak-org-table-speak-column-header () + "echoes column header" + (interactive) + (dtk-speak-and-echo (org-table-get 1 nil))) + +;;;###autoload +(defun emacspeak-org-table-speak-row-header () + "echoes column header" + (interactive) + (dtk-speak-and-echo (org-table-get nil 1 ))) + +;;;###autoload +(defun emacspeak-org-table-speak-coordinates () + "echoes coordinates" + (interactive) + (dtk-speak-and-echo (concat "row " (number-to-string (org-table-current-line)) + ", column " (number-to-string (org-table-current-column))))) + +;;;###autoload +(defun emacspeak-org-table-speak-both-headers-and-element () + "echoes coordinates" + (interactive) + (dtk-speak-and-echo (concat (org-table-get nil 1) ", " + (org-table-get 1 nil) ", " + (org-table-get-field)))) + +;;;###autoload +(defun emacspeak-org-table-speak-row-header-and-element () + "echoes coordinates" + (interactive) + (dtk-speak-and-echo (concat (org-table-get nil 1) ", " + (org-table-get-field)))) + +;;;###autoload +(defun emacspeak-org-table-speak-column-header-and-element () + "echoes coordinates" + (interactive) + (dtk-speak-and-echo (concat + (org-table-get 1 nil) ", " + (org-table-get-field)))) + + + + + (loop for f in - '(org-table-next-field org-table-previous-field) + '(org-table-next-field org-table-previous-field org-table-next-row org-table-previous-row) do (eval `(defadvice ,f (after emacspeak pre act comp) ---------------------------------------------------------------------- And now the org-table patch ---------------------------------------------------------------------- git diff origin -- org-table.el diff --git a/lisp/org-table.el b/lisp/org-table.el index 8a6e22b..f17d84d 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -1092,6 +1092,30 @@ Before doing so, re-align the table if necessary." (if (looking-at " ") (forward-char 1))))) ;;;###autoload +(defun org-table-previous-row () + "Go to the previous row (same column) in the current table. +Before doing so, re-align the table if necessary." + (interactive) + (org-table-maybe-eval-formula) + (org-table-maybe-recalculate-line) + (if (or (looking-at "[ \t]*$") + (save-excursion (skip-chars-backward " \t") (bolp))) + (newline) + (if (and org-table-automatic-realign + org-table-may-need-update) + (org-table-align)) + (let ((col (org-table-current-column))) + (beginning-of-line 0) + (if (or (not (org-at-table-p)) + (org-at-table-hline-p)) + (progn + (beginning-of-line 1))) + (org-table-goto-column col) + (skip-chars-backward "^|\n\r") + (if (looking-at " ") (forward-char 1))))) + + +;;;###autoload (defun org-table-copy-down (n) "Copy the value of the current field one row below. > ---------------------------------------------------------------------- -- Peter Rayner Leader, Clean Air and Urban Landscapes NESP hub. room 343 School of Earth Sciences, University of Melbourne, 3010, Vic, Australia tel: work: +61 (0)3 8344 9708; fax: +61 (0)3 8344 7761 mobile +61 402 752 379, skype: petermorag mail-to: prayner@xxxxxxxxxxx google scholar profile <http://scholar.google.com.au/citations?user=H3up71wAAAAJ&hl=en>
|All Past Years |Current Year|
If you have questions about this archive or had problems using it, please contact us.