Fix for "e" in relation to words ending with a "."
LibreOffice considers a "." directly after the end of a word to be the end of word. Before this fix, pressing "e" would move the cursor to the "." in these cases instead of to the last character of the word like in Vim.
This commit is contained in:
parent
81204ff4e1
commit
b56b17e239
|
@ -1299,18 +1299,26 @@ Function ProcessMovementKey(keyChar, Optional bExpand, Optional keyModifiers)
|
|||
ElseIf keyChar = "e" Then
|
||||
' When the user enters "e", "ce", or "de":
|
||||
|
||||
' The function gotoNextWord causes a lot of problems when trying to
|
||||
' emulate vim behavior. The following method doesn't have to account
|
||||
' Note: The function gotoNextWord causes a lot of problems when trying
|
||||
' to emulate vim behavior. The following method doesn't have to account
|
||||
' for as many special cases.
|
||||
|
||||
' Moves the cursor to the end of the next word or end of file if there
|
||||
' are no more words.
|
||||
|
||||
|
||||
' Move cursor to right by two in case cursor is already at the end of a
|
||||
' word.
|
||||
' Move cursor to right by two in case cursor is already at vim's
|
||||
' definition of endOfWord.
|
||||
oTextCursor.goRight(2, bExpand)
|
||||
|
||||
' If moving cursor to right by 2 places cursor just to the right of a
|
||||
' "." then move cursor right again. This is needed to ensure that the
|
||||
' cursor does not get stuck.
|
||||
getCursor().gotoRange(oTextCursor.getEnd(), False)
|
||||
getCursor().goLeft(1, True)
|
||||
If getCursor().String = "." Then
|
||||
oTextCursor.goRight(1, bExpand)
|
||||
End If
|
||||
|
||||
' gotoEndOfWord gets stuck sometimes so manually moving the cursor
|
||||
' right is necessary in these cases.
|
||||
Do Until oTextCursor.gotoEndOfWord(bExpand)
|
||||
|
@ -1320,11 +1328,22 @@ Function ProcessMovementKey(keyChar, Optional bExpand, Optional keyModifiers)
|
|||
End If
|
||||
Loop
|
||||
|
||||
' gotoEndOfWord moves the cursor one character further than vim does so
|
||||
' move it back one if end of word is reached and not expanding
|
||||
' selection.
|
||||
If NOT bExpand And oTextCursor.isEndOfWord() Then
|
||||
oTextCursor.goLeft(1, bExpand)
|
||||
If oTextCursor.isEndOfWord() Then
|
||||
' LibreOffice defines a "." directly following a word to be the
|
||||
' endOfWord and vim does not. So in this case we need to move the
|
||||
' the cursor to the left.
|
||||
getCursor().gotoRange(oTextCursor.getEnd(), False)
|
||||
getCursor().goLeft(1, True)
|
||||
If getCursor().String = "." Then
|
||||
oTextCursor.goLeft(1, bExpand)
|
||||
End If
|
||||
|
||||
' gotoEndOfWord moves the cursor one character further than vim
|
||||
' does so move it back one if end of word is reached and not
|
||||
' expanding selection.
|
||||
If NOT bExpand Then
|
||||
oTextCursor.goLeft(1, bExpand)
|
||||
End If
|
||||
End If
|
||||
|
||||
ElseIf keyChar = ")" Then
|
||||
|
|
Loading…
Reference in New Issue