Better caret movement by words

Macros for better word right/left caret movement within the IDE.

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:

  1. NewWordRight Moves the caret to beginning of next word to the right
  2. NewWordRightExt As above with selection
  3. NewWordLeft Moves caret to beginning of next word to the left
  4. NewWordLeftExt As above with selection
  5. NewEndWordRight Moves the caret to the end of next word to the right
  6. NewEndWordRightExt As above with selection
  7. NewEndWordLeft Moves the caret to the end of next word to the Left
  8. 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:00am

    Originally posted by: Wolfhawkfield

    when there was no more words,
    MsDev was stuck finding another word....
    i try to settle this problem....

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • When individual departments procure cloud service for their own use, they usually don't consider the hazardous organization-wide implications. Read this paper to learn best practices for setting up an internal, IT-based cloud brokerage function that service the entire organization. Find out how this approach enables you to retain top-down visibility and control of network security and manage the impact of cloud traffic on your WAN.

  • U.S. companies are desperately trying to recruit and hire skilled software engineers and developers, but there is simply not enough quality talent to go around. Tiempo Development is a nearshore software development company. Our headquarters are in AZ, but we are a pioneer and leader in outsourcing to Mexico, based on our three software development centers there. We have a proven process and we are experts at providing our customers with powerful solutions. We transform ideas into reality.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date