Click here to Skip to main content
15,878,814 members
Articles / Programming Languages / C++
Article

Template Completion in the VC++ editor

Rate me:
Please Sign up or sign in to vote.
4.41/5 (11 votes)
17 Feb 20033 min read 63.6K   671   20   6
A helpful macro to simplify code typing

Introduction

The TemplateCompletion macro provides a way to expand short letter sequences (templates) to larger text blocks while you are typing text. My aim is to make this process (template completion) as simple and fast as possible.

The idea is to link simple keystroke (backslash for example) with the macro which reads the word to left of insertion point and replaces it with corresponding string. If macro does not know the word it inserts character pressed by user (backslash). This allows user (you) to type character in text.

Installation and testing

  • Unzip TemplateCompletion.zip file into "F:\Program Files\Microsoft Visual Studio\Common\MSDev98\Macros" folder (use the appropriate folder name according to the configuration of your computer).

  • In Visual Studio open "Tools|Customize" dialog.

  • Select "Add-ins and Macro Files" tab, turn on "TemplateCompletion" item in list.

  • Select "Keyboard" tab, set "Category" to "Macros" and "Editor" to "Text", link CompleteTemplateBackSlash command with "\" keystroke (backslash), link ToggleTemplateCompletion command with "Ctrl+\" keystroke.

  • Close "Customize" dialog.

  • Open any C or C++ source file and type in foi\ sequence, it will be expanded to
    for (i = 0; i < ; ++i) {
    }
  • Type in "Hello world\n" sequence. No expansion, backslash is inserted in text.

Configuration

You can temporarily toggle on/off template completion. The ToggleTemplateCompletion command provides this service.

You can change keystroke which invokes completion. The possible choices are "\" (backslash), "`" (back quote), "|" (bar or "Shift+\"), " " (space). My first choice was space, but then I changed my mind and now use backslash. You can also add your own CompleteTemplate* subroutine to the file TemplateCompletion.dsm to support any keystroke you want.

You can change the list of the templates. The templates are added by calls to AddTemplate subroutine. Take a look to "Module initialization" section. You can freely change set of templates. But keep the templates distinct. If two or more templates are the same, the first template will be used in expansion. The AddTemplate subroutine does not warn about duplicated templates.

And you can freely change the code of macro itself.

Additionally I want to bring your attention to "escape sequences" in template expansion. You have some control over text layout and caret position. The examples are in TemplateCompletion.dsm file.

Issues

When you undo template completion in VC editor, you need to execute several "undo" commands to remove expanded text (this is also true for "redo" command). I hope this is minor inconvenience. This behaviour also takes place when macro does not do template completion at all (when you type in, for example, backslash in text). If you try to undo your text typing, the first "undo" command deletes text after backslash, second deletes backslash itself and third deletes text before backslash.

In some configurations VC editor "paste" command breaks after installation of this macro. In that case go to http://support.microsoft.com/directory/article.asp?ID=kb;en-us;Q195009 page and apply its recommendations to msdev.exe. This helped me to make "paste" command to work. I hope this will help you also.

Contacts

Feel free to e-mail me with any comments, suggestions etc.

History

26 June 2002 - updated download

18 Feb 2003 - updated download

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
Russian Federation Russian Federation
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionTemplate Completion in VS .net 2003? Pin
Member 176989211-Apr-05 0:43
Member 176989211-Apr-05 0:43 
AnswerRe: Template Completion in VS .net 2003? Pin
Anonymous12-Apr-05 4:13
Anonymous12-Apr-05 4:13 
GeneralPossible extensions Pin
Richard Grenfell15-May-03 15:04
Richard Grenfell15-May-03 15:04 
GeneralRe: Possible extensions Pin
Stanislav Volodarskiy15-May-03 19:47
Stanislav Volodarskiy15-May-03 19:47 
GeneralGood, work too with AZERTY keyboard Pin
Jean-Michel LE FOL19-Jun-02 21:07
Jean-Michel LE FOL19-Jun-02 21:07 
GeneralGREAT - but a minor problem... Pin
Michael Hansen19-Jun-02 20:51
Michael Hansen19-Jun-02 20:51 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.