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

  • Agile methodologies give development and test teams the ability to build software at a faster rate than ever before. Combining DevOps with hybrid cloud architectures give teams not just the principles, but also the technology necessary to achieve their goals. By combining hybrid cloud and DevOps: IT departments maintain control, visibility, and security Dev/test teams remain agile and collaborative Organizational barriers are broken down Innovation and automation can thrive Download this white paper to …

  • On-demand Event Event Date: September 10, 2014 Modern mobile applications connect systems-of-engagement (mobile apps) with systems-of-record (traditional IT) to deliver new and innovative business value. But the lifecycle for development of mobile apps is also new and different. Emerging trends in mobile development call for faster delivery of incremental features, coupled with feedback from the users of the app "in the wild." This loop of continuous delivery and continuous feedback is how the best mobile …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds