Hello,

PyDev has a 'Mark Occurrences' that I find useful.  However, I realized
that it does not work when I use vi keystrokes (h,j,k,l) to move the cursor
(I am using a vi-emulator plugin, and there are several vi and emacs
plugins out there).  The mark occurrences feature works only when I use
arrow keys or the mouse to move the cursor, and this strange behavior has
been noted before me as well.  I wondered why, so I took a look into the
code and found the logic in PyEdit.java:

       public void keyReleased(KeyEvent e) {
            if (e.character == '\0') {

                switch (e.keyCode) {
                    case SWT.ARROW_DOWN:
                    case SWT.ARROW_UP:
                    case SWT.ARROW_LEFT:
                    case SWT.ARROW_RIGHT:
                    case SWT.HOME:
                    case SWT.END:
                    case SWT.PAGE_UP:
                    case SWT.PAGE_DOWN:
                        int offset = getOffset();
                        if (offset != lastOffset) {
                            notifyCursorPositionChanged();
                            lastOffset = offset;
                        }
                    default:
                        return;
                }
            }
        }

In the code, to the best of my knowledge, {notifyCursorPositionChanged} is
the part that eventually triggers mark occurrences.  As the above logic
filters for arrow keys and several others, obviously vi movement keys never
make to the {notifyCursorPositionChanged}.

Now, this is not strictly a bug as PyDev works fine.  However, it makes me
wonder why there is that keycode switch logic in the first place.  The {if
(offset != lastOffset) } conditional already and correctly tests whether
the cursor position has changed.  And this condition alone should be enough
to trigger notifyCursorPositionChanged().  I simply do not understand the
reason behind switch logic filter.

So, my question is, could we get rid of the switch logic completely and use
the if conditional alone?  This would coincidentally solve my problem :)
Please feel free to provide opinions -- this is my first time looking at
the pydev source code, and I will be happy to be enlightened.

Best Regards,
Minjae
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
pydev-code mailing list
pydev-code@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pydev-code

Reply via email to