SlickEdit Community

SlickEdit Product Discussion => SlickEditĀ® => Slick-CĀ® Macro Programming => Topic started by: Matthew on July 01, 2006, 05:09:50 am

Title: Using SlickEdit to edit NAnt build files
Post by: Matthew on July 01, 2006, 05:09:50 am
GaryMC has a nice blog entry about this topic at (

Inhouse, we use NAnt to automate our builds for the SlickEdit Tools for Visual Studio project. (Setting up the schema URL mapping is key to maintaining ones sanity)

Anyhow, I found that as my build files grew, it was a good idea to separate a lot of the commonly used properties and tasks into several files and simply use NAnt's <include buildfile="..."> elements to pull them in. Works great, but now the declarations of my properties and tasks can be all over the map in several directories. And if I am coming back to edit a .build file that I haven't touched in a month, I usually don't remember exactly which included file contains a specific property or task definition.

Since I'm way too lazy to fully implement NAnt as a real "language" (with tagging and statement parsing), I ginned up this handy macro to do a push-tag (Ctrl + .) -style navigation to a task or property definition. So, for example, if I'm editing the line
<fileset basedir="${wix.root}">
and I can't remember where or how I defined the property wix.root, I can simply place the caret in (or select) wix.root, go to the command line and type the nant-def (or nd) command (contained in the attached nant.e macro file) and it will search the current file and any included files for the definition. Which just happens to be 
<property name="wix.root" value="${project.root_dir}\installer\Wix"/>

 Same applies when you're faced with
<call target="clean_installer_msi"/>
and the exact location of clean_installer_msi eludes you, then nd will spirit you away to 
<target name="clean_installer_msi" description="Wipe out existing compiled installer">
And it actually does push a bookmark if it finds a definition, so Ctrl+, will take you back to your previous spot.

Anyone want to take this and run with it to include support for Ant and MSBuild syntax? :-)