Tabs Studio Blog (organizing Visual Studio document tabs)

September 26, 2018

Keeping tabs order better

Filed under: Uncategorized — Sergey Vlasov @ 9:41 am

I’ve created a new add-in OrderKeeper that remembers a tab position when it is closed and restores the position when the tab is reopened. It should address the problem with tabs reordering when a project is externally modified by updating from source control or switching branches. You may also find stable tab position useful when you manually close and reopen a tab.

Download link: OrderKeeper v1.0.0.

March 14, 2018

Super group label

Filed under: Uncategorized — Tags: — Sergey Vlasov @ 11:22 pm

When grouping tabs by project (with the Sorter add-in), it could be helpful to actually see the corresponding project name for each tab group. I’ve created the new SuperName add-in that adds the corresponding project name to the first tab in each super group:

Download link: SuperName v1.0.0.

October 2, 2017

Grouping tabs by subject

Filed under: Uncategorized — Sergey Vlasov @ 2:01 pm

Automatic tab grouping is essential for efficient organization of document tabs in Visual Studio. Tabs Studio by default automatically groups tabs with different extensions and the same name:

Additionally, you can set up automatic coloring, sorting and grouping of tabs based on tab name, project or document path. For example, let’s explore different options to organize tabs with the word Client: ClientHouse.cs, ClientPayments.cs and BusinessClient.cs.

To color all client tabs with a slightly transparent green color, you can create a tab coloring rule with Tab name regex=Client and Background=<SolidColorBrush Color=”#7D8FBC8F”/>:

To position client tabs near each other, enable the Sorter add-in, delete the default Sort by tab name rule and add a new sorting rule with Rule type=TabName and Match regex=(?<M>Client). Checking the Create super group option will additionally visually separate the group with a margin (configured in the Tabs style):

Finally, if you want to group client tabs in one extended tab, Title grouping regex=(?<Name>Client)(?<Ext>.+)|(?<Name>(.*[/\\])?.+?)(?<Ext>\..+) will group ClientHouse.cs and ClientPayments.cs:

You can add BusinessClient.cs to this group as well, but it depends on how you want to display it. For example, the following variations are possible:

1. Set Title grouping regex=(?<Ext>.*)(?<Name>Client)(?<Ext>.+)|(?<Name> (.*[/\\])?.+?)(?<Ext>\..+)

2. Install and enable the ITransform add-in.

3. In ITransform add-in options set Interface regex=^(?<Prefix>.+)(?<Name>Client)(?<Ext>.+)$

4. In ITransform add-in options set Replacement regex to ${Prefix} or ${Prefix}${Ext} or ${Prefix}${Name}${Ext} corresponding to the variations listed above.

June 16, 2017

Super commands for super groups

Filed under: Uncategorized — Tags: — Sergey Vlasov @ 10:06 am

I’ve created the new SuperCommands add-in that adds two tab context menu commands Close super group and Close all but this super group:

If you use super groups, please, have a look.

Download link: SuperCommands v1.0.0.

June 6, 2017

Super grouping tabs

Filed under: Uncategorized — Sergey Vlasov @ 10:32 am

PriorityGroup, MvcGroup and Sorter add-ins group tabs together. PriorityGroup places important tabs to the beginning, MvcGroup groups ASP.NET MVC controller and view tabs near each other, Sorter groups tabs by project, path, part of the tab name, highlight index etc.

I’m introducing a new concept – super group to describe a group of tabs and customize its presentation. For example, the following screenshots show 3 super groups of tabs organized by project and separated with 20 pixels margin in horizontal and vertical tab layouts:

To make it all work, Tabs Studio core provides super group properties, Tabs Studio add-ins set these properties for super group tabs, the tabs style uses super group properties to define presentation, the tabs layout algorithm in Tabs Studio core adds margin between super groups.

Tabs SuperGroupMargin double property defines margin between super groups in pixels. Default value is 0 – no margin between groups. 20 is a good value to visually separate groups. A large value like 9999 with the horizontal tabs layout will force groups to take separate rows:

To set SuperGroupMargin use the following style:

<Style TargetType="TabsStudio:Tabs" BasedOn="{StaticResource DefaultTabsStyle}">
	<Setter Property="SuperGroupMargin" Value="20"/>

Tab SuperGroupIsFirstTab and Tab SuperGroupIsLastTab properties are True for the first and the last tabs in each super group. They can be used to apply a special style to the beginning and the end of a super group.

Tab SuperGroupName property is a string assigned to each tab in a super group. PriorityGroup add-in sets it to “[PriorityGroup]”. MvcGroup – to “[MvcGroup]”. Sorter – to “[Sorter] <Rule name>” resulting in “[Sorter] Project”, “[Sorter] Tests” etc. It can be used to set a distinct background color to these groups.

In Sorter add-in you have an option to “Create super group” for certain rules. You don’t want groups when sorting tabs alphabetically, but grouping tabs by project, path or a part of tab name will help separate them visually:

I have ideas to add more functionality supporting super groups (context menu commands, styles) and I’m waiting for your feedback based on actual usage.

Download link: Tabs Studio v4.3.0.

Update: See Super commands for super groups for additional context menu commands.

April 9, 2016

SSMS 2016 RC2 breaking changes

Filed under: Uncategorized — Tags: — Sergey Vlasov @ 11:46 pm

