///////////////////////////////////////////////////////////////
// Bracket.c
// TaEditのプラグイン
// 括弧を挿入する
///////////////////////////////////////////////////////////////

#include <stdlib.h>
#include <malloc.h>
#include "../syuhitu/PluginFuncID.h"

void InsertBracket( PFT_GetAPIFunction GetAPIFunction )
{
	PFT_Replace Replace = (PFT_Replace)GetAPIFunction( PFID_REPLACE );
	PFT_GetSelectionRange GetSelectionRange = (PFT_GetSelectionRange)GetAPIFunction( PFID_GETSELECTIONRANGE );
	PFT_SetSelectionRange SetSelectionRange = (PFT_SetSelectionRange)GetAPIFunction( PFID_SETSELECTIONRANGE );
	PFT_GetConfigValue GetConfigValue = (PFT_GetConfigValue)GetAPIFunction( PFID_GETCONFIGVALUE );
	const wchar_t *pLeftStr;
	const wchar_t *pRightStr;
	unsigned long sl, sc, el, ec;

	// 挿入すべき括弧の文字列を取得
	pLeftStr = GetConfigValue( L"LeftBracket" );
	pRightStr = GetConfigValue( L"RightBracket" );

	if ( NULL == pLeftStr && NULL == pRightStr ) return ;	// すべきことはない

	// 現在の選択範囲を取得
	GetSelectionRange( &sl, &sc, &el, &ec );

	// 右括弧を挿入
	if ( pRightStr ) {
		Replace( el, ec, el, ec, pRightStr );
	}

	// 左括弧を挿入
	if ( pLeftStr ) {
		Replace( sl, sc, sl, sc, pLeftStr );
	}
}
