Tabs Studio Blog (organizing Visual Studio document tabs)

July 30, 2021

Tabs Studio v5.0.0.1 released

Filed under: Releases — Tags: — Sergey Vlasov @ 11:50 am

Tabs Studio v5.0.0.1 fixes EnvDTE FileNotFoundException in Visual Studio 2022 Preview 2.1.

Download link: Tabs Studio v5.0.0.1.

July 1, 2021

Tabs Studio v5.0.0 released

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

Tabs Studio v5.0.0 released:

  • Added support for Visual Studio 2022 Preview 1.1.
  • Moved support for Visual Studio 2015/2013/2012/2010 and SSMS 17/2016/2014/2012 to a separate installer TabsStudio2015.
  • Improved installer’s ability to handle blocking processes.
  • Added the “Rename regex” option to the ITransform add-in.
  • Extended the Disambiguator add-in to compare full document paths when one level of disambiguation is not enough.
  • Fixed unpredictable ordering in the OrderEx add-in when there is more than 2 extensions in a group.
  • Fixed a rare TabsStudio.Tabs should not return PositiveInfinity exception.
  • Fixed a rare ArgumentException in WindowBase.get_Caption.
Tabs Studio in Visual Studio 2022

Tabs Studio in Visual Studio 2022

Download link: Tabs Studio v5.0.0.

May 24, 2020

Full path disambiguation

Filed under: Uncategorized — Tags: — Sergey Vlasov @ 11:36 am

The Disambiguator add-in detects when two or more tabs have the same title and adds Visual Studio folder or project to titles for these tabs:

Notice how for WindowsProject1.h and WindowsProject1.cpp tabs it added corresponding VS folder names Header Files and Source Files and for Resource.h tabs it added corresponding project names WindowsProject2 and WindowsProject1.

Disambiguator v1.0.6 shipped with Tabs Studio v4.8.0 also had some limitations. For MainWindow.xaml.cs and MainWindow.xaml tabs that are in the same directory, folder and project it still unnecessarily adds the project name WpfApp1, and for Class1.cs tabs that are in the NewFolder1/111/Class1.cs and NewFolder2/111/Class1.cs folders it adds only the closest folder name 111.

I’ve extended Disambiguator to compare full document paths when previously demonstrated disambiguation doesn’t provide enough info:

Notice that now the project name is not added to MainWindow.xaml.cs and MainWindow.xaml tabs as they can’t be disambiguated anyway, and two levels of directory names NewFolder1/111 and NewFolder2/111 are added to Class1.cs tabs to make them unique.

Download link: Disambiguator v1.1.0.

April 17, 2020

Tabs Studio v4.8.0 released

Filed under: Releases — Sergey Vlasov @ 8:12 am

Tabs Studio v4.8.0 released:

  • Replaced the Title grouping regex with path specific Title splitting rules.

Download link: Tabs Studio v4.8.0.

February 24, 2020

Tabs Studio v4.7.3 released

Filed under: Releases — Sergey Vlasov @ 11:22 am

Tabs Studio v4.7.3 released:

  • Removed the tab settings button in VS 2019 v16.5 Preview 3.
  • Fixed incorrect tab dragging between groups with overlapping windows.

Download link: Tabs Studio v4.7.3.

January 22, 2020

Tabs Studio v4.7.1 released

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

Tabs Studio v4.7.1 released:

  • Fixed tab context menu not opening in VS 2019 v16.5.
  • Fixed comment disappearing when moving a tab between groups in SQLComment.

Download link: Tabs Studio v4.7.1.

November 18, 2019

Tabs Studio v4.7.0 released

Filed under: Releases — Tags: — Sergey Vlasov @ 1:38 pm

Tabs Studio v4.7.0 released:

  • Added support for integrated vertical tabs in VS 2019 v16.4.
  • Removed Set Tab Layout and additional Close context menu commands in VS 2019 v16.4.
  • Fixed the inability to disable Tabs Studio when the ITransform add-in is active.
  • Fixed an ArgumentException in is_move_all_to_next_group_available when opening the tab context menu with multiple tab groups in VS 2019 v16.4.
  • Fixed a rare COMException in set_IsFloating on mouse floating a tab.

Download link: Tabs Studio v4.7.0.

October 25, 2019

Integrated vertical tabs

Filed under: Uncategorized — Tags: — Sergey Vlasov @ 2:57 pm

Visual Studio 2019 16.4 Preview 2 adds the vertical tabs layout option to the core product:

Tabs Studio continues to work as usual if you keep the tab layout option set to the default Top value, but I’d like to use this opportunity to improve vertical tabs usage experience. More specifically, when vertical tabs are activated in VS 2019, Tabs Studio reuses this area to show tabs, instead of showing them in a separate tool window:

If you want to try it yourself, install Visual Studio Preview.

Enable vertical tabs in Visual Studio options:

And install Tabs Studio v4.6.2.

May 10, 2019

Controlled opening of corresponding files

Filed under: Uncategorized — Tags: — Sergey Vlasov @ 5:09 pm

You can quickly open a corresponding file from the tab context menu:

But some system and autogenerated files don’t need to be open manually:

You can remove them from the context menu adding the defining pattern without a capturing group to the Title grouping regex option:

In some configurations there are could be just too many corresponding files, making the context menu hard to use:

For this scenario I’ve created the NoMoreOpen add-in that removes corresponding file items from the context menu if there are more than 5 of them:

April 18, 2019

Customizing TrackEd colors

Filed under: Uncategorized — Tags: — Sergey Vlasov @ 9:56 am

TrackEd add-in shows a yellow or green bar in the tab title for modified and saved documents:

You can customize these colors first by applying the following Tabs style (copied from TrackEd source):

<Style TargetType="TabsStudio:TabNameModificationMarker" BasedOn="{StaticResource DefaultTabNameModificationMarkerStyle}">
<Setter Property="Template">
  <Setter.Value>
    <ControlTemplate TargetType="{x:Type TabsStudio:TabNameModificationMarker}">
      <TextBlock Name="TabNameModificationMarkerTextBlock" Padding="0" Margin="3,2,0,2"  Text=" "/>
      <ControlTemplate.Triggers>
        <DataTrigger Binding="{Binding Path=(TabsStudioTrackEd:Properties.DocStatus),
                 RelativeSource={RelativeSource AncestorType=TabsStudio:TabNameGroup}}" Value="Dirty">
          <Setter TargetName="TabNameModificationMarkerTextBlock" Property="TextBlock.Background" Value="#E5AC00"/>
          <Setter Property="Visibility" Value="Visible"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=(TabsStudioTrackEd:Properties.DocStatus),
                 RelativeSource={RelativeSource AncestorType=TabsStudio:TabNameGroup}}" Value="Saved">
          <Setter TargetName="TabNameModificationMarkerTextBlock" Property="TextBlock.Background" Value="#009900"/>
          <Setter Property="Visibility" Value="Visible"/>
        </DataTrigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>
</Style>

<Style TargetType="TabsStudio:TabExtensionModificationMarker" BasedOn="{StaticResource DefaultTabExtensionModificationMarkerStyle}">
<Setter Property="Template">
  <Setter.Value>
    <ControlTemplate TargetType="{x:Type TabsStudio:TabExtensionModificationMarker}">
      <TextBlock Name="TabExtensionModificationMarkerTextBlock" Padding="0" Margin="0,2,0,2"  Text=" "/>
      <ControlTemplate.Triggers>
        <DataTrigger Binding="{Binding Path=(TabsStudioTrackEd:Properties.DocStatus),
                 RelativeSource={RelativeSource AncestorType=TabsStudio:TabExtensionGroup}}" Value="Dirty">
          <Setter TargetName="TabExtensionModificationMarkerTextBlock" Property="TextBlock.Background" Value="#E5AC00"/>
          <Setter Property="Visibility" Value="Visible"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=(TabsStudioTrackEd:Properties.DocStatus),
                 RelativeSource={RelativeSource AncestorType=TabsStudio:TabExtensionGroup}}" Value="Saved">
          <Setter TargetName="TabExtensionModificationMarkerTextBlock" Property="TextBlock.Background" Value="#009900"/>
          <Setter Property="Visibility" Value="Visible"/>
        </DataTrigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>
</Style>

And then change colors for the name and extension to your values. For example, after changing default #E5AC00 Dirty color to #D90000 it looks like this:

Older Posts »

Blog at WordPress.com.