On April 1 SQL Server 2016 Release Candidate 2 was released along with the SQL Server Management Studio March 2016 preview refresh v13.0.13000.55. This new version of SSMS uses the Visual Studio 2015 Isolated shell and doesn’t allow any 3rd party extensions like Tabs Studio.

Update (May 10, 2016): Thanks to Karl Burtram from Microsoft, Tabs Studio is now in the SSMS 2016 package load inclusion list.

February 1, 2016

Tracking changed files

Filed under: Uncategorized — Tags: — Sergey Vlasov @ 1:18 pm

The Visual Studio editor tracks changed lines and displays them on the selection margin: yellow – changes since the last save, green – saved changes since file opening, orange – reversed changes (undo) after a save operation. I think it can be useful to indicate changed files in the tab title as well. An orange bar instead of the default asterisk for files changed since the last save (orange looks better than yellow in the tab title), plus a green bar for saved files:

Changed file indicators in tab titles

Changed file indicators in tab titles

I’ve implemented it as the TrackEd add-in for Tabs Studio. These indicators should visually separate tabs you edited and other tabs used only for viewing. Give it a try and share your experience!

Download link: TrackEd v1.0. (Don’t forget to unblock the TrackEd.dll file after downloading from file properties.)

P.S. To clear tracking changes and the title indicator for a saved file, you can use this command for Visual Commander. (It works independently of Tabs Studio.)

February 8, 2015

Visual Studio 2015 support

Filed under: Uncategorized — Tags: — Sergey Vlasov @ 8:19 pm

Visual Studio 2015 Community Technology Preview 5 is currently available for download:

Visual Studio 2015 CTP 5 splash screen

Visual Studio 2015 CTP 5 splash screen

While I do not see any changes in default VS tabs behavior, VS 2015 stopped support for add-ins and that required substantial internal changes in Tabs Studio. Now, instead of VS Add-in Manager, Tabs Studio is presented in VS Extensions and Updates dialog. You can disable and uninstall it from there (though to uninstall all files it is still recommended to use Control Panel):

Tabs Studio in Visual Studio 2015 Extensions and Updates dialog

Tabs Studio in Visual Studio 2015 Extensions and Updates dialog

With the new implementation I removed the Connect word from Tabs Studio command names that you can assign to keyboard shortcuts:

Tabs Studio commands in Visual Studio 2015

Tabs Studio commands in Visual Studio 2015

Everything else in Tabs Studio should work as usual. Please let me know if it doesn’t 🙂

Tabs Studio in Visual Studio 2015 CTP 5

Tabs Studio in Visual Studio 2015 CTP 5

Download link: Tabs Studio v3.5.0.

March 11, 2014

Add an SQL query description to the SSMS tab name with the SQLComment add-in

Filed under: Uncategorized — Tags: , — Sergey Vlasov @ 9:35 pm

Many automatically opened SQL tabs in SQL Server Management Studio have names like SQLQuery1.sql, SQLQuery2.sql etc:

SQLQuery tabs in SSMS 2012

SQLQuery tabs in SSMS 2012

To better distinguish such tabs I’ve created the SQLComment add-in that can add a comment from the query body to the tab name:

Tabs with comments in SSMS 2012

Tabs with comments in SSMS 2012

You can chose any comment format and configure SQLComment to extract it using a .NET regular expression. For example, the default regex
StoredProcedure \[dbo\]\.\[(?<M>\w+)\] extracts the procedure name (AddEvent) to the M named group from the following code:

USE [ReportServer]
/****** Object:  StoredProcedure [dbo].[AddEvent]    Script Date: 3/11/2014 8:29:10 AM ******/
SQLComment options

SQLComment options

To extract description from a comment like ––– provides details on investors you can use the regex ^––– (?<M>.+)$. To support several formats you can combine regexes with ‘|’ like ^––– (?<M>.+)$|StoredProcedure \[dbo\]\.\[(?<M>\w+)\]. You can use several separate M groups (line Name and Ext in standard tab grouping), the resulting string will be concatenated from all captures. Only tabs starting with SQLQueryNN.sql are considered for commenting.

Download link: SQLComment v1.0.0.

Update (March 20): Added commenting support for grouped tabs SQLComment v1.0.1.

Update (October 23): Added the “Set SQL comment…” tab context menu command for temporary comments. Added more customization for displaying comments. SQLComment v1.0.4.

October 29, 2013

Multipart names in the title grouping regex

Filed under: Uncategorized — Sergey Vlasov @ 7:54 pm

I’ve added support for multiple captures of the Name and Ext groups in the Title grouping regex. For example,
(?<Name>.+?)-(?<Name>.+?)(?<Ext>\..+) will create the MainWindow name from the Main-Window.xaml tab. (?<Ext>Test)(?<Name>.+?)(?<Ext>\..+) will create the Test.xaml extension from the TestWindow.xaml. You can use as many separate Name and Ext groups as you need, the resulting string will be concatenated from all captures. It allows you to capture multiple parts of the original tab title as the name or extension. Technically I just switched to the built-in Group.Captures .NET regex feature.

Download link: Tabs Studio v3.1.5.

Update: Connell Watkins shared his use of multiple captures to group lots of similar files.

« Newer PostsOlder Posts »

Blog at