SublimeText2 プラグイン:ファイルを閉じたら左隣りのファイルをアクティブにする

※2013-07-28 不具合修正しました。詳細は下の方にて。


デフォルトだとファイルを閉じたあとに、
どのファイルにフォーカスが移っているのかがすごくわかりづらいため、


「ファイルを閉じたら左隣りのファイルをアクティブにする」


プラグインを作成しました。




以下が、そのコードです。

import sublime, sublime_plugin

class CloseViewToFocusLeftViewCommand(sublime_plugin.WindowCommand):
	def run(self):
		
		myWindow = sublime.active_window()
		myView = myWindow.active_view()
		
		myGroup, myIndex = myWindow.get_view_index( myView )
		
		sameGroupViews = []
		for view in myWindow.views():
			group, index = myWindow.get_view_index( view )
			
			if group == myGroup:
				while len(sameGroupViews) <= index: sameGroupViews.append(-1)
				sameGroupViews[index] = view
		
		nextIndex = myIndex - 1
		if nextIndex < 0:
			nextIndex = 0
		
		myWindow.run_command( "close_file" )
		myWindow.focus_view( sameGroupViews[nextIndex] )
		


たぶん、コピペしてもらえれば、使えると思います。

そのうち、PackageControl なんかに登録するのもやってみたいなー。


※2013-07-28 追記

閉じようとしているファイルが未保存の場合に、ダイアログの確認でキャンセルをすると、閉じてないのに左のタブにフォーカスが移ってしまう不具合修正。


修正部分は以下の通り。

		myWindow.run_command( "close_file" )
		myWindow.focus_view( sameGroupViews[nextIndex] )

  ↓↓↓

		myWindow.run_command( "close_file" )
		confirm = myWindow.get_view_index( myView )
		if confirm[0] < 0:
			myWindow.focus_view( sameGroupViews[nextIndex] )