//=============================================================================
// 目的:
// 編集行の明確化(以前ファイルを保存した時点からの)
//
// 使い方:
// 1. このScriptを所定のフォルダにコピーする。
// 2. 編集行の確認したいファイルをアクティブにする。
// (thisDocumentで参照出来るように)
// 3. exコマンドで[:run chkmod]を入力。
// 4. Diffが表示されます。
//
// 処理内容:
// 1. アクティブなドキュメントのファイルの内容を
// 一時ファイルにコピー。
// 2. アクティブなドキュメントのビューと
// 一時ファイルでDiffをとる。
//
// 設定:
// *そのままでも使えますが、Default設定が嫌なら変更して下さい。
// - c_strTempFileName : Diffの為の一時ファイル名
//
// 注意点:
// - 実行したファイルを一時ファイルにコピーします。
// 故に、次このScriptを実行するまでは前のファイルの内容が
// 一時ファイルに残されてしまいますのでご注意下さい。
// - ファイルの内容をコピーする時に1行毎に行っているので
// 巨大なファイルだと遅いかもしれません。
// - ファイルを保存した場合は、再度実行して下さい。
// - Diffの設定次第で動作が変わります。
//
// - テストが適当なので、未だバグがあるかもしれません。
//
//
// 変更履歴:
// 2009-01-21 K27 さくせい。ViVi 2.06.35で動作確認。
//
//=============================================================================
//*****************************************************************************
// Setting
//*****************************************************************************
var c_strTempFileName = //globalSettings.getTextValue("viviScriptDir") +
"/chkmod_temp.txt";
//*****************************************************************************
//=============================================================================
//-------------------------------------
// Bool
//-------------------------------------
var True = 1;
var False = 0;
//-------------------------------------
// Kind Of...
//-------------------------------------
var Kind_String = 3;
var Kind_Document = 9;
//-------------------------------------
// File
//-------------------------------------
var File_modeRead = 0x0000;
var File_modeWrite = 0x0001;
var File_modeCreate = 0x1000;
//=============================================================================
function CopyFile(p_strFrom, p_strTo)
{
if (!p_strFrom.isKindOf(Kind_String) ||
!p_strTo.isKindOf(Kind_String)) {
return False;
} else if (p_strFrom == "" ||
p_strTo == "") {
return False;
}
// Open file
var fpFrom = stdioFile();
if (!fpFrom.open(p_strFrom, File_modeRead)) {
cout << "File open error. file_name="
<< p_strFrom
<< "\n";
return False;
}
var fpTo = stdioFile();
if (!fpTo.open(p_strTo, File_modeCreate | File_modeWrite)) {
cout << "File open error. file_name="
<< p_strTo
<< "\n";
fpFrom.close();
return False;
}
// Copy data
while (!fpFrom.isEof()) {
fpTo.writeString(fpFrom.readString());
}
// Close file
fpFrom.close();
fpTo.close();
return True;
}
function CheckChanged(p_Doc)
{
var strTempFileName = c_strTempFileName;
if (!p_Doc.isKindOf(Kind_Document)) {
return False;
}
// Copy file to temporary
if (!CopyFile(p_Doc.getPathName(), strTempFileName)) {
return False;
}
// ex command : diff
var strViCmd = ":diff \"" + strTempFileName + "\"\n";
p_Doc.getView().viCommand(strViCmd);
return True;
}
function main()
{
CheckChanged(thisDocument);
}