Better caret movement by words
Currently the word right/left caret movement in the IDE moves alternately from beginning to ending of "words." Therefore it now takes more keystrokes to navigate through a line. These macros separate the beginning to beginning and end to end movement. Providing faster and more predictable movement.
There are 8 macros:
- NewWordRight Moves the caret to beginning of next word to the right
- NewWordRightExt As above with selection
- NewWordLeft Moves caret to beginning of next word to the left
- NewWordLeftExt As above with selection
- NewEndWordRight Moves the caret to the end of next word to the right
- NewEndWordRightExt As above with selection
- NewEndWordLeft Moves the caret to the end of next word to the Left
- NewEndWordLeftExt As above with selection
I have attached the NewWord macros to the ctrl/ctrl-shift arrow keys. The NewEndWord's I have attached to corresponding alt/alt-shift arrow keys.
Flaws: I have had occasion when the macro gets into an infinite loop when I press the arrow keys in a fast and "random" pattern. At which time its necessary to double click on the macro icon in the tray to terminate the macro. Other than this I have seen no other side effects.
Sub NewWordRight() 'DESCRIPTION: Does a real word right VarLtr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" if len(ActiveDocument.Selection) <> 0 then ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharLeft End if ActiveDocument.Selection.CharRight dsExtend while InStr ( VarLtr, ActiveDocument.Selection ) <> 0 ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharRight dsExtend wend while InStr ( VarLtr, ActiveDocument.Selection ) = 0 ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharRight dsExtend wend ActiveDocument.Selection.CharLeft End Sub Sub NewWordLeft() 'DESCRIPTION: Does a real word left VarLtr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" if len(ActiveDocument.Selection) <> 0 then ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharRight End if ActiveDocument.Selection.CharLeft dsExtend while InStr ( VarLtr, ActiveDocument.Selection ) = 0 ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharLeft dsExtend wend while InStr ( VarLtr, ActiveDocument.Selection ) <> 0 ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharLeft dsExtend wend ActiveDocument.Selection.CharRight End Sub Sub NewWordRightExt() 'DESCRIPTION: Does a real word right extend select VarLtr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" dir = len(ActiveDocument.Selection) ActiveDocument.Selection.CharRight dsExtend if dir <> 0 then if len(ActiveDocument.Selection) > dir then dir = 1 else dir = 0 else dir = 1 End if if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1) while InStr ( VarLtr, test ) <> 0 ActiveDocument.Selection.CharRight dsExtend if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1) wend while InStr ( VarLtr, test ) = 0 ActiveDocument.Selection.CharRight dsExtend if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1) wend if dir then ActiveDocument.Selection.CharLeft dsExtend End Sub Sub NewWordLeftExt() 'DESCRIPTION: Does a real word left extend select VarLtr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" dir = len(ActiveDocument.Selection) ActiveDocument.Selection.CharLeft dsExtend if dir <> 0 then if len(ActiveDocument.Selection) > dir then dir = 1 else dir = 0 else dir = 1 End if if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1) while InStr ( VarLtr, test ) = 0 ActiveDocument.Selection.CharLeft dsExtend if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1) wend while InStr ( VarLtr, test ) <> 0 ActiveDocument.Selection.CharLeft dsExtend if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1) wend if dir then ActiveDocument.Selection.CharRight dsExtend End Sub Sub NewEndWordRight() 'DESCRIPTION: Does an end of word right VarLtr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" if len(ActiveDocument.Selection) <> 0 then ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharLeft End if ActiveDocument.Selection.CharRight dsExtend while InStr ( VarLtr, ActiveDocument.Selection ) = 0 ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharRight dsExtend wend while InStr ( VarLtr, ActiveDocument.Selection ) <> 0 ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharRight dsExtend wend ActiveDocument.Selection.CharLeft End Sub Sub NewEndWordLeft() 'DESCRIPTION: Does an end of word left VarLtr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" if len(ActiveDocument.Selection) <> 0 then ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharRight End if ActiveDocument.Selection.CharLeft dsExtend while InStr ( VarLtr, ActiveDocument.Selection ) <> 0 ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharLeft dsExtend wend while InStr ( VarLtr, ActiveDocument.Selection ) = 0 ActiveDocument.Selection.CharRight ActiveDocument.Selection.CharLeft ActiveDocument.Selection.CharLeft dsExtend wend ActiveDocument.Selection.CharRight End Sub Sub NewEndWordRightExt() 'DESCRIPTION: Does an end of word right extend select VarLtr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" dir = len(ActiveDocument.Selection) ActiveDocument.Selection.CharRight dsExtend if dir <> 0 then if len(ActiveDocument.Selection) > dir then dir = 1 else dir = 0 else dir = 1 End if if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1) while InStr ( VarLtr, test ) = 0 ActiveDocument.Selection.CharRight dsExtend if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1) wend while InStr ( VarLtr, test ) <> 0 ActiveDocument.Selection.CharRight dsExtend if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1) wend if dir then ActiveDocument.Selection.CharLeft dsExtend End Sub Sub NewEndWordLeftExt() 'DESCRIPTION: Does an end of word left extend select VarLtr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" dir = len(ActiveDocument.Selection) ActiveDocument.Selection.CharLeft dsExtend if dir <> 0 then if len(ActiveDocument.Selection) > dir then dir = 1 else dir = 0 else dir = 1 End if if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1) while InStr ( VarLtr, test ) <> 0 ActiveDocument.Selection.CharLeft dsExtend if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1) wend while InStr ( VarLtr, test ) = 0 ActiveDocument.Selection.CharLeft dsExtend if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1) wend if dir then ActiveDocument.Selection.CharRight dsExtend End Sub

Comments
MsDev was stuck at the End of file & Begin
Posted by Legacy on 01/28/2002 12:00amOriginally posted by: Wolfhawkfield
when there was no more words,
ReplyMsDev was stuck finding another word....
i try to settle this problem....