fas*_*ion 6 visual-studio visual-studio-2013
我已经将ctl + tab和ctl + shift + tab重新映射到Window.NextTab和Window.PreviousTab.
但是当我调用File.Close时,Visual Studio 2013仍然使用MRU来决定将哪个选项卡带到前台,这通常会导致焦点跳转到某个未触及的位置.我想更改此行为,以便刚刚关闭的选项卡(在选项卡中的右侧)之后的选项卡被带到前台(如果它存在).这会使VS的行为与ff,chrome,notepad ++等相匹配.
我已经尝试了一堆扩展,虽然其中许多扩展更改或创建了自己的下一个/上一个选项卡函数,但似乎没有一个扩展到File.Close的新版本.
有谁知道这是可能的还是任何扩展的身份呢?
您可以使用在Visual Commander中创建的以下命令而不是 File.Close 来在关闭后激活下一个选项卡:
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;
}
Run Code Online (Sandbox Code Playgroud)
更新一个可能更好的实现,可以防止潜在的视觉副作用:
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");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |