2015-08-26 9 views
6

Zmapowałem tabulację ctl + tab i ctl + shift + tab do Window.NextTab i Window.PreviousTab.Jak wyłączyć zachowanie MRU w VS2013 po zamknięciu karty

Ale kiedy zadzwonię do File.Close, Visual Studio 2013 nadal używa MRU, aby zdecydować, która karta ma zostać przeniesiona na pierwszy plan, co zwykle powoduje, że fokus skacze gdzieś niewyraźnie. Chciałbym zmienić to zachowanie, aby zakładka zaraz po zamknięciu (po prawej stronie w zakładce) została przeniesiona na pierwszy plan (jeśli istnieje). To sprawi, że zachowanie VS będzie pasować do ff, chrome, notepad ++ itd.

Próbowałem wielu rozszerzeń, a podczas gdy wiele z nich zmieniało lub tworzyło swoje własne następne/poprzednie funkcje tabulacji, żadna nie tworzy nowej wersja pliku File.Close.

Czy ktoś wie, czy to możliwe, czy tożsamość rozszerzeń, które to robią?

Odpowiedz

2

Można użyć następującego polecenia utworzony w Visual Commander zamiast plik.close po blisko aktywować następną kartę:

public class C : VisualCommanderExt.ICommand 
{ 
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
    { 
     dte = DTE; 
     if (IsCommandAvailable("Window.NextTab")) 
     { 
      DTE.ExecuteCommand("Window.NextTab"); 
      DTE.ExecuteCommand("Window.PreviousTab"); 
     } 
     if (IsCommandAvailable("File.Close")) 
      DTE.ExecuteCommand("File.Close"); 
    } 

    private bool IsCommandAvailable(string commandName) 
    { 
     EnvDTE80.Commands2 commands = dte.Commands as EnvDTE80.Commands2; 
     if (commands == null) 
      return false; 

     EnvDTE.Command command = commands.Item(commandName, 0); 
     if (command == null) 
      return false; 

     return command.IsAvailable; 
    } 

    private EnvDTE80.DTE2 dte; 
} 

Aktualizacja prawdopodobnie lepsza realizacja, która uniemożliwia potencjalne skutki uboczne optyczny:

public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
{ 
    dte = DTE; 
    if (IsCommandAvailable("Window.NextTab")) 
    { 
     EnvDTE.Window w = DTE.ActiveWindow; 
     DTE.ExecuteCommand("Window.NextTab"); 
     w.Close(); 
    } 
    else if (IsCommandAvailable("File.Close")) 
     DTE.ExecuteCommand("File.Close"); 
} 
+0

Świetnie! Korzystam już z twojego "tabs studio" - byłoby wspaniale mieć tam domyślnie! – fastmultiplication

+0

Hmm, tego rodzaju prace, chyba że jesteś na ostatniej karcie. Ma również wizualne efekty uboczne (można zobaczyć, że porusza się do przodu i do tyłu). Zastanawiam się, czy istnieje sposób, aby po prostu przechowywać tożsamość fizycznie następnej karty i zamiast tego przełączać się do niej po zamknięciu? – fastmultiplication

+0

Dodałem prawdopodobnie lepszą implementację, która zapobiega potencjalnym wizualnym efektom ubocznym, ale nie wiem, jak zapobiec aktywacji pierwszej karty podczas zamykania ostatniej. –

Powiązane problemy