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

[Emacspeak] more info... up/down arrow keys in tabulated-list buffers...



Original message further below and the temporary patch I'm running with
is shown marked with triple pound sign ### below this new commentary.

The issue was reproduced even when running a bare minimal configuration.

I was wrong when reporting that I also get the issue in package menu
buffers.  However the difference apparently is that in package menu,
there is a *small margin* of space chars preceding the first
tabulated-list field and I believe the emacspeak code assumes this
margin, which I do not have in at least buffer-menu and process-list
buffers.

For those, without margin, and probably others, the explicit move to the
noted *col* number field ends up puting you 1 field beyond where the
original position was before the move.

The hack to work around this involves a test for the tabulated-list
property being seen in the new beginning of line position *before*
advancing back to col.  If the property is seen, then we advance by one
field less than col, else col as originally noted.

I do not bet that this is an elegant fix but it resolves the issue for
me at present.

I did also check to see that on my emacs running in a graphical Mac
window, there is still no left margin before the first field with larger
font sizes, the kind that result in horizontal split when invoking
buffer-menu, not the usual vertical split that I get.

Patch below adds only the if/else logic to conditionally subtract one
from the advance-to field position.

###
master:lisp$ git diff -U2
diff --git a/lisp/emacspeak-tabulated-list.el b/lisp/emacspeak-tabulated-list.el
index f7f1ac1c1..d08dc22bb 100644
--- a/lisp/emacspeak-tabulated-list.el
+++ b/lisp/emacspeak-tabulated-list.el
@@ -102,5 +102,5 @@
           :test #'string= :key #'car)))
     (forward-line 1)
-    (tabulated-list-next-column  col)
+    (tabulated-list-next-column  (- col (if (get-text-property (point) 'tabulated-list-column-name) 1 0)))
     (when-let ((goal (next-single-property-change (point)
                                                   'tabulated-list-column-name)))
@@ -117,5 +117,5 @@
           :test #'string= :key #'car)))
     (forward-line -1)
-    (tabulated-list-next-column  col)
+    (tabulated-list-next-column  (- col (if (get-text-property (point) 'tabulated-list-column-name) 1 0)))
     (when-let ((goal (next-single-property-change
                       (point) 'tabulated-list-column-name)))
master:lisp$ 


Thx!



Raman, et al;

Curious if anyone else sees this before I delve in.

Emacspeak HEAD as of today, and also from the prior June 2nd 2024 build
that I was running.

My emacs is 29.2 Macport emacs-mac from homebrew.

Arrowing up/down in buffer menu, package menu, process
list...etc. results in the cursor and spoken field being 1+ whatever
field I was on before the move.

Thus, an immediate left arrow right after moving up or down is required
to get back to the original column.

I observed the strangeness also after restarting emacs with an init.el
and custom.el as stripped down as I can get away with.

A quick study of emacspeak-tabulated-list.el doesn't reveal what I might
obviously explore next.

I am assuming the observed behavior is *not* intentional, but please
advise.

Thx!


|Full archive May 1995 - present by Year|Search the archive|


If you have questions about this archive or had problems using it, please contact us.

Contact Info Page